summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2012-04-20 17:29:10 +0200
committerBenoit Foucher <benoit@zeroc.com>2012-04-20 17:29:10 +0200
commit410311ac0dad54bbc0906085134b41e12ed44abb (patch)
tree678d75e04b90c289628c1ae79100317432bfe1d8 /cpp/src
parentEnabled again objects test (diff)
downloadice-410311ac0dad54bbc0906085134b41e12ed44abb.tar.bz2
ice-410311ac0dad54bbc0906085134b41e12ed44abb.tar.xz
ice-410311ac0dad54bbc0906085134b41e12ed44abb.zip
Java port
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/Freeze/SharedDbEnv.cpp2
-rw-r--r--cpp/src/Ice/OpaqueEndpointI.cpp46
-rw-r--r--cpp/src/Ice/OpaqueEndpointI.h2
-rw-r--r--cpp/src/Ice/Reference.cpp18
-rw-r--r--cpp/src/Ice/TcpEndpointI.cpp12
-rw-r--r--cpp/src/Ice/UdpEndpointI.cpp12
-rw-r--r--cpp/src/IceSSL/EndpointI.cpp12
-rwxr-xr-xcpp/src/slice2freezej/Main.cpp23
-rw-r--r--cpp/src/slice2java/Gen.cpp107
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;
}