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.cpp64
1 files changed, 61 insertions, 3 deletions
diff --git a/cpp/src/Ice/Proxy.cpp b/cpp/src/Ice/Proxy.cpp
index 253f5909657..37951c6a898 100644
--- a/cpp/src/Ice/Proxy.cpp
+++ b/cpp/src/Ice/Proxy.cpp
@@ -277,6 +277,35 @@ IceProxy::Ice::Object::ice_invoke(const string& operation,
vector<Byte>& outParams,
const Context& context)
{
+ pair<const Byte*, const Byte*> inPair;
+ if(inParams.size() == 0)
+ {
+ inPair.first = inPair.second = 0;
+ }
+ else
+ {
+ inPair.first = &inParams[0];
+ inPair.second = inPair.first + inParams.size();
+ }
+ return ice_invoke(operation, mode, inPair, outParams, context);
+}
+
+bool
+IceProxy::Ice::Object::ice_invoke(const string& operation,
+ OperationMode mode,
+ const pair<const Byte*, const Byte*>& inParams,
+ vector<Byte>& outParams)
+{
+ return ice_invoke(operation, mode, inParams, outParams, _reference->getContext());
+}
+
+bool
+IceProxy::Ice::Object::ice_invoke(const string& operation,
+ OperationMode mode,
+ const pair<const Byte*, const Byte*>& inParams,
+ vector<Byte>& outParams,
+ const Context& context)
+{
int __cnt = 0;
while(true)
{
@@ -320,6 +349,35 @@ IceProxy::Ice::Object::ice_invoke_async(const AMI_Object_ice_invokePtr& cb,
const vector<Byte>& inParams,
const Context& context)
{
+ pair<const Byte*, const Byte*> inPair;
+ if(inParams.size() == 0)
+ {
+ inPair.first = inPair.second = 0;
+ }
+ else
+ {
+ inPair.first = &inParams[0];
+ inPair.second = inPair.first + inParams.size();
+ }
+ ice_invoke_async(cb, operation, mode, inPair, context);
+}
+
+void
+IceProxy::Ice::Object::ice_invoke_async(const AMI_Object_ice_invokePtr& cb,
+ const string& operation,
+ OperationMode mode,
+ const pair<const Byte*, const Byte*>& inParams)
+{
+ ice_invoke_async(cb, operation, mode, inParams, _reference->getContext());
+}
+
+void
+IceProxy::Ice::Object::ice_invoke_async(const AMI_Object_ice_invokePtr& cb,
+ const string& operation,
+ OperationMode mode,
+ const pair<const Byte*, const Byte*>& inParams,
+ const Context& context)
+{
cb->__invoke(this, operation, mode, inParams, context);
}
@@ -1114,7 +1172,7 @@ IceDelegateM::Ice::Object::ice_id(const Context& __context)
bool
IceDelegateM::Ice::Object::ice_invoke(const string& operation,
OperationMode mode,
- const vector<Byte>& inParams,
+ const pair<const Byte*, const Byte*>& inParams,
vector<Byte>& outParams,
const Context& context)
{
@@ -1122,7 +1180,7 @@ IceDelegateM::Ice::Object::ice_invoke(const string& operation,
try
{
BasicStream* __os = __og.os();
- __os->writeBlob(inParams);
+ __os->writeBlob(inParams.first, static_cast<Int>(inParams.second - inParams.first));
}
catch(const ::Ice::LocalException& __ex)
{
@@ -1243,7 +1301,7 @@ IceDelegateD::Ice::Object::ice_id(const ::Ice::Context& __context)
bool
IceDelegateD::Ice::Object::ice_invoke(const string&,
OperationMode,
- const vector<Byte>&,
+ const pair<const Byte*, const Byte*>& inParams,
vector<Byte>&,
const Context&)
{