2008-03-28 07:05:10 -04:00
|
|
|
// $OpenLDAP$
|
2000-10-03 14:50:44 -04:00
|
|
|
/*
|
2011-03-28 21:08:19 -04:00
|
|
|
* Copyright 2000-2011 The OpenLDAP Foundation, All Rights Reserved.
|
2000-10-03 14:50:44 -04:00
|
|
|
* COPYING RESTRICTIONS APPLY, see COPYRIGHT file
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#include "LDAPException.h"
|
|
|
|
|
#include "LDAPSearchResult.h"
|
|
|
|
|
#include "LDAPResult.h"
|
|
|
|
|
|
|
|
|
|
#include "LDAPSearchResults.h"
|
|
|
|
|
|
|
|
|
|
LDAPSearchResults::LDAPSearchResults(){
|
|
|
|
|
entryPos = entryList.begin();
|
|
|
|
|
refPos = refList.begin();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
LDAPResult* LDAPSearchResults::readMessageQueue(LDAPMessageQueue* msg){
|
|
|
|
|
if(msg != 0){
|
|
|
|
|
LDAPMsg* res=0;
|
|
|
|
|
for(;;){
|
|
|
|
|
try{
|
|
|
|
|
res = msg->getNext();
|
|
|
|
|
}catch (LDAPException e){
|
|
|
|
|
throw;
|
|
|
|
|
}
|
|
|
|
|
switch(res->getMessageType()){
|
|
|
|
|
case LDAPMsg::SEARCH_ENTRY :
|
|
|
|
|
entryList.addEntry(*((LDAPSearchResult*)res)->getEntry());
|
|
|
|
|
break;
|
|
|
|
|
case LDAPMsg::SEARCH_REFERENCE :
|
|
|
|
|
refList.addReference(*((LDAPSearchReference*)res));
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
entryPos=entryList.begin();
|
|
|
|
|
refPos=refList.begin();
|
|
|
|
|
return ((LDAPResult*) res);
|
|
|
|
|
}
|
|
|
|
|
delete res;
|
|
|
|
|
res=0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
LDAPEntry* LDAPSearchResults::getNext(){
|
|
|
|
|
if( entryPos != entryList.end() ){
|
|
|
|
|
LDAPEntry* ret= new LDAPEntry(*entryPos);
|
|
|
|
|
entryPos++;
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
if( refPos != refList.end() ){
|
|
|
|
|
LDAPUrlList urls= refPos->getUrls();
|
|
|
|
|
refPos++;
|
|
|
|
|
throw(LDAPReferralException(urls));
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|