version 1.1.2.3, 2007/10/06 00:38:22
|
version 1.1.2.4, 2007/10/22 22:17:30
|
|
|
// | // |
//============================================================================== | //============================================================================== |
| |
static void (*_saveHandler)(const Buffer& buffer); |
static void (*_saveCallback)(const Buffer& buffer, void* data); |
static void (*_loadHandler)(Buffer& buffer); |
static void* _saveData; |
|
static void (*_loadCallback)(Buffer& buffer, void* data); |
|
static void* _loadData; |
| |
MemoryResidentRepository::MemoryResidentRepository( | MemoryResidentRepository::MemoryResidentRepository( |
const String& repositoryRoot, | const String& repositoryRoot, |
|
|
return PEG_NOT_FOUND; | return PEG_NOT_FOUND; |
} | } |
| |
void MemoryResidentRepository::setSaveHandler( |
void MemoryResidentRepository::installSaveCallback( |
void (*handler)(const Buffer& buffer)) |
void (*handler)(const Buffer& buffer, void* data), |
|
void * data) |
{ | { |
_saveHandler = handler; |
_saveCallback = handler; |
|
_saveData = data; |
} | } |
| |
void MemoryResidentRepository::setLoadHandler( |
void MemoryResidentRepository::installLoadCallback( |
void (*handler)(Buffer& buffer)) |
void (*handler)(Buffer& buffer, void* data), |
|
void * data) |
{ | { |
_loadHandler = handler; |
_loadCallback = handler; |
|
_loadData = data; |
} | } |
| |
void MemoryResidentRepository::_processSaveHandler() | void MemoryResidentRepository::_processSaveHandler() |
{ | { |
if (!_saveHandler) |
if (!_saveCallback) |
return; | return; |
| |
Buffer out; | Buffer out; |
|
|
SerializeInstance(out, _rep[i].second); | SerializeInstance(out, _rep[i].second); |
} | } |
| |
(*_saveHandler)(out); |
(*_saveCallback)(out, _saveData); |
} | } |
| |
void MemoryResidentRepository::_processLoadHandler() | void MemoryResidentRepository::_processLoadHandler() |
{ | { |
if (!_loadHandler) |
if (!_loadCallback) |
return; | return; |
| |
Buffer in; | Buffer in; |
(*_loadHandler)(in); |
(*_loadCallback)(in, _loadData); |
size_t pos = 0; | size_t pos = 0; |
| |
while (pos != in.size()) | while (pos != in.size()) |
|
|
CIMNamespaceName nameSpace; | CIMNamespaceName nameSpace; |
| |
if (DeserializeNameSpace(in, pos, nameSpace) != 0) | if (DeserializeNameSpace(in, pos, nameSpace) != 0) |
{ |
|
printf("***** DeserializeNameSpace() failed\n"); |
|
return; | return; |
} |
|
| |
CIMInstance cimInstance; | CIMInstance cimInstance; |
| |
if (DeserializeInstance(in, pos, cimInstance) != 0) | if (DeserializeInstance(in, pos, cimInstance) != 0) |
{ |
|
printf("***** DeserializeInstance() failed\n"); |
|
return; | return; |
} |
|
| |
printf("===== MemoryResidentRepository: loaded instance\n"); |
|
_rep.append(NamespaceInstancePair(nameSpace, cimInstance)); | _rep.append(NamespaceInstancePair(nameSpace, cimInstance)); |
} | } |
} | } |