osaf/services/saf/immsv/immnd/ImmModel.cc | 16 ++++++++++++++++ 1 files changed, 16 insertions(+), 0 deletions(-)
When the implementer transiently detaches, cached values of cached RTAs are still available for Object Search API and Object Access API. The timeout is hard-coded to 6s (DEFAULT_TIMEOUT_SEC). diff --git a/osaf/services/saf/immsv/immnd/ImmModel.cc b/osaf/services/saf/immsv/immnd/ImmModel.cc --- a/osaf/services/saf/immsv/immnd/ImmModel.cc +++ b/osaf/services/saf/immsv/immnd/ImmModel.cc @@ -9821,6 +9821,7 @@ ImmModel::accessorGet(const ImmsvOmSearc ObjectInfo* obj = NULL; bool implNotSet = true; ImmAttrValueMap::iterator j; + ImplementerEvtMap::iterator iem; int matchedAttributes=0; int soughtAttributes=0; SaImmSearchOptionsT notAllowedOptions = 0LL; @@ -9970,12 +9971,19 @@ ImmModel::accessorGet(const ImmsvOmSearc checkAttribute = true; } else { //There is no implementer + iem = sImplDetachTime.find(obj->mImplementer); if((k->second->mFlags & SA_IMM_ATTR_PERSISTENT) && !(j->second->empty())) { op.addAttrValue(*j->second); checkAttribute = true; //Persistent rt attributes still accessible //If they have been given any value + } else if ((k->second->mFlags & SA_IMM_ATTR_CACHED) && + (iem != sImplDetachTime.end()) && + !(j->second->empty())) { + //The attribute is cached and the OI is transiently detached + op.addAttrValue(*j->second); + checkAttribute = true; } else { checkAttribute = false; } @@ -10147,6 +10155,7 @@ ImmModel::searchInitialize(ImmsvOmSearch ObjectInfo* obj = NULL; ObjectMap::iterator omi; ObjectSet::iterator osi; + ImplementerEvtMap::iterator iem; bool noDanglingSearch = req->searchOptions & SA_IMM_SEARCH_NO_DANGLING_DEPENDENTS; ObjectInfo* refObj = NULL; ObjectMMap::iterator ommi = sReverseRefsNoDanglingMMap.end(); @@ -10521,6 +10530,7 @@ ImmModel::searchInitialize(ImmsvOmSearch checkAttribute = true; } else { //There is no implementer + iem = sImplDetachTime.find(obj->mImplementer); if(!(j->second->empty()) && (k->second->mFlags & SA_IMM_ATTR_PERSISTENT || @@ -10535,6 +10545,12 @@ ImmModel::searchInitialize(ImmsvOmSearch //is no implementer currently. op.addAttrValue(*j->second); checkAttribute = true; + } else if ((k->second->mFlags & SA_IMM_ATTR_CACHED) && + (iem != sImplDetachTime.end()) && + !(j->second->empty())) { + //The attribute is cached and the OI is transiently detached + op.addAttrValue(*j->second); + checkAttribute = true; } else { checkAttribute = false; } ------------------------------------------------------------------------------ Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server from Actuate! Instantly Supercharge Your Business Reports and Dashboards with Interactivity, Sharing, Native Excel Exports, App Integration & more Get technology previously reserved for billion-dollar corporations, FREE http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel