summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Proxy.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/Proxy.cpp')
-rw-r--r--cpp/src/Ice/Proxy.cpp178
1 files changed, 88 insertions, 90 deletions
diff --git a/cpp/src/Ice/Proxy.cpp b/cpp/src/Ice/Proxy.cpp
index 8da6c511ee5..ecf1bfbde1d 100644
--- a/cpp/src/Ice/Proxy.cpp
+++ b/cpp/src/Ice/Proxy.cpp
@@ -47,14 +47,6 @@ const string ice_flushBatchRequests_name = "ice_flushBatchRequests";
::Ice::ObjectPrx
IceInternal::checkedCastImpl(const ObjectPrx& b, const string& f, const string& typeId, const Context* context)
{
-//
-// COMPILERBUG: Without this work-around, release VC7.0 and VC7.1
-// build crash when FacetNotExistException is raised
-//
-#if defined(_MSC_VER) && (_MSC_VER >= 1300) && (_MSC_VER <= 1310)
- ObjectPrx fooBar;
-#endif
-
if(b)
{
ObjectPrx bb = b->ice_facet(f);
@@ -155,9 +147,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(DefaultFormat);
__os->write(typeId);
- __os->endWriteEncaps();
+ __result->__endWriteParams();
__result->__send(true);
}
catch(const LocalException& __ex)
@@ -183,10 +175,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 +214,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 +288,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 +314,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 +330,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,31 +356,30 @@ 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;
}
bool
IceProxy::Ice::Object::ice_invoke(const string& operation,
OperationMode mode,
- const vector<Byte>& inParams,
- vector<Byte>& outParams,
+ const vector<Byte>& inEncaps,
+ vector<Byte>& outEncaps,
const Context* context)
{
pair<const Byte*, const Byte*> inPair;
- if(inParams.size() == 0)
+ if(inEncaps.empty())
{
inPair.first = inPair.second = 0;
}
else
{
- inPair.first = &inParams[0];
- inPair.second = inPair.first + inParams.size();
+ inPair.first = &inEncaps[0];
+ inPair.second = inPair.first + inEncaps.size();
}
- return ice_invoke(operation, mode, inPair, outParams, context);
+ return ice_invoke(operation, mode, inPair, outEncaps, context);
}
@@ -401,7 +387,7 @@ bool
IceProxy::Ice::Object::ice_invoke_async(const AMI_Object_ice_invokePtr& cb,
const string& operation,
OperationMode mode,
- const vector<Byte>& inParams)
+ const vector<Byte>& inEncaps)
{
Callback_Object_ice_invokePtr del;
if(dynamic_cast< ::Ice::AMISentCallback*>(cb.get()))
@@ -417,7 +403,7 @@ IceProxy::Ice::Object::ice_invoke_async(const AMI_Object_ice_invokePtr& cb,
&AMI_Object_ice_invoke::__response,
&AMI_Object_ice_invoke::__exception);
}
- ::Ice::AsyncResultPtr result = begin_ice_invoke(operation, mode, inParams, del);
+ ::Ice::AsyncResultPtr result = begin_ice_invoke(operation, mode, inEncaps, del);
return result->sentSynchronously();
}
@@ -425,7 +411,7 @@ bool
IceProxy::Ice::Object::ice_invoke_async(const AMI_Object_ice_invokePtr& cb,
const string& operation,
OperationMode mode,
- const vector<Byte>& inParams,
+ const vector<Byte>& inEncaps,
const Context& context)
{
Callback_Object_ice_invokePtr del;
@@ -442,43 +428,42 @@ IceProxy::Ice::Object::ice_invoke_async(const AMI_Object_ice_invokePtr& cb,
&AMI_Object_ice_invoke::__response,
&AMI_Object_ice_invoke::__exception);
}
- ::Ice::AsyncResultPtr result = begin_ice_invoke(operation, mode, inParams, context, del);
+ ::Ice::AsyncResultPtr result = begin_ice_invoke(operation, mode, inEncaps, context, del);
return result->sentSynchronously();
}
AsyncResultPtr
IceProxy::Ice::Object::begin_ice_invoke(const string& operation,
OperationMode mode,
- const vector<Byte>& inParams,
+ const vector<Byte>& inEncaps,
const Context* ctx,
const ::IceInternal::CallbackBasePtr& del,
const ::Ice::LocalObjectPtr& cookie)
{
pair<const Byte*, const Byte*> inPair;
- if(inParams.size() == 0)
+ if(inEncaps.empty())
{
inPair.first = inPair.second = 0;
}
else
{
- inPair.first = &inParams[0];
- inPair.second = inPair.first + inParams.size();
+ inPair.first = &inEncaps[0];
+ inPair.second = inPair.first + inEncaps.size();
}
return begin_ice_invoke(operation, mode, inPair, ctx, del, cookie);
}
bool
-IceProxy::Ice::Object::end_ice_invoke(vector<Byte>& outParams, const AsyncResultPtr& __result)
+IceProxy::Ice::Object::end_ice_invoke(vector<Byte>& outEncaps, const AsyncResultPtr& __result)
{
AsyncResult::__check(__result, this, ice_invoke_name);
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(outEncaps);
}
return ok;
}
@@ -486,8 +471,8 @@ IceProxy::Ice::Object::end_ice_invoke(vector<Byte>& outParams, const AsyncResult
bool
IceProxy::Ice::Object::ice_invoke(const string& operation,
OperationMode mode,
- const pair<const Byte*, const Byte*>& inParams,
- vector<Byte>& outParams,
+ const pair<const Byte*, const Byte*>& inEncaps,
+ vector<Byte>& outEncaps,
const Context* context)
{
int __cnt = 0;
@@ -497,7 +482,7 @@ IceProxy::Ice::Object::ice_invoke(const string& operation,
try
{
__del = __getDelegate(false);
- return __del->ice_invoke(operation, mode, inParams, outParams, context);
+ return __del->ice_invoke(operation, mode, inEncaps, outEncaps, context);
}
catch(const LocalExceptionWrapper& __ex)
{
@@ -522,7 +507,7 @@ bool
IceProxy::Ice::Object::ice_invoke_async(const AMI_Array_Object_ice_invokePtr& cb,
const string& operation,
OperationMode mode,
- const pair<const Byte*, const Byte*>& inParams)
+ const pair<const Byte*, const Byte*>& inEncaps)
{
Callback_Object_ice_invokePtr del;
if(dynamic_cast< ::Ice::AMISentCallback*>(cb.get()))
@@ -538,7 +523,7 @@ IceProxy::Ice::Object::ice_invoke_async(const AMI_Array_Object_ice_invokePtr& cb
&AMI_Array_Object_ice_invoke::__response,
&AMI_Array_Object_ice_invoke::__exception);
}
- ::Ice::AsyncResultPtr result = begin_ice_invoke(operation, mode, inParams, del);
+ ::Ice::AsyncResultPtr result = begin_ice_invoke(operation, mode, inEncaps, del);
return result->sentSynchronously();
}
@@ -546,7 +531,7 @@ bool
IceProxy::Ice::Object::ice_invoke_async(const AMI_Array_Object_ice_invokePtr& cb,
const string& operation,
OperationMode mode,
- const pair<const Byte*, const Byte*>& inParams,
+ const pair<const Byte*, const Byte*>& inEncaps,
const Context& context)
{
Callback_Object_ice_invokePtr del;
@@ -563,14 +548,14 @@ IceProxy::Ice::Object::ice_invoke_async(const AMI_Array_Object_ice_invokePtr& cb
&AMI_Array_Object_ice_invoke::__response,
&AMI_Array_Object_ice_invoke::__exception);
}
- ::Ice::AsyncResultPtr result = begin_ice_invoke(operation, mode, inParams, context, del);
+ ::Ice::AsyncResultPtr result = begin_ice_invoke(operation, mode, inEncaps, context, del);
return result->sentSynchronously();
}
AsyncResultPtr
IceProxy::Ice::Object::begin_ice_invoke(const string& operation,
OperationMode mode,
- const pair<const Byte*, const Byte*>& inParams,
+ const pair<const Byte*, const Byte*>& inEncaps,
const Context* ctx,
const ::IceInternal::CallbackBasePtr& del,
const ::Ice::LocalObjectPtr& cookie)
@@ -579,9 +564,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(inEncaps.first, static_cast<Int>(inEncaps.second - inEncaps.first));
__result->__send(true);
}
catch(const LocalException& __ex)
@@ -592,18 +575,15 @@ IceProxy::Ice::Object::begin_ice_invoke(const string& operation,
}
bool
-IceProxy::Ice::Object::___end_ice_invoke(pair<const Byte*, const Byte*>& outParams, const AsyncResultPtr& __result)
+IceProxy::Ice::Object::___end_ice_invoke(pair<const Byte*, const Byte*>& outEncaps, const AsyncResultPtr& __result)
{
AsyncResult::__check(__result, this, ice_invoke_name);
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);
- outParams.second = outParams.first + sz;
- __is->endReadEncaps();
+ Int sz;
+ __result->__readParamEncaps(outEncaps.first, sz);
+ outEncaps.second = outEncaps.first + sz;
}
return ok;
}
@@ -806,6 +786,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 +1339,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 +1453,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(DefaultFormat);
__os->write(__id, false);
+ __og.endWriteParams();
}
catch(const ::Ice::LocalException& __ex)
{
@@ -1474,10 +1476,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 +1491,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 +1508,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 +1521,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 +1537,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 +1552,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 +1568,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)
{
@@ -1580,15 +1582,14 @@ IceDelegateM::Ice::Object::ice_id(const Context* context)
bool
IceDelegateM::Ice::Object::ice_invoke(const string& operation,
OperationMode mode,
- const pair<const Byte*, const Byte*>& inParams,
- vector<Byte>& outParams,
+ const pair<const Byte*, const Byte*>& inEncaps,
+ vector<Byte>& outEncaps,
const Context* context)
{
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(inEncaps.first, static_cast<Int>(inEncaps.second - inEncaps.first));
}
catch(const ::Ice::LocalException& __ex)
{
@@ -1599,11 +1600,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(outEncaps);
}
catch(const ::Ice::LocalException& __ex)
{
@@ -1925,7 +1925,7 @@ IceDelegateD::Ice::Object::ice_id(const ::Ice::Context* context)
bool
IceDelegateD::Ice::Object::ice_invoke(const string&,
OperationMode,
- const pair<const Byte*, const Byte*>& inParams,
+ const pair<const Byte*, const Byte*>& inEncaps,
vector<Byte>&,
const Context*)
{
@@ -1993,9 +1993,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)