summaryrefslogtreecommitdiff
path: root/cpp/src/Freeze/ObjectStore.cpp
diff options
context:
space:
mode:
authorBernard Normier <bernard@zeroc.com>2012-08-21 09:52:04 -0400
committerBernard Normier <bernard@zeroc.com>2012-08-21 09:52:04 -0400
commit45fa1eae7c9a482917d3c9613cebaa75e6035ca9 (patch)
treec9921e0f8ee7074bef9ec06856f67ece29bb5ffa /cpp/src/Freeze/ObjectStore.cpp
parentFixed ICE-4602 (diff)
downloadice-45fa1eae7c9a482917d3c9613cebaa75e6035ca9.tar.bz2
ice-45fa1eae7c9a482917d3c9613cebaa75e6035ca9.tar.xz
ice-45fa1eae7c9a482917d3c9613cebaa75e6035ca9.zip
Fixed ICE-2097: with Ice encoding > 1.0, Freeze evictors no longer maintain
or store statistics.
Diffstat (limited to 'cpp/src/Freeze/ObjectStore.cpp')
-rw-r--r--cpp/src/Freeze/ObjectStore.cpp21
1 files changed, 19 insertions, 2 deletions
diff --git a/cpp/src/Freeze/ObjectStore.cpp b/cpp/src/Freeze/ObjectStore.cpp
index 744381ed984..899840b62a8 100644
--- a/cpp/src/Freeze/ObjectStore.cpp
+++ b/cpp/src/Freeze/ObjectStore.cpp
@@ -353,7 +353,15 @@ Freeze::ObjectStoreBase::marshal(const ObjectRecord& v,
IceInternal::InstancePtr instance = IceInternal::getInstance(communicator);
IceInternal::BasicStream stream(instance.get(), encoding, true);
stream.startWriteEncaps();
- v.__write(&stream);
+ if(encoding == Ice::Encoding_1_0)
+ {
+ v.__write(&stream);
+ }
+ else
+ {
+ stream.write(v.servant);
+ }
+
stream.writePendingObjects();
stream.endWriteEncaps();
vector<Byte>(stream.b.begin(), stream.b.end()).swap(bytes);
@@ -372,7 +380,16 @@ Freeze::ObjectStoreBase::unmarshal(ObjectRecord& v,
memcpy(&stream.b[0], &bytes[0], bytes.size());
stream.i = stream.b.begin();
stream.startReadEncaps();
- v.__read(&stream);
+
+ if(encoding == Ice::Encoding_1_0)
+ {
+ v.__read(&stream);
+ }
+ else
+ {
+ stream.read(v.servant);
+ }
+
stream.readPendingObjects();
stream.endReadEncaps();
}