#ifndef __CServerPlugin_h__
#define __CServerPlugin_h__ 1
#include <CoreFoundation/CFPlugIn.h>
#include <CoreFoundation/CFString.h>
#include "ServerModule.h"
#include "PrivateTypes.h"
static const uInt32 kBuffPad = 16;
static const uInt32 kNumStaticPlugins = 4;
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__