windows-nt/Source/XPSP1/NT/net/ias/providers/ntuser/ldap/pollseg.h
2020-09-26 16:20:57 +08:00

75 lines
2 KiB
C++

///////////////////////////////////////////////////////////////////////////////
//
// FILE
//
// pollseg.h
//
// SYNOPSIS
//
// Declares the class PollSegment.
//
// MODIFICATION HISTORY
//
// 06/10/1998 Original version.
//
///////////////////////////////////////////////////////////////////////////////
#ifndef _POLLSEG_H_
#define _POLLSEG_H_
#if _MSC_VER >= 1000
#pragma once
#endif
#include <nocopy.h>
class LDAPConnection;
class LDAPServer;
///////////////////////////////////////////////////////////////////////////////
//
// CLASS
//
// PollSegment
//
// DESCRIPTION
//
// Represents a segment of the Active Directory namespace that can be
// periodically polled for changes.
//
///////////////////////////////////////////////////////////////////////////////
class PollSegment : NonCopyable
{
public:
PollSegment() throw ();
~PollSegment() throw ();
// Defines a segment of the Active Directory namespace to be polled.
DWORD initialize(PCWSTR pszHostName,
PCWSTR pszBaseDN,
ULONG ulScope) throw ();
// Frees any resources and prepares the object for reuse. It is not
// mandatory to call this method since it will also be invoked from the
// destructor.
void finalize() throw ();
// Returns TRUE if any objects in the segment have changed since the last
// call to initialize() or hasChanged(). There are no error conditions; when
// in doubt, the method always returns TRUE.
BOOL hasChanged() throw ();
protected:
// Searches a given server for changes.
ULONG conductPoll(LDAPConnection* cxn) throw ();
// Reads the highestCommittedUsn attribute of a server.
static DWORDLONG readHighestCommittedUsn(LDAPConnection* cxn) throw ();
LDAPServer* server; // Server being polled.
PWSTR base; // DN of the root of the segment.
ULONG scope; // Scope of the segment (from winldap.h).
DWORDLONG highestUsnSeen; // Highest USN seen from lastServer.
};
#endif // _POLLSEG_H_