#ifndef __CServerPlugin_h__
#define __CServerPlugin_h__ 1
#include <CoreFoundation/CFPlugIn.h>
#include <CoreFoundation/CFString.h>
#include "ServerModule.h"
#include "PrivateTypes.h"
enum eDSPluginLevel {
kStaticPlugin = 1,
kAppleLoadedPlugin
};
static const UInt32 kBuffPad = 16;
static const UInt32 kNumStaticPlugins = 7;
class CServerPlugin {
public:
static SInt32 ProcessURL ( CFURLRef urlPlugin );
static SInt32 ProcessStaticPlugin ( const char* inPluginName,
const char* inPluginVersion );
public:
CServerPlugin ( void );
CServerPlugin ( FourCharCode inSig, const char *inName );
CServerPlugin ( CFPlugInRef inThis, CFUUIDRef inFactoryID, FourCharCode inSig, UInt32 inVers, const char *inName );
virtual ~CServerPlugin ( void );
virtual SInt32 Validate ( const char *inVersionStr, const UInt32 inSignature );
virtual SInt32 Initialize ( void );
virtual SInt32 Configure ( void );
virtual SInt32 SetPluginState ( const UInt32 inState );
virtual SInt32 PeriodicTask ( void );
virtual SInt32 ProcessRequest ( void *inData );
virtual SInt32 Shutdown ( void );
char* GetPluginName ( void );
FourCharCode GetSignature ( void );
static SInt32 _RegisterNode ( const UInt32, tDataList *, eDirNodeType );
static SInt32 InternalRegisterNode ( const UInt32 inToken, tDataList *inNodeList, eDirNodeType inNodeType, bool isProxyRegistration = false );
static SInt32 _UnregisterNode ( const UInt32, tDataList * );
protected:
FourCharCode fPlugInSignature;
char *fPlugInName;
private:
DSServerPlugin::ModuleFtbl *mInstance;
CFPlugInRef fPlugInRef;
UInt32 fPlugInVers;
};
#endif // __CServerPlugin_h__