diff options
author | Benoit Foucher <benoit@zeroc.com> | 2012-04-20 17:29:10 +0200 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2012-04-20 17:29:10 +0200 |
commit | 410311ac0dad54bbc0906085134b41e12ed44abb (patch) | |
tree | 678d75e04b90c289628c1ae79100317432bfe1d8 /cpp/src | |
parent | Enabled again objects test (diff) | |
download | ice-410311ac0dad54bbc0906085134b41e12ed44abb.tar.bz2 ice-410311ac0dad54bbc0906085134b41e12ed44abb.tar.xz ice-410311ac0dad54bbc0906085134b41e12ed44abb.zip |
Java port
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/Freeze/SharedDbEnv.cpp | 2 | ||||
-rw-r--r-- | cpp/src/Ice/OpaqueEndpointI.cpp | 46 | ||||
-rw-r--r-- | cpp/src/Ice/OpaqueEndpointI.h | 2 | ||||
-rw-r--r-- | cpp/src/Ice/Reference.cpp | 18 | ||||
-rw-r--r-- | cpp/src/Ice/TcpEndpointI.cpp | 12 | ||||
-rw-r--r-- | cpp/src/Ice/UdpEndpointI.cpp | 12 | ||||
-rw-r--r-- | cpp/src/IceSSL/EndpointI.cpp | 12 | ||||
-rwxr-xr-x | cpp/src/slice2freezej/Main.cpp | 23 | ||||
-rw-r--r-- | cpp/src/slice2java/Gen.cpp | 107 |
9 files changed, 124 insertions, 110 deletions
diff --git a/cpp/src/Freeze/SharedDbEnv.cpp b/cpp/src/Freeze/SharedDbEnv.cpp index 2e6e6290f56..0e5637ebd3a 100644 --- a/cpp/src/Freeze/SharedDbEnv.cpp +++ b/cpp/src/Freeze/SharedDbEnv.cpp @@ -504,7 +504,7 @@ Freeze::SharedDbEnv::SharedDbEnv(const std::string& envName, string encoding = properties->getPropertyWithDefault(propertyPrefix + ".EncodingVersion", encodingVersionToString(Ice::currentEncoding)); _encoding = stringToEncodingVersion(encoding); - checkSupportedEncoding(_encoding); + IceInternal::checkSupportedEncoding(_encoding); // // Normally the file lock is necessary, but for read-only situations (such as when diff --git a/cpp/src/Ice/OpaqueEndpointI.cpp b/cpp/src/Ice/OpaqueEndpointI.cpp index 890e4d400a4..ef1df0672b8 100644 --- a/cpp/src/Ice/OpaqueEndpointI.cpp +++ b/cpp/src/Ice/OpaqueEndpointI.cpp @@ -18,7 +18,15 @@ using namespace std; using namespace Ice; using namespace IceInternal; -IceInternal::OpaqueEndpointI::OpaqueEndpointI(const string& str) : _encoding(Ice::currentEncoding) +namespace +{ +const Ice::ProtocolVersion Protocol_0_0 = { 0, 0 }; +const Ice::EncodingVersion Encoding_0_0 = { 0, 0 }; +} + +IceInternal::OpaqueEndpointI::OpaqueEndpointI(const string& str) : + EndpointI(Protocol_0_0, Encoding_0_0), + _rawEncoding(Ice::currentEncoding) { const string delim = " \t\n\r"; @@ -140,7 +148,7 @@ IceInternal::OpaqueEndpointI::OpaqueEndpointI(const string& str) : _encoding(Ice try { - const_cast<Ice::EncodingVersion&>(_encoding) = Ice::stringToEncodingVersion(argument); + _rawEncoding = Ice::stringToEncodingVersion(argument); } catch(const Ice::VersionParseException& e) { @@ -174,9 +182,11 @@ IceInternal::OpaqueEndpointI::OpaqueEndpointI(const string& str) : _encoding(Ice } } -IceInternal::OpaqueEndpointI::OpaqueEndpointI(Short type, BasicStream* s) : _type(type) +IceInternal::OpaqueEndpointI::OpaqueEndpointI(Short type, BasicStream* s) : + EndpointI(Protocol_0_0, Encoding_0_0), + _type(type) { - _encoding = s->startReadEncaps(); + _rawEncoding = s->startReadEncaps(); Int sz = s->getReadEncapsSize(); s->readBlob(const_cast<vector<Byte>&>(_rawBytes), sz); s->endReadEncaps(); @@ -186,7 +196,7 @@ void IceInternal::OpaqueEndpointI::streamWrite(BasicStream* s) const { s->write(_type); - s->startWriteEncaps(_encoding); + s->startWriteEncaps(_rawEncoding); s->writeBlob(_rawBytes); s->endWriteEncaps(); } @@ -196,7 +206,7 @@ IceInternal::OpaqueEndpointI::toString() const { ostringstream s; string val = Base64::encode(_rawBytes); - s << "opaque -t " << _type << " -e " << _encoding << " -v " << val; + s << "opaque -t " << _type << " -e " << _rawEncoding << " -v " << val; return s.str(); } @@ -207,7 +217,7 @@ class InfoI : public Ice::OpaqueEndpointInfo { public: - InfoI(Ice::Short type, const Ice::EncodingVersion& encoding, const Ice::ByteSeq& rawByes); + InfoI(Ice::Short type, const Ice::EncodingVersion& rawEncoding, const Ice::ByteSeq& rawByes); virtual Ice::Short type() const @@ -236,8 +246,8 @@ private: // // COMPILERFIX: inlining this constructor causes crashes with gcc 4.0.1. // -InfoI::InfoI(Ice::Short type, const Ice::EncodingVersion& encoding, const Ice::ByteSeq& rawBytes) : - Ice::OpaqueEndpointInfo(Ice::Protocol_1_0, encoding, -1, false, rawBytes), +InfoI::InfoI(Ice::Short type, const Ice::EncodingVersion& rawEncoding, const Ice::ByteSeq& rawBytes) : + Ice::OpaqueEndpointInfo(Protocol_0_0, Encoding_0_0, -1, false, rawEncoding, rawBytes), _type(type) { } @@ -247,7 +257,7 @@ InfoI::InfoI(Ice::Short type, const Ice::EncodingVersion& encoding, const Ice::B Ice::EndpointInfoPtr IceInternal::OpaqueEndpointI::getInfo() const { - return new InfoI(_type, _encoding, _rawBytes); + return new InfoI(_type, _rawEncoding, _rawBytes); } Short @@ -358,6 +368,11 @@ IceInternal::OpaqueEndpointI::operator==(const LocalObject& r) const return false; } + if(_rawEncoding != p->_rawEncoding) + { + return false; + } + if(_rawBytes != p->_rawBytes) { return false; @@ -394,6 +409,15 @@ IceInternal::OpaqueEndpointI::operator<(const LocalObject& r) const return false; } + if(_rawEncoding < p->_rawEncoding) + { + return true; + } + else if(p->_rawEncoding < _rawEncoding) + { + return false; + } + if(_rawBytes < p->_rawBytes) { return true; @@ -410,6 +434,8 @@ Ice::Int IceInternal::OpaqueEndpointI::hashInit() const { Ice::Int h = _type; + hashAdd(h, _rawEncoding.major); + hashAdd(h, _rawEncoding.minor); hashAdd(h, _rawBytes); return h; } diff --git a/cpp/src/Ice/OpaqueEndpointI.h b/cpp/src/Ice/OpaqueEndpointI.h index ee1913955a8..c11af115c3f 100644 --- a/cpp/src/Ice/OpaqueEndpointI.h +++ b/cpp/src/Ice/OpaqueEndpointI.h @@ -55,7 +55,7 @@ private: // All members are const, because endpoints are immutable. // Ice::Short _type; - Ice::EncodingVersion _encoding; + Ice::EncodingVersion _rawEncoding; // The encoding used for _rawBytes const std::vector<Ice::Byte> _rawBytes; }; diff --git a/cpp/src/Ice/Reference.cpp b/cpp/src/Ice/Reference.cpp index 38a708b04c5..184a02c7b66 100644 --- a/cpp/src/Ice/Reference.cpp +++ b/cpp/src/Ice/Reference.cpp @@ -1881,17 +1881,6 @@ IceInternal::RoutableReference::RoutableReference(const RoutableReference& r) : namespace { -struct EndpointIsOpaque : public unary_function<EndpointIPtr, bool> -{ -public: - - bool - operator()(const EndpointIPtr& p) const - { - return dynamic_cast<OpaqueEndpointI*>(p.get()) != 0; - } -}; - struct EndpointIsIncompatible : public unary_function<EndpointIPtr, bool> { const Reference* _reference; @@ -1917,13 +1906,8 @@ IceInternal::RoutableReference::filterEndpoints(const vector<EndpointIPtr>& allE vector<EndpointIPtr> endpoints = allEndpoints; // - // Filter out unknown endpoints. - // - endpoints.erase(remove_if(endpoints.begin(), endpoints.end(), EndpointIsOpaque()), endpoints.end()); - - // // Filter out incompatible endpoints (whose encoding/protocol - // versions aren't supported by this runtime). + // versions aren't supported by this runtime, or are opaque). // endpoints.erase(remove_if(endpoints.begin(), endpoints.end(), EndpointIsIncompatible(this)), endpoints.end()); diff --git a/cpp/src/Ice/TcpEndpointI.cpp b/cpp/src/Ice/TcpEndpointI.cpp index 96de521a050..b63200aef15 100644 --- a/cpp/src/Ice/TcpEndpointI.cpp +++ b/cpp/src/Ice/TcpEndpointI.cpp @@ -192,10 +192,8 @@ IceInternal::TcpEndpointI::TcpEndpointI(BasicStream* s) : s->read(const_cast<bool&>(_compress)); if(s->getReadEncoding() > Ice::Encoding_1_0) { - s->read(const_cast<Byte&>(_protocol.major)); - s->read(const_cast<Byte&>(_protocol.minor)); - s->read(const_cast<Byte&>(_encoding.major)); - s->read(const_cast<Byte&>(_encoding.minor)); + const_cast<Ice::ProtocolVersion&>(_protocol).__read(s); + const_cast<Ice::EncodingVersion&>(_encoding).__read(s); } else { @@ -216,10 +214,8 @@ IceInternal::TcpEndpointI::streamWrite(BasicStream* s) const s->write(_compress); if(s->getWriteEncoding() > Ice::Encoding_1_0) { - s->write(_protocol.major); - s->write(_protocol.minor); - s->write(_encoding.major); - s->write(_encoding.minor); + _protocol.__write(s); + _encoding.__write(s); } s->endWriteEncaps(); } diff --git a/cpp/src/Ice/UdpEndpointI.cpp b/cpp/src/Ice/UdpEndpointI.cpp index 2df35fff2e0..ffe9b14f5ed 100644 --- a/cpp/src/Ice/UdpEndpointI.cpp +++ b/cpp/src/Ice/UdpEndpointI.cpp @@ -218,10 +218,8 @@ IceInternal::UdpEndpointI::UdpEndpointI(BasicStream* s) : s->startReadEncaps(); s->read(const_cast<string&>(_host), false); s->read(const_cast<Int&>(_port)); - s->read(const_cast<Byte&>(_protocol.major)); - s->read(const_cast<Byte&>(_protocol.minor)); - s->read(const_cast<Byte&>(_encoding.major)); - s->read(const_cast<Byte&>(_encoding.minor)); + const_cast<Ice::ProtocolVersion&>(_protocol).__read(s); + const_cast<Ice::EncodingVersion&>(_encoding).__read(s); // Not transmitted. //s->read(const_cast<bool&>(_connect)); s->read(const_cast<bool&>(_compress)); @@ -235,10 +233,8 @@ IceInternal::UdpEndpointI::streamWrite(BasicStream* s) const s->startWriteEncaps(); s->write(_host, false); s->write(_port); - s->write(_protocol.major); - s->write(_protocol.minor); - s->write(_encoding.major); - s->write(_encoding.minor); + _protocol.__write(s); + _encoding.__write(s); // Not transmitted. //s->write(_connect); s->write(_compress); diff --git a/cpp/src/IceSSL/EndpointI.cpp b/cpp/src/IceSSL/EndpointI.cpp index 74f3543beae..0ac79b975f1 100644 --- a/cpp/src/IceSSL/EndpointI.cpp +++ b/cpp/src/IceSSL/EndpointI.cpp @@ -192,10 +192,8 @@ IceSSL::EndpointI::EndpointI(const InstancePtr& instance, IceInternal::BasicStre s->read(const_cast<bool&>(_compress)); if(s->getReadEncoding() > Ice::Encoding_1_0) { - s->read(const_cast<Byte&>(_protocol.major)); - s->read(const_cast<Byte&>(_protocol.minor)); - s->read(const_cast<Byte&>(_encoding.major)); - s->read(const_cast<Byte&>(_encoding.minor)); + const_cast<Ice::ProtocolVersion&>(_protocol).__read(s); + const_cast<Ice::EncodingVersion&>(_encoding).__read(s); } else { @@ -216,10 +214,8 @@ IceSSL::EndpointI::streamWrite(IceInternal::BasicStream* s) const s->write(_compress); if(s->getWriteEncoding() > Ice::Encoding_1_0) { - s->write(_protocol.major); - s->write(_protocol.minor); - s->write(_encoding.major); - s->write(_encoding.minor); + _protocol.__write(s); + _encoding.__write(s); } s->endWriteEncaps(); } diff --git a/cpp/src/slice2freezej/Main.cpp b/cpp/src/slice2freezej/Main.cpp index b781f3625ff..69e73eab6a7 100755 --- a/cpp/src/slice2freezej/Main.cpp +++ b/cpp/src/slice2freezej/Main.cpp @@ -894,10 +894,10 @@ FreezeGenerator::generate(UnitPtr& u, const Dict& dict) // encode // out << sp << nl << "public byte[]" << nl << "encode" << keyValue << "(" << typeS - << " v, Ice.Communicator communicator)"; + << " v, Ice.Communicator communicator, Ice.EncodingVersion encoding)"; out << sb; out << nl << "IceInternal.BasicStream __os = " - << "new IceInternal.BasicStream(IceInternal.Util.getInstance(communicator), true, false);"; + << "new IceInternal.BasicStream(IceInternal.Util.getInstance(communicator), encoding, true, false);"; if(encaps) { out << nl << "__os.startWriteEncaps();"; @@ -922,10 +922,10 @@ FreezeGenerator::generate(UnitPtr& u, const Dict& dict) // decode // out << sp << nl << "public " << typeS << nl << "decode" << keyValue - << "(byte[] b, Ice.Communicator communicator)"; + << "(byte[] b, Ice.Communicator communicator, Ice.EncodingVersion encoding)"; out << sb; out << nl << "IceInternal.BasicStream __is = " - << "new IceInternal.BasicStream(IceInternal.Util.getInstance(communicator), true, false);"; + << "new IceInternal.BasicStream(IceInternal.Util.getInstance(communicator), encoding, true, false);"; if(type->usesClasses()) { out << nl << "__is.sliceObjects(false);"; @@ -1040,7 +1040,8 @@ FreezeGenerator::generate(UnitPtr& u, const Dict& dict) // encodeKey // out << sp << nl << "public byte[]"; - out << nl << "encodeKey(" << indexKeyTypeS << " key, Ice.Communicator communicator)"; + out << nl << "encodeKey(" << indexKeyTypeS << " key, Ice.Communicator communicator, " + << "Ice.EncodingVersion encoding)"; out << sb; if(dict.indices[i].member.empty()) { @@ -1053,7 +1054,7 @@ FreezeGenerator::generate(UnitPtr& u, const Dict& dict) keyS = "key.toLowerCase()"; } - out << nl << "return encodeValue(" << keyS << ", communicator);"; + out << nl << "return encodeValue(" << keyS << ", communicator, encoding);"; } else { @@ -1065,7 +1066,7 @@ FreezeGenerator::generate(UnitPtr& u, const Dict& dict) keyS = objectToVar(indexTypes[i], keyS); out << nl << "IceInternal.BasicStream __os = " - << "new IceInternal.BasicStream(IceInternal.Util.getInstance(communicator), true, false);"; + << "new IceInternal.BasicStream(IceInternal.Util.getInstance(communicator), encoding, true, false);"; int iter = 0; writeMarshalUnmarshalCode(out, "", indexTypes[i], keyS, true, iter, false); assert(!indexTypes[i]->usesClasses()); @@ -1081,19 +1082,19 @@ FreezeGenerator::generate(UnitPtr& u, const Dict& dict) // decodeKey // out << sp << nl << "public " << indexKeyTypeS; - out << nl << "decodeKey(byte[] bytes, Ice.Communicator communicator)"; + out << nl << "decodeKey(byte[] bytes, Ice.Communicator communicator, Ice.EncodingVersion encoding)"; out << sb; if(dict.indices[i].member.empty()) { // // Decode the full value (with an encaps!) // - out << nl << "return decodeValue(bytes, communicator);"; + out << nl << "return decodeValue(bytes, communicator, encoding);"; } else { out << nl << "IceInternal.BasicStream __is = " - << "new IceInternal.BasicStream(IceInternal.Util.getInstance(communicator), true, false);"; + << "new IceInternal.BasicStream(IceInternal.Util.getInstance(communicator), encoding, true, false);"; out << nl << "__is.resize(bytes.length, true);"; out << nl << "IceInternal.Buffer buf = __is.getBuffer();"; out << nl << "buf.b.position(0);"; @@ -1403,7 +1404,7 @@ FreezeGenerator::generate(UnitPtr& u, const Index& index) << "marshalKey(" << memberTypeString << " __key)"; out << sb; out << nl << "IceInternal.BasicStream __os = " - << "new IceInternal.BasicStream(IceInternal.Util.getInstance(communicator()), true, false);"; + << "new IceInternal.BasicStream(IceInternal.Util.getInstance(communicator()), encoding(), true, false);"; int iter = 0; writeMarshalUnmarshalCode(out, "", dataMember->type(), valueS, true, iter, false); if(type->usesClasses()) diff --git a/cpp/src/slice2java/Gen.cpp b/cpp/src/slice2java/Gen.cpp index 2c796c4f619..fdd881e3aa8 100644 --- a/cpp/src/slice2java/Gen.cpp +++ b/cpp/src/slice2java/Gen.cpp @@ -660,8 +660,7 @@ Slice::JavaVisitor::writeDispatchAndMarshalling(Output& out, const ClassDefPtr& // // Unmarshal 'in' parameters. // - out << nl << "IceInternal.BasicStream __is = __inS.is();"; - out << nl << "__is.startReadEncaps();"; + out << nl << "IceInternal.BasicStream __is = __inS.startReadParams();"; iter = 0; for(pli = inParams.begin(); pli != inParams.end(); ++pli) { @@ -686,11 +685,11 @@ Slice::JavaVisitor::writeDispatchAndMarshalling(Output& out, const ClassDefPtr& { out << nl << "__is.readPendingObjects();"; } - out << nl << "__is.endReadEncaps();"; + out << nl << "__inS.endReadParams();"; } else { - out << nl << "__inS.is().skipEmptyEncaps();"; + out << nl << "__inS.readEmptyParams();"; } // @@ -702,11 +701,6 @@ Slice::JavaVisitor::writeDispatchAndMarshalling(Output& out, const ClassDefPtr& out << nl << typeS << ' ' << fixKwd((*pli)->name()) << " = new " << typeS << "();"; } - if(!outParams.empty() || ret || !throws.empty()) - { - out << nl << "IceInternal.BasicStream __os = __inS.os();"; - } - // // Call on the servant. // @@ -742,18 +736,27 @@ Slice::JavaVisitor::writeDispatchAndMarshalling(Output& out, const ClassDefPtr& // // Marshal 'out' parameters and return value. // - for(pli = outParams.begin(); pli != outParams.end(); ++pli) + if(!outParams.empty() || ret) { - writeMarshalUnmarshalCode(out, package, (*pli)->type(), fixKwd((*pli)->name()), true, iter, true, - (*pli)->getMetaData()); - } - if(ret) - { - writeMarshalUnmarshalCode(out, package, ret, "__ret", true, iter, false, opMetaData); + out << nl << "IceInternal.BasicStream __os = __inS.__startWriteParams();"; + for(pli = outParams.begin(); pli != outParams.end(); ++pli) + { + writeMarshalUnmarshalCode(out, package, (*pli)->type(), fixKwd((*pli)->name()), true, iter, true, + (*pli)->getMetaData()); + } + if(ret) + { + writeMarshalUnmarshalCode(out, package, ret, "__ret", true, iter, false, opMetaData); + } + if(op->returnsClasses()) + { + out << nl << "__os.writePendingObjects();"; + } + out << nl << "__inS.__endWriteParams(true);"; } - if(op->returnsClasses()) + else { - out << nl << "__os.writePendingObjects();"; + out << nl << "__inS.__writeEmptyParams();"; } out << nl << "return Ice.DispatchStatus.DispatchOK;"; @@ -769,7 +772,8 @@ Slice::JavaVisitor::writeDispatchAndMarshalling(Output& out, const ClassDefPtr& string exS = getAbsolute(*t, package); out << nl << "catch(" << exS << " ex)"; out << sb; - out << nl << "__os.writeUserException(ex);"; + out << nl << "__inS.__startWriteParams().writeUserException(ex);"; + out << nl << "__inS.__endWriteParams(false);"; out << nl << "return Ice.DispatchStatus.DispatchUserException;"; out << eb; } @@ -799,8 +803,7 @@ Slice::JavaVisitor::writeDispatchAndMarshalling(Output& out, const ClassDefPtr& // // Unmarshal 'in' parameters. // - out << nl << "IceInternal.BasicStream __is = __inS.is();"; - out << nl << "__is.startReadEncaps();"; + out << nl << "IceInternal.BasicStream __is = __inS.startReadParams();"; iter = 0; for(pli = inParams.begin(); pli != inParams.end(); ++pli) { @@ -825,11 +828,11 @@ Slice::JavaVisitor::writeDispatchAndMarshalling(Output& out, const ClassDefPtr& { out << nl << "__is.readPendingObjects();"; } - out << nl << "__is.endReadEncaps();"; + out << nl << "__inS.endReadParams();"; } else { - out << nl << "__inS.is().skipEmptyEncaps();"; + out << nl << "__inS.readEmptyParams();"; } // @@ -4087,22 +4090,29 @@ Slice::Gen::HelperVisitor::visitClassDefStart(const ClassDefPtr& p) out << sb; out << nl << "__result.__prepare(__" << op->name() << "_name, " << sliceModeToIceMode(op->sendMode()) << ", __ctx, __explicitCtx);"; - out << nl << "IceInternal.BasicStream __os = __result.__getOs();"; iter = 0; - for(pli = paramList.begin(); pli != paramList.end(); ++pli) + if(!inArgs.empty()) { - if(!(*pli)->isOutParam()) + out << nl << "IceInternal.BasicStream __os = __result.__startWriteParams();"; + for(pli = paramList.begin(); pli != paramList.end(); ++pli) { - StringList metaData = (*pli)->getMetaData(); - writeMarshalUnmarshalCode(out, package, (*pli)->type(), fixKwd((*pli)->name()), true, iter, false, - metaData); + if(!(*pli)->isOutParam()) + { + StringList metaData = (*pli)->getMetaData(); + writeMarshalUnmarshalCode(out, package, (*pli)->type(), fixKwd((*pli)->name()), true, iter, + false, metaData); + } } + if(op->sendsClasses()) + { + out << nl << "__os.writePendingObjects();"; + } + out << nl << "__result.__endWriteParams();"; } - if(op->sendsClasses()) + else { - out << nl << "__os.writePendingObjects();"; + out << nl << "__result.__writeEmptyParams();"; } - out << nl << "__os.endWriteEncaps();"; out << nl << "__result.__send(true);"; out << eb; out << nl << "catch(Ice.LocalException __ex)"; @@ -4170,10 +4180,9 @@ Slice::Gen::HelperVisitor::visitClassDefStart(const ClassDefPtr& p) } } - out << nl << "IceInternal.BasicStream __is = __result.__getIs();"; if(ret || !outParams.empty()) { - out << nl << "__is.startReadEncaps();"; + out << nl << "IceInternal.BasicStream __is = __result.__startReadParams();"; for(pli = paramList.begin(); pli != paramList.end(); ++pli) { if((*pli)->isOutParam()) @@ -4199,11 +4208,11 @@ Slice::Gen::HelperVisitor::visitClassDefStart(const ClassDefPtr& p) { out << nl << "__is.readPendingObjects();"; } - out << nl << "__is.endReadEncaps();"; + out << nl << "__result.__endReadParams();"; } else { - out << nl << "__is.skipEmptyEncaps();"; + out << nl << "__result.__readEmptyParams();"; } if(ret) @@ -5122,7 +5131,7 @@ Slice::Gen::DelegateMVisitor::visitClassDefStart(const ClassDefPtr& p) { out << nl << "try"; out << sb; - out << nl << "IceInternal.BasicStream __os = __og.os();"; + out << nl << "IceInternal.BasicStream __os = __og.startWriteParams();"; for(pli = inParams.begin(); pli != inParams.end(); ++pli) { writeMarshalUnmarshalCode(out, package, (*pli)->type(), fixKwd((*pli)->name()), true, iter, false, @@ -5132,17 +5141,22 @@ Slice::Gen::DelegateMVisitor::visitClassDefStart(const ClassDefPtr& p) { out << nl << "__os.writePendingObjects();"; } + out << nl << "__og.endWriteParams();"; out << eb; out << nl << "catch(Ice.LocalException __ex)"; out << sb; out << nl << "__og.abort(__ex);"; out << eb; } + else + { + out << nl << "__og.writeEmptyParams();"; + } out << nl << "boolean __ok = __og.invoke();"; if(!op->returnsData()) { - out << nl << "if(!__og.is().isEmpty())"; + out << nl << "if(__og.hasResponse())"; out << sb; } @@ -5168,8 +5182,7 @@ Slice::Gen::DelegateMVisitor::visitClassDefStart(const ClassDefPtr& p) out << eb; if(ret || !outParams.empty()) { - out << nl << "IceInternal.BasicStream __is = __og.is();"; - out << nl << "__is.startReadEncaps();"; + out << nl << "IceInternal.BasicStream __is = __og.startReadParams();"; for(pli = outParams.begin(); pli != outParams.end(); ++pli) { writeMarshalUnmarshalCode(out, package, (*pli)->type(), fixKwd((*pli)->name()), false, iter, true, @@ -5193,11 +5206,11 @@ Slice::Gen::DelegateMVisitor::visitClassDefStart(const ClassDefPtr& p) { out << nl << "__is.readPendingObjects();"; } - out << nl << "__is.endReadEncaps();"; + out << nl << "__og.endReadParams();"; } else { - out << nl << "__og.is().skipEmptyEncaps();"; + out << nl << "__og.readEmptyParams();"; } if(ret) @@ -6146,7 +6159,7 @@ Slice::Gen::AsyncVisitor::visitOperation(const OperationPtr& p) { out << nl << "try"; out << sb; - out << nl << "IceInternal.BasicStream __os = this.__getOs();"; + out << nl << "IceInternal.BasicStream __os = this.__startWriteParams();"; for(pli = outParams.begin(); pli != outParams.end(); ++pli) { StringList metaData = (*pli)->getMetaData(); @@ -6163,13 +6176,14 @@ Slice::Gen::AsyncVisitor::visitOperation(const OperationPtr& p) { out << nl << "__os.writePendingObjects();"; } + out << nl << "this.__endWriteParams(true);"; out << eb; out << nl << "catch(Ice.LocalException __ex)"; out << sb; out << nl << "ice_exception(__ex);"; out << eb; } - out << nl << "__response(true);"; + out << nl << "__response();"; out << eb; out << eb; @@ -6189,8 +6203,9 @@ Slice::Gen::AsyncVisitor::visitOperation(const OperationPtr& p) out << sb; out << nl << "if(__validateResponse(false))"; out << sb; - out << nl << "__getOs().writeUserException(__ex);"; - out << nl << "__response(false);"; + out << nl << "__startWriteParams().writeUserException(__ex);"; + out << nl << "__endWriteParams(false);"; + out << nl << "__response();"; out << eb; out << eb; } |