diff options
author | Michi Henning <michi@zeroc.com> | 2003-05-08 05:46:29 +0000 |
---|---|---|
committer | Michi Henning <michi@zeroc.com> | 2003-05-08 05:46:29 +0000 |
commit | 225855fb6b992a4207f9107d988036aa1ee0d217 (patch) | |
tree | efa68b5ed0afbc0753e7b8d98786674262caa872 /cpp/src/Ice/Object.cpp | |
parent | more install projects (diff) | |
download | ice-225855fb6b992a4207f9107d988036aa1ee0d217.tar.bz2 ice-225855fb6b992a4207f9107d988036aa1ee0d217.tar.xz ice-225855fb6b992a4207f9107d988036aa1ee0d217.zip |
Merged HEAD and slicing trees.
Diffstat (limited to 'cpp/src/Ice/Object.cpp')
-rw-r--r-- | cpp/src/Ice/Object.cpp | 39 |
1 files changed, 30 insertions, 9 deletions
diff --git a/cpp/src/Ice/Object.cpp b/cpp/src/Ice/Object.cpp index a57551c1673..68124dea864 100644 --- a/cpp/src/Ice/Object.cpp +++ b/cpp/src/Ice/Object.cpp @@ -62,31 +62,31 @@ const string Ice::Object::__ids[] = }; bool -Ice::Object::ice_isA(const string& s, const Current&) +Ice::Object::ice_isA(const string& s, const Current&) const { return s == __ids[0]; } void -Ice::Object::ice_ping(const Current&) +Ice::Object::ice_ping(const Current&) const { // Nothing to do. } vector<string> -Ice::Object::ice_ids(const Current&) +Ice::Object::ice_ids(const Current&) const { return vector<string>(&__ids[0], &__ids[1]); } const string& -Ice::Object::ice_id(const Current&) +Ice::Object::ice_id(const Current&) const { return __ids[0]; } vector<string> -Ice::Object::ice_facets(const Current&) +Ice::Object::ice_facets(const Current&) const { IceUtil::Mutex::Lock sync(_activeFacetMapMutex); @@ -205,19 +205,30 @@ Ice::Object::__write(::IceInternal::BasicStream* __os) const { IceUtil::Mutex::Lock sync(_activeFacetMapMutex); + __os->writeTypeId(ice_staticId()); + __os->startWriteSlice(); __os->writeSize(Int(_activeFacetMap.size())); for(map<string, ObjectPtr>::const_iterator p = _activeFacetMap.begin(); p != _activeFacetMap.end(); ++p) { __os->write(p->first); __os->write(p->second); } + __os->endWriteSlice(); } void -Ice::Object::__read(::IceInternal::BasicStream* __is) +Ice::Object::__read(::IceInternal::BasicStream* __is, bool __rid) { IceUtil::Mutex::Lock sync(_activeFacetMapMutex); + if(__rid) + { + string myId; + __is->readTypeId(myId); + } + + __is->startReadSlice(); + Int sz; __is->readSize(sz); @@ -226,11 +237,14 @@ Ice::Object::__read(::IceInternal::BasicStream* __is) while(sz-- > 0) { - pair<const string, ObjectPtr> v; - __is->read(const_cast<string&>(v.first)); - __is->read("", 0, v.second); + string s; + __is->read(s); + pair<const string, ObjectPtr> v(s, ObjectPtr()); _activeFacetMapHint = _activeFacetMap.insert(_activeFacetMapHint, v); + __is->read(::__patch__ObjectPtr, &_activeFacetMapHint->second); } + + __is->endReadSlice(); } void @@ -411,6 +425,13 @@ Ice::Object::ice_findFacetPath(const vector<string>& path, int start) } } +void +Ice::__patch__ObjectPtr(void* __addr, ObjectPtr& v) +{ + ObjectPtr* p = static_cast<ObjectPtr*>(__addr); + *p = v; +} + DispatchStatus Ice::Blobject::__dispatch(Incoming& in, const Current& current) { |