summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/BasicStream.cpp
diff options
context:
space:
mode:
authorMark Spruiell <mes@zeroc.com>2012-12-26 15:16:24 -0800
committerMark Spruiell <mes@zeroc.com>2012-12-26 15:16:24 -0800
commit899c375da6787c33073997eb3722342a0cc971f3 (patch)
tree9f369f06baa9634c88f6c646e9f399ab44d49657 /cpp/src/Ice/BasicStream.cpp
parentOS X installer updates (diff)
downloadice-899c375da6787c33073997eb3722342a0cc971f3.tar.bz2
ice-899c375da6787c33073997eb3722342a0cc971f3.tar.xz
ice-899c375da6787c33073997eb3722342a0cc971f3.zip
compact ID support for scripting languages
Diffstat (limited to 'cpp/src/Ice/BasicStream.cpp')
-rw-r--r--cpp/src/Ice/BasicStream.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/cpp/src/Ice/BasicStream.cpp b/cpp/src/Ice/BasicStream.cpp
index 378d2490ddb..4d007aa665f 100644
--- a/cpp/src/Ice/BasicStream.cpp
+++ b/cpp/src/Ice/BasicStream.cpp
@@ -2780,7 +2780,8 @@ IceInternal::BasicStream::EncapsDecoder::readInstance()
//
startSlice();
const string mostDerivedId = _typeId;
- ObjectFactoryManagerPtr servantFactoryManager = _stream->instance()->servantFactoryManager();
+ const ObjectFactoryManagerPtr servantFactoryManager = _stream->instance()->servantFactoryManager();
+ const CompactIdResolverPtr compactIdResolver = _stream->instance()->initializationData().compactIdResolver;
while(true)
{
//
@@ -2794,7 +2795,18 @@ IceInternal::BasicStream::EncapsDecoder::readInstance()
if(_compactId >= 0)
{
- _typeId = IceInternal::factoryTable->getTypeId(_compactId);
+ //
+ // Translate a compact (numeric) type ID into a string type ID.
+ //
+ _typeId.clear();
+ if(compactIdResolver)
+ {
+ _typeId = compactIdResolver->resolve(_compactId);
+ }
+ if(_typeId.empty())
+ {
+ _typeId = IceInternal::factoryTable->getTypeId(_compactId);
+ }
}
if(!_typeId.empty())