diff options
author | Mark Spruiell <mes@zeroc.com> | 2012-12-26 15:16:24 -0800 |
---|---|---|
committer | Mark Spruiell <mes@zeroc.com> | 2012-12-26 15:16:24 -0800 |
commit | 899c375da6787c33073997eb3722342a0cc971f3 (patch) | |
tree | 9f369f06baa9634c88f6c646e9f399ab44d49657 /cpp/src/Ice/BasicStream.cpp | |
parent | OS X installer updates (diff) | |
download | ice-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.cpp | 16 |
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()) |