#ifndef __ServerModule_h__
#define __ServerModule_h__ 1
#include <CoreFoundation/CFPlugIn.h>
#if COREFOUNDATION_CFPLUGINCOM_SEPARATE
#include <CoreFoundation/CFPlugInCOM.h>
#endif
#include <DirectoryServiceCore/PluginData.h>
#ifdef __cplusplus
extern "C" {
namespace DSServerPlugin {
#endif
#define kModuleTypeUUID (CFUUIDGetConstantUUIDWithBytes (NULL, \
0x69, 0x7B, 0x5D, 0x6C, 0x87, 0xA1, 0x12, 0x26, \
0x89, 0xCA, 0x00, 0x05, 0x02, 0xC1, 0xC7, 0x36 ))
#define kModuleInterfaceUUID (CFUUIDGetConstantUUIDWithBytes (NULL, \
0x1A, 0xE9, 0x66, 0x90, \
0x62, 0xCF, 0x12, 0x26, 0xB4, 0x5C, \
0x00, 0x05, 0x02, 0x07, 0xF7, 0xFD))
#define kPluginVersionStr CFSTR( "CFBundleVersion" )
#define kPluginShortVersionStr CFSTR( "CFBundleShortVersionString" )
#define kPluginConfigAvailStr CFSTR( "CFBundleConfigAvail" )
#define kPluginConfigFileStr CFSTR( "CFBundleConfigFile" )
#define kPluginNameStr CFSTR( "CFPluginNameString" )
#define kPluginLazyNodesToRegStr CFSTR( "DSNodesToRegister" )
#define kPluginOKToLoadLazilyStr CFSTR( "DSOKToLoadLazily" )
#define kPluginNodeToRegisterType CFSTR( "DSNodeToRegisterType" )
#define kPluginNodeToRegisterPath CFSTR( "DSNodeToRegisterPath" )
typedef struct tagSvrLibFtbl
{
SInt32 (*registerNode) ( const UInt32 inToken, tDataList *inNode, eDirNodeType inNodeType );
SInt32 (*unregisterNode) ( const UInt32 inToken, tDataList *inNode );
void (*debugLog) ( const char *inFormat, va_list inArgs );
void (*debugLogWithType) ( const UInt32 inSignature, const UInt32 inLogType, const char *inFormat, va_list inArgs );
FourCharCode fSignature;
} SvrLibFtbl;
typedef struct tagModuleInterfaceFtbl
{
IUNKNOWN_C_GUTS;
SInt32 (*validate) ( void *thisp, const char *inVersionStr, const UInt32 inSignature );
SInt32 (*initialize) ( void *thisp );
SInt32 (*configure) ( void *thisp );
SInt32 (*processRequest) ( void *thisp, void *inData );
SInt32 (*setPluginState) ( void *thisp, const UInt32 inState );
SInt32 (*periodicTask) ( void *thisp );
SInt32 (*shutdown) ( void *thisp );
void (*linkLibFtbl) ( void *thisp, SvrLibFtbl *inLinkBack );
} ModuleFtbl;
typedef struct tagModuleSessionInterfaceFtbl
{
IUNKNOWN_C_GUTS;
SInt32 (*receiveFromClient) ( void *thisp, const UInt8 *inData, UInt32 inLength );
} ModuleSessionFtbl;
#ifdef __cplusplus
} } #endif
#endif // __ServerModule_h__