19 #define DATASVC_DATASVC_CPP
58 #define CAST_REGENTRY(x,y) dynamic_cast<x>(y)
62 #define ON_DEBUG if (UNLIKELY(outputLevel() <= MSG::DEBUG))
63 #define ON_VERBOSE if (UNLIKELY(outputLevel() <= MSG::VERBOSE))
65 #define DEBMSG ON_DEBUG debug()
66 #define VERMSG ON_VERBOSE verbose()
76 if ( 0 != node_entry ) {
79 parent->
remove(node_entry);
82 return INVALID_PARENT;
84 return INVALID_OBJECT;
101 return INVALID_PARENT;
103 return INVALID_OBJECT;
139 return INVALID_OBJECT;
169 if ( 0 != pRootObj ) {
195 if ( 0 != pRootAddr ) {
206 if ( 0 != pDataLoader ) pDataLoader->
addRef();
208 if ( 0 != pDataLoader ) {
221 return INVALID_OBJECT;
229 refpParent = node_entry->
parent();
232 return INVALID_OBJECT;
243 return INVALID_OBJECT;
254 leaves = node_entry->
leaves();
257 return INVALID_OBJECT;
265 if ( fullPath.length() > 0 ) {
272 return INVALID_OBJ_PATH;
288 if ( objPath.length() > 0 ) {
289 if ( 0 == parentObj ) {
294 if ( sep != std::string::npos ) {
297 std::string o_path (objPath, sep, objPath.length());
301 return INVALID_PARENT;
310 if ( 0 != par_entry ) {
312 if ( sep > 0 && sep != std::string::npos ) {
314 std::string o_path (objPath, sep, objPath.length());
326 p_entry = par_entry->
findLeaf(p_path);
328 if ( 0 != p_entry ) {
331 return INVALID_PARENT;
337 return DOUBL_OBJ_PATH;
339 return INVALID_PARENT;
341 return INVALID_OBJ_PATH;
348 if ( fullPath.length() > 0 ) {
355 return INVALID_OBJ_PATH;
369 if ( objPath.length() > 0 ) {
370 if ( 0 == pParent ) {
375 if ( sep != std::string::npos ) {
378 std::string o_path (objPath, sep, objPath.length());
382 return INVALID_PARENT;
391 if ( 0 != node_entry ) {
393 if ( 0 != leaf_entry ) {
395 if ( sep > 0 && sep != std::string::npos ) {
405 return INVALID_PARENT;
407 return INVALID_OBJ_PATH;
457 if ( 0 == parentObj ) {
458 if ( objPath.length() > 0 ) {
461 if ( sep != std::string::npos ) {
463 std::string o_path (objPath, sep, objPath.length());
471 return INVALID_OBJ_PATH;
474 if ( 0 != node_entry ) {
477 if ( sep != std::string::npos ) {
479 std::string o_path (objPath, sep, objPath.length());
489 par_entry = node_entry->
findLeaf(p_path);
491 else if ( 0 != par_entry && par_entry->object() == 0 ) {
499 par_entry = node_entry->
findLeaf(p_path);
502 node_entry = par_entry;
503 if ( 0 != node_entry ) {
513 status = node_entry->
add( objPath, pObject );
519 error() <<
"registerObject: trying to register null DataObject" <<
endmsg;
530 status = DOUBL_OBJ_PATH;
536 return INVALID_PARENT;
550 if ( 0 != pParent ) {
551 if ( 0 != pObject ) {
557 return INVALID_PARENT;
559 return DIR_NOT_EMPTY;
590 if ( 0 != entry->
object() ) {
598 return INVALID_PARENT;
600 return DIR_NOT_EMPTY;
602 return INVALID_OBJECT;
617 if ( 0 != entry->
object() ) {
623 return DIR_NOT_EMPTY;
625 return INVALID_OBJECT;
630 return INVALID_PARENT;
646 if ( pReg && path.length() == 0 ) {
688 if ( 0 == pLoader ) {
690 else return NO_DATA_LOADER;
692 if ( 0 == pRegistry ) {
694 else return INVALID_OBJ_ADDR;
713 if ( 0 == pAddress ) {
714 return INVALID_OBJ_ADDR;
717 status = pLoader->
createObj(pAddress, pObject);
771 if ( 0 == parentObj ) {
772 if ( path.length() == 0 || path ==
m_rootName ) {
778 else if ( sep != std::string::npos ) {
789 return INVALID_OBJ_PATH;
791 if ( sep != std::string::npos ) {
794 if (!parentObj->
object()) {
805 root_entry = parentObj->
findLeaf(p_path);
816 if ( root_entry->
isSoft() ) {
823 else if ( path.length() == 0 ) {
827 if (!parentObj->
object()) {
838 pEntry = (0==path.length()) ? parentObj : parentObj->
findLeaf(path);
843 status = INVALID_OBJ_PATH;
845 else if ( 0 == pEntry->
object() ) {
872 pObject = result->
object();
925 if ( 0 != root_entry ) {
926 if ( path.length() > 0 ) {
927 pReg = root_entry->
find(path);
930 return INVALID_OBJ_PATH;
934 return (0 == pObject) ? OBJ_NOT_LOADED : IDataProviderSvc_NO_ERROR;
942 if ( path.length() == 0 || path ==
m_rootName ) {
944 return (0 == pObject) ? OBJ_NOT_LOADED : IDataProviderSvc_NO_ERROR;
961 status =
findObject (parent, objectPath, pObject);
969 return findObject(parentPath, itemToPath(item), pObject);
976 return findObject(parentObj, itemToPath(item), pObject);
999 if ( 0 == pRegistry ) {
1000 return INVALID_OBJ_ADDR;
1003 if ( 0 == toUpdate ) {
1012 if ( 0 == toUpdate ) {
1013 return INVALID_OBJECT;
1016 if ( 0 == pRegistry ) {
1017 return INVALID_OBJECT;
1020 if ( 0 == pAddress ) {
1021 return INVALID_OBJ_ADDR;
1024 if ( 0 == pLoader ) {
1025 return NO_DATA_LOADER;
1036 status = pLoader->
updateObj(pAddress, toUpdate);
1049 pRegistry->
name() +
": " +
1090 if ( 0 != from_entry ) {
1093 if ( 0 == to_entry ) {
1094 return INVALID_OBJECT;
1098 if ( sep > 0 && sep != std::string::npos ) {
1103 std::string toPath(objPath, sep, objPath.length());
1111 IDataProviderSvc_NO_ERROR : DOUBL_OBJ_PATH;
1117 return INVALID_PARENT;
1119 return INVALID_ROOT;
1125 if ( fullPath.length() > 0 ) {
1130 std::string objPath(fullPath, sep, fullPath.length());
1134 return INVALID_OBJ_PATH;
1155 if ( 0 != from_entry ) {
1159 return INVALID_PARENT;
1168 if ( 0 != from_entry ) {
1170 if ( sep > 0 && sep != std::string::npos ) {
1175 std::string toPath(objPath, sep, objPath.length());
1184 return INVALID_OBJ_PATH;
1189 return INVALID_PARENT;
1191 return INVALID_ROOT;
1196 if ( fullPath.length() > 0 ) {
1201 std::string objPath(fullPath, sep, fullPath.length());
1205 return INVALID_OBJ_PATH;
1226 return INVALID_ROOT;
1267 if ( 0 != pObject && depth++ < load_depth ) {
1273 if ( status.
isSuccess() && depth < load_depth ) {
1287 int load_depth = (*i).depth();
1288 if ( sc.
isSuccess() && load_depth > 1 ) {
1304 error() <<
"Failed to access incident service." <<
endmsg;
1323 error() <<
"Unable to reinitialize base class" <<
endmsg;
1329 error() <<
"Failed to access incident service." <<
endmsg;
1374 m_rootName(
"/Event"), m_root(0)