CLDAPReplicaInfo.h [plain text]
#ifndef _CLDAPREPLICAINFO_H
#define _CLDAPREPLICAINFO_H
#include <DirectoryServiceCore/DSSemaphore.h>
#include <SystemConfiguration/SystemConfiguration.h>
#include <ldap.h>
#include "CObject.h"
using namespace std;
class CLDAPReplicaInfo : public CObject<CLDAPReplicaInfo>
{
public:
struct addrinfo *fAddrInfo; bool fbSupportsWrites; char *fIPAddress; int fPort; int32_t fSupportedSecurity; int32_t fReachable;
public:
CLDAPReplicaInfo ( const char *inReplicaIP, int inPort, bool inSSL, bool inSupportsWrites );
CLDAPReplicaInfo ( const char *inLDAPI );
LDAP *CreateLDAP ( void );
bool SupportsSASLMethod ( CFStringRef inSASLMethod );
CFArrayRef CopySASLMethods ( void );
CFArrayRef CopyNamingContexts ( void );
char *CopyServicePrincipal ( void );
bool ShouldAttemptCheck ( void );
void ConnectionFailed ( void );
LDAP *VerifiedServerConnection ( int inTimeoutSeconds, bool inForceCheck, void *inCallback, void *inParam );
static void ReachabilityCallback ( SCNetworkReachabilityRef inTarget, SCNetworkConnectionFlags inFlags, void *inInfo );
private:
char *fLDAPURI;
int32_t fFlags;
int32_t fVerified;
int32_t fUnchecked;
int32_t fIsSSL;
SCNetworkReachabilityRef fReachabilityRef; DSSemaphore fMutex;
CFMutableArrayRef fSASLMethods; CFMutableArrayRef fNamingContexts; char *fServerFQDN; char *fServicePrincipal;
private:
virtual ~CLDAPReplicaInfo ( void );
LDAP *CreateLDAPInternal ( void );
void ReachabilityNotification ( SCNetworkConnectionFlags inFlags );
};
#endif