19 #define DATASVC_DATASVC_CPP
57 #define CAST_REGENTRY(x,y) dynamic_cast<x>(y)
61 #define ON_DEBUG if (UNLIKELY(outputLevel() <= MSG::DEBUG))
62 #define ON_VERBOSE if (UNLIKELY(outputLevel() <= MSG::VERBOSE))
64 #define DEBMSG ON_DEBUG debug()
65 #define VERMSG ON_VERBOSE verbose()
75 if ( 0 != node_entry ) {
78 parent->
remove(node_entry);
81 return INVALID_PARENT;
83 return INVALID_OBJECT;
100 return INVALID_PARENT;
102 return INVALID_OBJECT;
138 return INVALID_OBJECT;
168 if ( 0 != pRootObj ) {
194 if ( 0 != pRootAddr ) {
205 if ( 0 != pDataLoader ) pDataLoader->
addRef();
207 if ( 0 != pDataLoader ) {
220 return INVALID_OBJECT;
228 refpParent = node_entry->
parent();
231 return INVALID_OBJECT;
242 return INVALID_OBJECT;
253 leaves = node_entry->
leaves();
256 return INVALID_OBJECT;
264 if ( fullPath.length() > 0 ) {
271 return INVALID_OBJ_PATH;
287 if ( objPath.length() > 0 ) {
288 if ( 0 == parentObj ) {
293 if ( sep != std::string::npos ) {
296 std::string o_path (objPath, sep, objPath.length());
300 return INVALID_PARENT;
309 if ( 0 != par_entry ) {
311 if ( sep > 0 && sep != std::string::npos ) {
313 std::string o_path (objPath, sep, objPath.length());
325 p_entry = par_entry->
findLeaf(p_path);
327 if ( 0 != p_entry ) {
330 return INVALID_PARENT;
336 return DOUBL_OBJ_PATH;
338 return INVALID_PARENT;
340 return INVALID_OBJ_PATH;
347 if ( fullPath.length() > 0 ) {
354 return INVALID_OBJ_PATH;
368 if ( objPath.length() > 0 ) {
369 if ( 0 == pParent ) {
374 if ( sep != std::string::npos ) {
377 std::string o_path (objPath, sep, objPath.length());
381 return INVALID_PARENT;
390 if ( 0 != node_entry ) {
392 if ( 0 != leaf_entry ) {
394 if ( sep > 0 && sep != std::string::npos ) {
404 return INVALID_PARENT;
406 return INVALID_OBJ_PATH;
456 if ( 0 == parentObj ) {
457 if ( objPath.length() > 0 ) {
460 if ( sep != std::string::npos ) {
462 std::string o_path (objPath, sep, objPath.length());
470 return INVALID_OBJ_PATH;
473 if ( 0 != node_entry ) {
476 if ( sep != std::string::npos ) {
478 std::string o_path (objPath, sep, objPath.length());
488 par_entry = node_entry->
findLeaf(p_path);
490 else if ( 0 != par_entry && par_entry->object() == 0 ) {
498 par_entry = node_entry->
findLeaf(p_path);
501 node_entry = par_entry;
502 if ( 0 != node_entry ) {
512 status = node_entry->
add( objPath, pObject );
518 error() <<
"registerObject: trying to register null DataObject" <<
endmsg;
529 status = DOUBL_OBJ_PATH;
535 return INVALID_PARENT;
549 if ( 0 != pParent ) {
550 if ( 0 != pObject ) {
556 return INVALID_PARENT;
558 return DIR_NOT_EMPTY;
589 if ( 0 != entry->
object() ) {
597 return INVALID_PARENT;
599 return DIR_NOT_EMPTY;
601 return INVALID_OBJECT;
616 if ( 0 != entry->
object() ) {
622 return DIR_NOT_EMPTY;
624 return INVALID_OBJECT;
629 return INVALID_PARENT;
645 if ( pReg && path.length() == 0 ) {
687 if ( 0 == pLoader ) {
689 else return NO_DATA_LOADER;
691 if ( 0 == pRegistry ) {
693 else return INVALID_OBJ_ADDR;
712 if ( 0 == pAddress ) {
713 return INVALID_OBJ_ADDR;
716 status = pLoader->
createObj(pAddress, pObject);
770 if ( 0 == parentObj ) {
771 if ( path.length() == 0 || path ==
m_rootName ) {
777 else if ( sep != std::string::npos ) {
788 return INVALID_OBJ_PATH;
790 if ( sep != std::string::npos ) {
793 if (!parentObj->
object()) {
804 root_entry = parentObj->
findLeaf(p_path);
815 if ( root_entry->
isSoft() ) {
822 else if ( path.length() == 0 ) {
826 if (!parentObj->
object()) {
837 pEntry = (0==path.length()) ? parentObj : parentObj->
findLeaf(path);
842 status = INVALID_OBJ_PATH;
844 else if ( 0 == pEntry->
object() ) {
871 pObject = result->
object();
924 if ( 0 != root_entry ) {
925 if ( path.length() > 0 ) {
926 pReg = root_entry->
find(path);
929 return INVALID_OBJ_PATH;
933 return (0 == pObject) ? OBJ_NOT_LOADED : IDataProviderSvc_NO_ERROR;
941 if ( path.length() == 0 || path ==
m_rootName ) {
943 return (0 == pObject) ? OBJ_NOT_LOADED : IDataProviderSvc_NO_ERROR;
960 status =
findObject (parent, objectPath, pObject);
968 return findObject(parentPath, itemToPath(item), pObject);
975 return findObject(parentObj, itemToPath(item), pObject);
998 if ( 0 == pRegistry ) {
999 return INVALID_OBJ_ADDR;
1002 if ( 0 == toUpdate ) {
1011 if ( 0 == toUpdate ) {
1012 return INVALID_OBJECT;
1015 if ( 0 == pRegistry ) {
1016 return INVALID_OBJECT;
1019 if ( 0 == pAddress ) {
1020 return INVALID_OBJ_ADDR;
1023 if ( 0 == pLoader ) {
1024 return NO_DATA_LOADER;
1035 status = pLoader->
updateObj(pAddress, toUpdate);
1048 pRegistry->
name() +
": " +
1089 if ( 0 != from_entry ) {
1092 if ( 0 == to_entry ) {
1093 return INVALID_OBJECT;
1097 if ( sep > 0 && sep != std::string::npos ) {
1102 std::string toPath(objPath, sep, objPath.length());
1110 IDataProviderSvc_NO_ERROR : DOUBL_OBJ_PATH;
1116 return INVALID_PARENT;
1118 return INVALID_ROOT;
1124 if ( fullPath.length() > 0 ) {
1129 std::string objPath(fullPath, sep, fullPath.length());
1133 return INVALID_OBJ_PATH;
1154 if ( 0 != from_entry ) {
1158 return INVALID_PARENT;
1167 if ( 0 != from_entry ) {
1169 if ( sep > 0 && sep != std::string::npos ) {
1174 std::string toPath(objPath, sep, objPath.length());
1183 return INVALID_OBJ_PATH;
1188 return INVALID_PARENT;
1190 return INVALID_ROOT;
1195 if ( fullPath.length() > 0 ) {
1200 std::string objPath(fullPath, sep, fullPath.length());
1204 return INVALID_OBJ_PATH;
1225 return INVALID_ROOT;
1266 if ( 0 != pObject && depth++ < load_depth ) {
1272 if ( status.
isSuccess() && depth < load_depth ) {
1286 int load_depth = (*i).depth();
1287 if ( sc.
isSuccess() && load_depth > 1 ) {
1303 error() <<
"Failed to access incident service." <<
endmsg;
1322 error() <<
"Unable to reinitialize base class" <<
endmsg;
1328 error() <<
"Failed to access incident service." <<
endmsg;
1373 m_rootName(
"/Event"), m_root(0)