DataStorageLibrary.h [plain text]
#ifndef __DATA_STORAGE_LIBRARY_H__
#define __DATA_STORAGE_LIBRARY_H__
#include <Security/Security.h>
#include "AttachedInstance.h"
#include "Mutex.h"
#include <map>
typedef std::map<CSSM_MODULE_HANDLE, AttachedInstance*> InstanceMap;
class DataStorageLibrary
{
protected:
CSSM_SPI_ModuleEventHandler mEventHandler;
void* mCallbackContext;
InstanceMap mInstanceMap;
DynamicMutex mInstanceMapMutex;
public:
static DataStorageLibrary* gDL;
static pthread_mutex_t *gGlobalLock;
DataStorageLibrary (pthread_mutex_t *globalLock, CSSM_SPI_ModuleEventHandler eventHandler, void* CssmNotifyCallbackCtx);
virtual ~DataStorageLibrary ();
void Attach (const CSSM_GUID *ModuleGuid,
const CSSM_VERSION *Version,
uint32 SubserviceID,
CSSM_SERVICE_TYPE SubserviceType,
CSSM_ATTACH_FLAGS AttachFlags,
CSSM_MODULE_HANDLE ModuleHandle,
CSSM_KEY_HIERARCHY KeyHierarchy,
const CSSM_GUID *CssmGuid,
const CSSM_GUID *ModuleManagerGuid,
const CSSM_GUID *CallerGuid,
const CSSM_UPCALLS *Upcalls,
CSSM_MODULE_FUNCS_PTR *FuncTbl);
void Detach (CSSM_MODULE_HANDLE moduleHandle);
virtual AttachedInstance* MakeAttachedInstance () = 0;
AttachedInstance* HandleToInstance (CSSM_MODULE_HANDLE handle);
};
#endif