summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp')
-rw-r--r--cpp/include/Ice/BasicStream.h15
-rw-r--r--cpp/include/Ice/Incoming.h3
-rw-r--r--cpp/include/Ice/Outgoing.h4
-rw-r--r--cpp/include/Ice/OutgoingAsync.h4
-rw-r--r--cpp/include/Ice/Stream.h4
-rw-r--r--cpp/include/Slice/CPlusPlusUtil.h2
-rwxr-xr-xcpp/src/Ice/BasicStream.cpp35
-rw-r--r--cpp/src/Ice/Incoming.cpp16
-rw-r--r--cpp/src/Ice/Object.cpp6
-rw-r--r--cpp/src/Ice/OpaqueEndpointI.cpp2
-rw-r--r--cpp/src/Ice/Proxy.cpp4
-rw-r--r--cpp/src/Ice/StreamI.cpp10
-rw-r--r--cpp/src/Ice/StreamI.h4
-rw-r--r--cpp/src/Slice/CPlusPlusUtil.cpp4
-rw-r--r--cpp/src/slice2cpp/Gen.cpp48
-rw-r--r--cpp/src/slice2java/Gen.cpp51
16 files changed, 69 insertions, 143 deletions
diff --git a/cpp/include/Ice/BasicStream.h b/cpp/include/Ice/BasicStream.h
index 0ac688ab381..5871e510672 100644
--- a/cpp/include/Ice/BasicStream.h
+++ b/cpp/include/Ice/BasicStream.h
@@ -89,8 +89,6 @@ public:
b.resize(sz);
}
- void format(Ice::FormatType);
-
void startWriteObject(const Ice::SlicedDataPtr& data)
{
assert(_currentWriteEncaps && _currentWriteEncaps->encoder);
@@ -137,7 +135,7 @@ public:
void startWriteEncaps();
- void startWriteEncaps(const Ice::EncodingVersion& encoding)
+ void startWriteEncaps(const Ice::EncodingVersion& encoding, Ice::FormatType format)
{
checkSupportedEncoding(encoding);
@@ -151,6 +149,7 @@ public:
_currentWriteEncaps = new WriteEncaps();
_currentWriteEncaps->previous = oldEncaps;
}
+ _currentWriteEncaps->format = format;
_currentWriteEncaps->encoding = encoding;
_currentWriteEncaps->start = b.size();
@@ -965,9 +964,9 @@ private:
class EncapsEncoder : private ::IceUtil::noncopyable
{
public:
- EncapsEncoder(BasicStream* stream, WriteEncaps* encaps, Ice::FormatType format) :
- _stream(stream), _encaps(encaps), _format(format), _sliceType(NoSlice), _usesClasses(false),
- _objectIdIndex(0), _typeIdIndex(0)
+ EncapsEncoder(BasicStream* stream, WriteEncaps* encaps) :
+ _stream(stream), _encaps(encaps), _sliceType(NoSlice), _usesClasses(false), _objectIdIndex(0),
+ _typeIdIndex(0)
{
}
@@ -1013,7 +1012,6 @@ private:
BasicStream* _stream;
WriteEncaps* _encaps;
- const Ice::FormatType _format;
// Object/exception attributes
SliceType _sliceType;
@@ -1092,6 +1090,7 @@ private:
Container::size_type start;
Ice::EncodingVersion encoding;
+ Ice::FormatType format;
EncapsEncoder* encoder;
@@ -1126,8 +1125,6 @@ private:
int _startSeq;
int _minSeqSize;
- Ice::FormatType _format;
-
static const Ice::Byte FLAG_HAS_TYPE_ID_STRING;
static const Ice::Byte FLAG_HAS_TYPE_ID_INDEX;
static const Ice::Byte FLAG_HAS_OPTIONAL_MEMBERS;
diff --git a/cpp/include/Ice/Incoming.h b/cpp/include/Ice/Incoming.h
index 635ed3709b4..83a47c17b48 100644
--- a/cpp/include/Ice/Incoming.h
+++ b/cpp/include/Ice/Incoming.h
@@ -28,10 +28,11 @@ public:
void __adopt(IncomingBase&);
- BasicStream* __startWriteParams();
+ BasicStream* __startWriteParams(Ice::FormatType);
void __endWriteParams(bool);
void __writeEmptyParams();
void __writeParamEncaps(const Ice::Byte*, Ice::Int, bool);
+ void __writeUserException(const Ice::UserException&, Ice::FormatType);
protected:
diff --git a/cpp/include/Ice/Outgoing.h b/cpp/include/Ice/Outgoing.h
index 58e0dc28d66..37fdd9f248c 100644
--- a/cpp/include/Ice/Outgoing.h
+++ b/cpp/include/Ice/Outgoing.h
@@ -103,9 +103,9 @@ public:
_is.readEncaps(encaps, sz);
}
- BasicStream* startWriteParams()
+ BasicStream* startWriteParams(Ice::FormatType format)
{
- _os.startWriteEncaps(_encoding);
+ _os.startWriteEncaps(_encoding, format);
return &_os;
}
void endWriteParams()
diff --git a/cpp/include/Ice/OutgoingAsync.h b/cpp/include/Ice/OutgoingAsync.h
index ab8e59d8ea1..ff9c4e1a4fc 100644
--- a/cpp/include/Ice/OutgoingAsync.h
+++ b/cpp/include/Ice/OutgoingAsync.h
@@ -220,9 +220,9 @@ public:
bool __send(bool);
- BasicStream* __startWriteParams()
+ BasicStream* __startWriteParams(Ice::FormatType format)
{
- _os.startWriteEncaps(_encoding);
+ _os.startWriteEncaps(_encoding, format);
return &_os;
}
void __endWriteParams()
diff --git a/cpp/include/Ice/Stream.h b/cpp/include/Ice/Stream.h
index b4b75516213..6ec33c5e2e1 100644
--- a/cpp/include/Ice/Stream.h
+++ b/cpp/include/Ice/Stream.h
@@ -287,8 +287,6 @@ public:
virtual void writeException(const UserException&) = 0;
- virtual void format(FormatType) = 0;
-
virtual void startObject(const SlicedDataPtr&) = 0;
virtual void endObject() = 0;
@@ -298,7 +296,7 @@ public:
virtual void startSlice(const ::std::string&, bool) = 0;
virtual void endSlice() = 0;
- virtual void startEncapsulation(const Ice::EncodingVersion&) = 0;
+ virtual void startEncapsulation(const Ice::EncodingVersion&, FormatType) = 0;
virtual void startEncapsulation() = 0;
virtual void endEncapsulation() = 0;
diff --git a/cpp/include/Slice/CPlusPlusUtil.h b/cpp/include/Slice/CPlusPlusUtil.h
index 9febb97eb1b..dae79c161ec 100644
--- a/cpp/include/Slice/CPlusPlusUtil.h
+++ b/cpp/include/Slice/CPlusPlusUtil.h
@@ -39,7 +39,7 @@ SLICE_API std::string returnTypeToString(const TypePtr&, bool, const StringList&
SLICE_API std::string inputTypeToString(const TypePtr&, bool, const StringList& = StringList(), int = 0);
SLICE_API std::string outputTypeToString(const TypePtr&, bool, const StringList& = StringList(), int = 0);
SLICE_API std::string operationModeToString(Operation::Mode);
-SLICE_API std::string formatTypeToString(FormatType);
+SLICE_API std::string opFormatTypeToString(const OperationPtr&);
SLICE_API std::string fixKwd(const std::string&);
diff --git a/cpp/src/Ice/BasicStream.cpp b/cpp/src/Ice/BasicStream.cpp
index 4636813d40a..ce7c37fa025 100755
--- a/cpp/src/Ice/BasicStream.cpp
+++ b/cpp/src/Ice/BasicStream.cpp
@@ -97,8 +97,7 @@ IceInternal::BasicStream::BasicStream(Instance* instance, const EncodingVersion&
_unlimited(unlimited),
_stringConverter(instance->initializationData().stringConverter),
_wstringConverter(instance->initializationData().wstringConverter),
- _startSeq(-1),
- _format(_instance->defaultsAndOverrides()->defaultFormat)
+ _startSeq(-1)
{
//
// Initialize the encoding members of our pre-allocated encapsulations, in case
@@ -164,7 +163,6 @@ IceInternal::BasicStream::swap(BasicStream& other)
std::swap(_unlimited, other._unlimited);
std::swap(_startSeq, other._startSeq);
std::swap(_minSeqSize, other._minSeqSize);
- std::swap(_format, other._format);
}
void
@@ -188,16 +186,6 @@ IceInternal::BasicStream::resetEncaps()
_preAllocatedWriteEncaps.reset();
}
-
-void
-IceInternal::BasicStream::format(Ice::FormatType format)
-{
- if(format != DefaultFormat)
- {
- _format = format;
- }
-}
-
void
IceInternal::BasicStream::startWriteEncaps()
{
@@ -209,11 +197,11 @@ IceInternal::BasicStream::startWriteEncaps()
if(_currentWriteEncaps)
{
- startWriteEncaps(_currentWriteEncaps->encoding);
+ startWriteEncaps(_currentWriteEncaps->encoding, _currentWriteEncaps->format);
}
else
{
- startWriteEncaps(_encoding);
+ startWriteEncaps(_encoding, Ice::DefaultFormat);
}
}
@@ -1768,9 +1756,14 @@ IceInternal::BasicStream::initWriteEncaps()
_currentWriteEncaps->start = b.size();
}
+ if(_currentWriteEncaps->format == Ice::DefaultFormat)
+ {
+ _currentWriteEncaps->format = _instance->defaultsAndOverrides()->defaultFormat;
+ }
+
if(!_currentWriteEncaps->encoder) // Lazy initialization.
{
- _currentWriteEncaps->encoder = new EncapsEncoder(this, _currentWriteEncaps, _format);
+ _currentWriteEncaps->encoder = new EncapsEncoder(this, _currentWriteEncaps);
}
}
@@ -1792,7 +1785,7 @@ IceInternal::BasicStream::EncapsEncoder::write(const ObjectPtr& v)
_stream->write(-index);
_usesClasses = true;
}
- else if(_sliceType != NoSlice && _format == SlicedFormat)
+ else if(_sliceType != NoSlice && _encaps->format == SlicedFormat)
{
//
// An object reference that appears inside a slice of an
@@ -1911,7 +1904,7 @@ IceInternal::BasicStream::EncapsEncoder::startSlice(const string& typeId, bool l
// Encode the slice size for the old encoding and if using the
// sliced format.
//
- if(_encaps->encoding == Encoding_1_0 || _format == SlicedFormat)
+ if(_encaps->encoding == Encoding_1_0 || _encaps->format == SlicedFormat)
{
_sliceFlags |= FLAG_HAS_SLICE_SIZE;
}
@@ -1937,7 +1930,7 @@ IceInternal::BasicStream::EncapsEncoder::startSlice(const string& typeId, bool l
// Encode the type ID (only in the first slice for the compact
// encoding).
//
- if(_format == SlicedFormat || _encaps->encoding == Encoding_1_0 || _firstSlice)
+ if(_encaps->format == SlicedFormat || _encaps->encoding == Encoding_1_0 || _firstSlice)
{
//
// If the type ID has already been seen, write the index
@@ -2006,7 +1999,7 @@ IceInternal::BasicStream::EncapsEncoder::endSlice()
if(!_indirectionTable.empty())
{
assert(_encaps->encoding != Encoding_1_0);
- assert(_format == SlicedFormat);
+ assert(_encaps->format == SlicedFormat);
_sliceFlags |= FLAG_HAS_INDIRECTION_TABLE;
//
@@ -2126,7 +2119,7 @@ IceInternal::BasicStream::EncapsEncoder::writeSlicedData(const SlicedDataPtr& sl
// using the sliced format. Otherwise, we ignore the preserved slices, which
// essentially "slices" the object into the most-derived type known by the sender.
//
- if(_encaps->encoding == Encoding_1_0 || _format != SlicedFormat)
+ if(_encaps->encoding == Encoding_1_0 || _encaps->format != SlicedFormat)
{
return;
}
diff --git a/cpp/src/Ice/Incoming.cpp b/cpp/src/Ice/Incoming.cpp
index 15e49a61608..34f583bb1df 100644
--- a/cpp/src/Ice/Incoming.cpp
+++ b/cpp/src/Ice/Incoming.cpp
@@ -80,14 +80,14 @@ IceInternal::IncomingBase::__adopt(IncomingBase& other)
}
BasicStream*
-IncomingBase::__startWriteParams()
+IncomingBase::__startWriteParams(FormatType format)
{
if(_response)
{
assert(_os.b.size() == headerSize + 4); // Reply status position.
assert(_current.encoding >= Ice::Encoding_1_0); // Encoding for reply is known.
_os.write(static_cast<Ice::Byte>(0));
- _os.startWriteEncaps(_current.encoding);
+ _os.startWriteEncaps(_current.encoding, format);
}
//
@@ -141,6 +141,14 @@ IncomingBase::__writeParamEncaps(const Byte* v, Ice::Int sz, bool ok)
}
}
+void
+IncomingBase::__writeUserException(const Ice::UserException& ex, Ice::FormatType format)
+{
+ ::IceInternal::BasicStream* __os = __startWriteParams(format);
+ __os->write(ex);
+ __endWriteParams(false);
+}
+
void
IceInternal::IncomingBase::__warning(const Exception& ex) const
{
@@ -203,7 +211,7 @@ IceInternal::IncomingBase::__servantLocatorFinished()
{
_os.b.resize(headerSize + 4); // Reply status position.
_os.write(replyUserException);
- _os.startWriteEncaps(_current.encoding);
+ _os.startWriteEncaps(_current.encoding, DefaultFormat);
_os.write(ex);
_os.endWriteEncaps();
_connection->sendResponse(&_os, _compress);
@@ -567,7 +575,7 @@ IceInternal::Incoming::invoke(const ServantManagerPtr& servantManager, BasicStre
if(_response)
{
_os.write(replyUserException);
- _os.startWriteEncaps(encoding);
+ _os.startWriteEncaps(encoding, DefaultFormat);
_os.write(ex);
_os.endWriteEncaps();
_connection->sendResponse(&_os, _compress);
diff --git a/cpp/src/Ice/Object.cpp b/cpp/src/Ice/Object.cpp
index 875c58ed78d..39ad9df18c2 100644
--- a/cpp/src/Ice/Object.cpp
+++ b/cpp/src/Ice/Object.cpp
@@ -111,7 +111,7 @@ Ice::Object::___ice_isA(Incoming& __inS, const Current& __current)
__is->read(__id, false);
__inS.endReadParams();
bool __ret = ice_isA(__id, __current);
- BasicStream* __os = __inS.__startWriteParams();
+ BasicStream* __os = __inS.__startWriteParams(DefaultFormat);
__os->write(__ret);
__inS.__endWriteParams(true);
return DispatchOK;
@@ -131,7 +131,7 @@ Ice::Object::___ice_ids(Incoming& __inS, const Current& __current)
{
__inS.readEmptyParams();
vector<string> __ret = ice_ids(__current);
- BasicStream* __os = __inS.__startWriteParams();
+ BasicStream* __os = __inS.__startWriteParams(DefaultFormat);
__os->write(&__ret[0], &__ret[0] + __ret.size(), false);
__inS.__endWriteParams(true);
return DispatchOK;
@@ -142,7 +142,7 @@ Ice::Object::___ice_id(Incoming& __inS, const Current& __current)
{
__inS.readEmptyParams();
string __ret = ice_id(__current);
- BasicStream* __os = __inS.__startWriteParams();
+ BasicStream* __os = __inS.__startWriteParams(DefaultFormat);
__os->write(__ret, false);
__inS.__endWriteParams(true);
return DispatchOK;
diff --git a/cpp/src/Ice/OpaqueEndpointI.cpp b/cpp/src/Ice/OpaqueEndpointI.cpp
index 9b0eea19b0e..a3ed87efd85 100644
--- a/cpp/src/Ice/OpaqueEndpointI.cpp
+++ b/cpp/src/Ice/OpaqueEndpointI.cpp
@@ -196,7 +196,7 @@ void
IceInternal::OpaqueEndpointI::streamWrite(BasicStream* s) const
{
s->write(_type);
- s->startWriteEncaps(_rawEncoding);
+ s->startWriteEncaps(_rawEncoding, DefaultFormat);
s->writeBlob(_rawBytes);
s->endWriteEncaps();
}
diff --git a/cpp/src/Ice/Proxy.cpp b/cpp/src/Ice/Proxy.cpp
index eead1433242..33081299113 100644
--- a/cpp/src/Ice/Proxy.cpp
+++ b/cpp/src/Ice/Proxy.cpp
@@ -155,7 +155,7 @@ IceProxy::Ice::Object::begin_ice_isA(const string& typeId,
try
{
__result->__prepare(ice_isA_name, Nonmutating, ctx);
- IceInternal::BasicStream* __os = __result->__startWriteParams();
+ IceInternal::BasicStream* __os = __result->__startWriteParams(DefaultFormat);
__os->write(typeId);
__result->__endWriteParams();
__result->__send(true);
@@ -1461,7 +1461,7 @@ IceDelegateM::Ice::Object::ice_isA(const string& __id, const Context* context)
Outgoing __og(__handler.get(), ice_isA_name, ::Ice::Nonmutating, context);
try
{
- BasicStream* __os = __og.startWriteParams();
+ BasicStream* __os = __og.startWriteParams(DefaultFormat);
__os->write(__id, false);
__og.endWriteParams();
}
diff --git a/cpp/src/Ice/StreamI.cpp b/cpp/src/Ice/StreamI.cpp
index 91c658abcf2..e1e73f94617 100644
--- a/cpp/src/Ice/StreamI.cpp
+++ b/cpp/src/Ice/StreamI.cpp
@@ -577,12 +577,6 @@ OutputStreamI::writeOptional(Int tag, OptionalType type)
}
void
-OutputStreamI::format(FormatType format)
-{
- _os->format(format);
-}
-
-void
OutputStreamI::startObject(const SlicedDataPtr& slicedData)
{
_os->startWriteObject(slicedData);
@@ -619,9 +613,9 @@ OutputStreamI::endSlice()
}
void
-OutputStreamI::startEncapsulation(const EncodingVersion& version)
+OutputStreamI::startEncapsulation(const EncodingVersion& version, FormatType format)
{
- _os->startWriteEncaps(version);
+ _os->startWriteEncaps(version, format);
}
void
diff --git a/cpp/src/Ice/StreamI.h b/cpp/src/Ice/StreamI.h
index 299e8a2bf02..0ccf35a8e6a 100644
--- a/cpp/src/Ice/StreamI.h
+++ b/cpp/src/Ice/StreamI.h
@@ -140,8 +140,6 @@ public:
virtual void writeOptional(Int, OptionalType);
- virtual void format(FormatType);
-
virtual void startObject(const SlicedDataPtr&);
virtual void endObject();
@@ -151,7 +149,7 @@ public:
virtual void startSlice(const std::string&, bool);
virtual void endSlice();
- virtual void startEncapsulation(const Ice::EncodingVersion&);
+ virtual void startEncapsulation(const Ice::EncodingVersion&, FormatType);
virtual void startEncapsulation();
virtual void endEncapsulation();
diff --git a/cpp/src/Slice/CPlusPlusUtil.cpp b/cpp/src/Slice/CPlusPlusUtil.cpp
index aa35affc81b..a4ae0905b3f 100644
--- a/cpp/src/Slice/CPlusPlusUtil.cpp
+++ b/cpp/src/Slice/CPlusPlusUtil.cpp
@@ -712,9 +712,9 @@ Slice::operationModeToString(Operation::Mode mode)
}
string
-Slice::formatTypeToString(FormatType type)
+Slice::opFormatTypeToString(const OperationPtr& op)
{
- switch(type)
+ switch(op->format())
{
case DefaultFormat:
return "::Ice::DefaultFormat";
diff --git a/cpp/src/slice2cpp/Gen.cpp b/cpp/src/slice2cpp/Gen.cpp
index 44e4b501637..db0cbd559bd 100644
--- a/cpp/src/slice2cpp/Gen.cpp
+++ b/cpp/src/slice2cpp/Gen.cpp
@@ -2236,12 +2236,7 @@ Slice::Gen::ProxyVisitor::visitOperation(const OperationPtr& p)
}
else
{
- C << nl << "::IceInternal::BasicStream* __os = __result->__startWriteParams();";
- FormatType format = p->format();
- if(p->sendsClasses() && format != DefaultFormat)
- {
- C << nl << "__os->format(" << formatTypeToString(format) << ");";
- }
+ C << nl << "::IceInternal::BasicStream* __os = __result->__startWriteParams(" << opFormatTypeToString(p) <<");";
writeMarshalCode(C, inParams, 0, TypeContextInParam);
C << nl << "__result->__endWriteParams();";
}
@@ -2777,15 +2772,7 @@ Slice::Gen::DelegateMVisitor::visitOperation(const OperationPtr& p)
{
C << nl << "try";
C << sb;
- C << nl<< "::IceInternal::BasicStream* __os = __og.startWriteParams();";
- if(p->sendsClasses())
- {
- FormatType format = p->format();
- if(format != DefaultFormat)
- {
- C << nl << "__os->format(" << formatTypeToString(format) << ");";
- }
- }
+ C << nl<< "::IceInternal::BasicStream* __os = __og.startWriteParams(" << opFormatTypeToString(p) << ");";
writeMarshalCode(C, inParams, 0, TypeContextInParam);
C << nl << "__og.endWriteParams();";
C << eb;
@@ -4344,14 +4331,10 @@ Slice::Gen::ObjectVisitor::visitOperation(const OperationPtr& p)
C << retS << " __ret = ";
}
C << fixKwd(name) << args << ';';
- FormatType format = p->format();
if(ret || !outParams.empty())
{
- C << nl << "::IceInternal::BasicStream* __os = __inS.__startWriteParams();";
- if(p->returnsClasses() && format != DefaultFormat)
- {
- C << nl << "__os->format(" << formatTypeToString(format) << ");";
- }
+ C << nl << "::IceInternal::BasicStream* __os = __inS.__startWriteParams("
+ << opFormatTypeToString(p) << ");";
writeMarshalCode(C, outParams, p);
C << nl << "__inS.__endWriteParams(true);";
}
@@ -4368,13 +4351,7 @@ Slice::Gen::ObjectVisitor::visitOperation(const OperationPtr& p)
{
C << nl << "catch(const " << fixKwd((*r)->scoped()) << "& __ex)";
C << sb;
- C << nl << "::IceInternal::BasicStream* __os = __inS.__startWriteParams();";
- if(format != DefaultFormat)
- {
- C << nl << "__os->format(" << formatTypeToString(format) << ");";
- }
- C << nl << "__os->write(__ex);";
- C << nl << "__inS.__endWriteParams(false);";
+ C << nl << "__inS.__writeUserException(__ex, " << opFormatTypeToString(p) << ");";
C << eb;
}
C << nl << "return ::Ice::DispatchUserException;";
@@ -6044,16 +6021,11 @@ Slice::Gen::AsyncImplVisitor::visitOperation(const OperationPtr& p)
C << sb;
C << nl << "if(__validateResponse(true))";
C << sb;
- FormatType format = p->format();
if(ret || !outParams.empty())
{
C << nl << "try";
C << sb;
- C << nl << "::IceInternal::BasicStream* __os = __startWriteParams();";
- if(p->returnsClasses() && format != DefaultFormat)
- {
- C << nl << "__os->format(" << formatTypeToString(format) << ");";
- }
+ C << nl << "::IceInternal::BasicStream* __os = __startWriteParams(" << opFormatTypeToString(p) << ");";
writeMarshalCode(C, outParams, p, TypeContextInParam);
C << nl << "__endWriteParams(true);";
C << eb;
@@ -6089,13 +6061,7 @@ Slice::Gen::AsyncImplVisitor::visitOperation(const OperationPtr& p)
C << sb;
C << nl <<"if(__validateResponse(false))";
C << sb;
- C << nl << "::IceInternal::BasicStream* __os = __startWriteParams();";
- if(format != DefaultFormat)
- {
- C << nl << "__os->format(" << formatTypeToString(format) << ");";
- }
- C << nl << "__os->write(*__ex);";
- C << nl << "__endWriteParams(false);";
+ C << nl << "__writeUserException(*__ex, " << opFormatTypeToString(p) << ");";
C << nl << "__response();";
C << eb;
C << eb;
diff --git a/cpp/src/slice2java/Gen.cpp b/cpp/src/slice2java/Gen.cpp
index 1327e24fb14..b15dc0d5f5a 100644
--- a/cpp/src/slice2java/Gen.cpp
+++ b/cpp/src/slice2java/Gen.cpp
@@ -66,9 +66,9 @@ sliceModeToIceMode(Operation::Mode opMode)
}
static string
-formatTypeToString(FormatType type)
+opFormatTypeToString(const OperationPtr& op)
{
- switch(type)
+ switch(op->format())
{
case DefaultFormat:
return "Ice.FormatType.DefaultFormat";
@@ -1171,14 +1171,10 @@ Slice::JavaVisitor::writeDispatchAndMarshalling(Output& out, const ClassDefPtr&
//
// Marshal 'out' parameters and return value.
//
- FormatType format = op->format();
if(!outParams.empty() || ret)
{
- out << nl << "IceInternal.BasicStream __os = __inS.__startWriteParams();";
- if(op->returnsClasses() && format != DefaultFormat)
- {
- out << nl << "__os.format(" << formatTypeToString(format) << ");";
- }
+ out << nl << "IceInternal.BasicStream __os = __inS.__startWriteParams("
+ << opFormatTypeToString(op) << ");";
writeMarshalUnmarshalParams(out, package, outParams, op, iter, true, optionalMapping, true);
out << nl << "__inS.__endWriteParams(true);";
}
@@ -1200,13 +1196,7 @@ Slice::JavaVisitor::writeDispatchAndMarshalling(Output& out, const ClassDefPtr&
string exS = getAbsolute(*t, package);
out << nl << "catch(" << exS << " ex)";
out << sb;
- out << nl << "IceInternal.BasicStream __os = __inS.__startWriteParams();";
- if(format != DefaultFormat)
- {
- out << nl << "__os.format(" << formatTypeToString(format) << ");";
- }
- out << nl << "__os.writeUserException(ex);";
- out << nl << "__inS.__endWriteParams(false);";
+ out << nl << "__inS.__writeUserException(ex, " << opFormatTypeToString(op) << ");";
out << nl << "return Ice.DispatchStatus.DispatchUserException;";
out << eb;
}
@@ -4652,12 +4642,8 @@ Slice::Gen::HelperVisitor::visitClassDefStart(const ClassDefPtr& p)
iter = 0;
if(!inArgs.empty())
{
- out << nl << "IceInternal.BasicStream __os = __result.__startWriteParams();";
- FormatType format = op->format();
- if(op->sendsClasses() && format != DefaultFormat)
- {
- out << nl << "__os.format(" << formatTypeToString(format) << ");";
- }
+ out << nl << "IceInternal.BasicStream __os = __result.__startWriteParams("
+ << opFormatTypeToString(op) << ");";
ParamDeclList pl;
for(pli = paramList.begin(); pli != paramList.end(); ++pli)
{
@@ -5663,12 +5649,7 @@ Slice::Gen::DelegateMVisitor::visitClassDefStart(const ClassDefPtr& p)
{
out << nl << "try";
out << sb;
- out << nl << "IceInternal.BasicStream __os = __og.startWriteParams();";
- FormatType format = op->format();
- if(op->sendsClasses() && format != DefaultFormat)
- {
- out << nl << "__os.format(" << formatTypeToString(format) << ");";
- }
+ out << nl << "IceInternal.BasicStream __os = __og.startWriteParams(" << opFormatTypeToString(op) << ");";
writeMarshalUnmarshalParams(out, package, inParams, 0, iter, true, optionalMapping);
out << nl << "__og.endWriteParams();";
out << eb;
@@ -6780,16 +6761,12 @@ Slice::Gen::AsyncVisitor::visitOperation(const OperationPtr& p)
iter = 0;
out << nl << "if(__validateResponse(true))";
out << sb;
- FormatType format = p->format();
if(ret || !outParams.empty())
{
out << nl << "try";
out << sb;
- out << nl << "IceInternal.BasicStream __os = this.__startWriteParams();";
- if(p->returnsClasses() && format != DefaultFormat)
- {
- out << nl << "__os.format(" << formatTypeToString(format) << ");";
- }
+ out << nl << "IceInternal.BasicStream __os = this.__startWriteParams("
+ << opFormatTypeToString(p) << ");";
writeMarshalUnmarshalParams(out, classPkg, outParams, p, iter, true, optionalMapping, false);
out << nl << "this.__endWriteParams(true);";
out << eb;
@@ -6822,13 +6799,7 @@ Slice::Gen::AsyncVisitor::visitOperation(const OperationPtr& p)
out << sb;
out << nl << "if(__validateResponse(false))";
out << sb;
- out << nl << "IceInternal.BasicStream __os = __startWriteParams();";
- if(format != DefaultFormat)
- {
- out << nl << "__os.format(" << formatTypeToString(format) << ");";
- }
- out << nl << "__os.writeUserException(__ex);";
- out << nl << "__endWriteParams(false);";
+ out << nl << "__writeUserException(__ex, " << opFormatTypeToString(p) << ");";
out << nl << "__response();";
out << eb;
out << eb;