diff options
Diffstat (limited to 'cpp/src/Ice/Proxy.cpp')
-rw-r--r-- | cpp/src/Ice/Proxy.cpp | 178 |
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) |