summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Proxy.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2012-04-18 14:33:16 +0200
committerBenoit Foucher <benoit@zeroc.com>2012-04-18 14:33:16 +0200
commit2ba4d4e0ca7aeade69ee00ab17d5fa1b69372ffc (patch)
tree0a381f9b284eb7ca5acc9bca5a97659d19874f9d /cpp/src/Ice/Proxy.cpp
parentICE-4828 - Buffer.h undeclared ptrdiff_t issue on OpenSUSE (diff)
downloadice-2ba4d4e0ca7aeade69ee00ab17d5fa1b69372ffc.tar.bz2
ice-2ba4d4e0ca7aeade69ee00ab17d5fa1b69372ffc.tar.xz
ice-2ba4d4e0ca7aeade69ee00ab17d5fa1b69372ffc.zip
Added support for encoding versioning
Diffstat (limited to 'cpp/src/Ice/Proxy.cpp')
-rw-r--r--cpp/src/Ice/Proxy.cpp114
1 files changed, 60 insertions, 54 deletions
diff --git a/cpp/src/Ice/Proxy.cpp b/cpp/src/Ice/Proxy.cpp
index 8bddf2d9f60..c89089d2744 100644
--- a/cpp/src/Ice/Proxy.cpp
+++ b/cpp/src/Ice/Proxy.cpp
@@ -155,9 +155,9 @@ IceProxy::Ice::Object::begin_ice_isA(const string& typeId,
try
{
__result->__prepare(ice_isA_name, Nonmutating, ctx);
- IceInternal::BasicStream* __os = __result->__getOs();
+ IceInternal::BasicStream* __os = __result->__startWriteParams();
__os->write(typeId);
- __os->endWriteEncaps();
+ __result->__endWriteParams();
__result->__send(true);
}
catch(const LocalException& __ex)
@@ -183,10 +183,9 @@ IceProxy::Ice::Object::end_ice_isA(const AsyncResultPtr& __result)
}
}
bool __ret;
- IceInternal::BasicStream* __is = __result->__getIs();
- __is->startReadEncaps();
+ IceInternal::BasicStream* __is = __result->__startReadParams();
__is->read(__ret);
- __is->endReadEncaps();
+ __result->__endReadParams();
return __ret;
}
@@ -223,8 +222,7 @@ IceProxy::Ice::Object::begin_ice_ping(const Context* ctx,
try
{
__result->__prepare(ice_ping_name, Nonmutating, ctx);
- IceInternal::BasicStream* __os = __result->__getOs();
- __os->endWriteEncaps();
+ __result->__writeEmptyParams();
__result->__send(true);
}
catch(const LocalException& __ex)
@@ -298,8 +296,7 @@ IceProxy::Ice::Object::begin_ice_ids(const Context* ctx,
try
{
__result->__prepare(ice_ids_name, Nonmutating, ctx);
- IceInternal::BasicStream* __os = __result->__getOs();
- __os->endWriteEncaps();
+ __result->__writeEmptyParams();
__result->__send(true);
}
catch(const LocalException& __ex)
@@ -325,10 +322,9 @@ IceProxy::Ice::Object::end_ice_ids(const AsyncResultPtr& __result)
}
}
vector<string> __ret;
- IceInternal::BasicStream* __is = __result->__getIs();
- __is->startReadEncaps();
+ IceInternal::BasicStream* __is = __result->__startReadParams();
__is->read(__ret);
- __is->endReadEncaps();
+ __result->__endReadParams();
return __ret;
}
@@ -342,8 +338,7 @@ IceProxy::Ice::Object::begin_ice_id(const Context* ctx,
try
{
__result->__prepare(ice_id_name, Nonmutating, ctx);
- IceInternal::BasicStream* __os = __result->__getOs();
- __os->endWriteEncaps();
+ __result->__writeEmptyParams();
__result->__send(true);
}
catch(const LocalException& __ex)
@@ -369,10 +364,9 @@ IceProxy::Ice::Object::end_ice_id(const AsyncResultPtr& __result)
}
}
string __ret;
- IceInternal::BasicStream* __is = __result->__getIs();
- __is->startReadEncaps();
+ IceInternal::BasicStream* __is = __result->__startReadParams();
__is->read(__ret);
- __is->endReadEncaps();
+ __result->__endReadParams();
return __ret;
}
@@ -474,11 +468,10 @@ IceProxy::Ice::Object::end_ice_invoke(vector<Byte>& outParams, const AsyncResult
bool ok = __result->__wait();
if(_reference->getMode() == Reference::ModeTwoway)
{
- IceInternal::BasicStream* __is = __result->__getIs();
- __is->startReadEncaps();
- Int sz = __is->getReadEncapsSize();
- __is->readBlob(outParams, sz);
- __is->endReadEncaps();
+ const Byte* v;
+ Int sz;
+ __result->__readParamEncaps(v, sz);
+ vector<Byte>(v, v + sz).swap(outParams);
}
return ok;
}
@@ -579,9 +572,7 @@ IceProxy::Ice::Object::begin_ice_invoke(const string& operation,
try
{
__result->__prepare(operation, mode, ctx);
- BasicStream* __os = __result->__getOs();
- __os->writeBlob(inParams.first, static_cast<Int>(inParams.second - inParams.first));
- __os->endWriteEncaps();
+ __result->__writeParamEncaps(inParams.first, static_cast<Int>(inParams.second - inParams.first));
__result->__send(true);
}
catch(const LocalException& __ex)
@@ -598,12 +589,9 @@ IceProxy::Ice::Object::___end_ice_invoke(pair<const Byte*, const Byte*>& outPara
bool ok = __result->__wait();
if(_reference->getMode() == Reference::ModeTwoway)
{
- IceInternal::BasicStream* __is = __result->__getIs();
- __is->startReadEncaps();
- Int sz = __is->getReadEncapsSize();
- __is->readBlob(outParams.first, sz);
+ Int sz;
+ __result->__readParamEncaps(outParams.first, sz);
outParams.second = outParams.first + sz;
- __is->endReadEncaps();
}
return ok;
}
@@ -806,6 +794,28 @@ IceProxy::Ice::Object::ice_secure(bool b) const
}
}
+::Ice::EncodingVersion
+IceProxy::Ice::Object::ice_getEncodingVersion() const
+{
+ return _reference->getEncoding();
+}
+
+ObjectPrx
+IceProxy::Ice::Object::ice_encodingVersion(const ::Ice::EncodingVersion& encoding) const
+{
+ if(encoding == _reference->getEncoding())
+ {
+ return ObjectPrx(const_cast< ::IceProxy::Ice::Object*>(this));
+ }
+ else
+ {
+ checkSupportedEncoding(encoding);
+ ObjectPrx proxy = __newInstance();
+ proxy->setup(_reference->changeEncoding(encoding));
+ return proxy;
+ }
+}
+
bool
IceProxy::Ice::Object::ice_isPreferSecure() const
{
@@ -1337,8 +1347,7 @@ IceProxy::Ice::Object::__end(const ::Ice::AsyncResultPtr& __result, const std::s
throw UnknownUserException(__FILE__, __LINE__, __ex.ice_name());
}
}
- IceInternal::BasicStream* __is = __result->__getIs();
- __is->skipEmptyEncaps();
+ __result->__readEmptyParams();
}
}
@@ -1452,8 +1461,9 @@ 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.os();
+ BasicStream* __os = __og.startWriteParams();
__os->write(__id, false);
+ __og.endWriteParams();
}
catch(const ::Ice::LocalException& __ex)
{
@@ -1474,10 +1484,9 @@ IceDelegateM::Ice::Object::ice_isA(const string& __id, const Context* context)
throw ::Ice::UnknownUserException(__FILE__, __LINE__, __ex.ice_name());
}
}
- BasicStream* __is = __og.is();
- __is->startReadEncaps();
+ BasicStream* __is = __og.startReadParams();
__is->read(__ret);
- __is->endReadEncaps();
+ __og.endReadParams();
}
catch(const ::Ice::LocalException& __ex)
{
@@ -1490,8 +1499,9 @@ void
IceDelegateM::Ice::Object::ice_ping(const Context* context)
{
Outgoing __og(__handler.get(), ice_ping_name, ::Ice::Nonmutating, context);
+ __og.writeEmptyParams();
bool __ok = __og.invoke();
- if(!__og.is()->b.empty())
+ if(__og.hasResponse())
{
try
{
@@ -1506,7 +1516,7 @@ IceDelegateM::Ice::Object::ice_ping(const Context* context)
throw ::Ice::UnknownUserException(__FILE__, __LINE__, __ex.ice_name());
}
}
- __og.is()->skipEmptyEncaps();
+ __og.readEmptyParams();
}
catch(const ::Ice::LocalException& __ex)
{
@@ -1519,6 +1529,7 @@ vector<string>
IceDelegateM::Ice::Object::ice_ids(const Context* context)
{
Outgoing __og(__handler.get(), ice_ids_name, ::Ice::Nonmutating, context);
+ __og.writeEmptyParams();
vector<string> __ret;
bool __ok = __og.invoke();
try
@@ -1534,10 +1545,9 @@ IceDelegateM::Ice::Object::ice_ids(const Context* context)
throw ::Ice::UnknownUserException(__FILE__, __LINE__, __ex.ice_name());
}
}
- BasicStream* __is = __og.is();
- __is->startReadEncaps();
+ BasicStream* __is = __og.startReadParams();
__is->read(__ret, false);
- __is->endReadEncaps();
+ __og.endReadParams();
}
catch(const ::Ice::LocalException& __ex)
{
@@ -1550,6 +1560,7 @@ string
IceDelegateM::Ice::Object::ice_id(const Context* context)
{
Outgoing __og(__handler.get(), ice_id_name, ::Ice::Nonmutating, context);
+ __og.writeEmptyParams();
string __ret;
bool __ok = __og.invoke();
try
@@ -1565,10 +1576,9 @@ IceDelegateM::Ice::Object::ice_id(const Context* context)
throw ::Ice::UnknownUserException(__FILE__, __LINE__, __ex.ice_name());
}
}
- BasicStream* __is = __og.is();
- __is->startReadEncaps();
+ BasicStream* __is = __og.startReadParams();
__is->read(__ret, false);
- __is->endReadEncaps();
+ __og.endReadParams();
}
catch(const ::Ice::LocalException& __ex)
{
@@ -1587,8 +1597,7 @@ IceDelegateM::Ice::Object::ice_invoke(const string& operation,
Outgoing __og(__handler.get(), operation, mode, context);
try
{
- BasicStream* __os = __og.os();
- __os->writeBlob(inParams.first, static_cast<Int>(inParams.second - inParams.first));
+ __og.writeParamEncaps(inParams.first, static_cast<Int>(inParams.second - inParams.first));
}
catch(const ::Ice::LocalException& __ex)
{
@@ -1599,11 +1608,10 @@ IceDelegateM::Ice::Object::ice_invoke(const string& operation,
{
try
{
- BasicStream* __is = __og.is();
- __is->startReadEncaps();
- Int sz = __is->getReadEncapsSize();
- __is->readBlob(outParams, sz);
- __is->endReadEncaps();
+ const Byte* v;
+ Int sz;
+ __og.readParamEncaps(v, sz);
+ vector<Byte>(v, v + sz).swap(outParams);
}
catch(const ::Ice::LocalException& __ex)
{
@@ -1993,9 +2001,7 @@ IceDelegateD::Ice::Object::__initCurrent(Current& current, const string& op, Ope
//
// Implicit context
//
- const ImplicitContextIPtr& implicitContext =
- __reference->getInstance()->getImplicitContext();
-
+ const ImplicitContextIPtr& implicitContext = __reference->getInstance()->getImplicitContext();
const Context& prxContext = __reference->getContext()->getValue();
if(implicitContext == 0)