diff options
Diffstat (limited to 'cpp/test/Ice/invoke/BlobjectI.cpp')
-rw-r--r-- | cpp/test/Ice/invoke/BlobjectI.cpp | 95 |
1 files changed, 67 insertions, 28 deletions
diff --git a/cpp/test/Ice/invoke/BlobjectI.cpp b/cpp/test/Ice/invoke/BlobjectI.cpp index ba1c9deb52a..2f65a4f3621 100644 --- a/cpp/test/Ice/invoke/BlobjectI.cpp +++ b/cpp/test/Ice/invoke/BlobjectI.cpp @@ -15,11 +15,11 @@ using namespace std; bool -invokeInternal(const Ice::InputStreamPtr& in, vector<Ice::Byte>& outEncaps, const Ice::Current& current) +invokeInternal(Ice::InputStream& in, vector<Ice::Byte>& outEncaps, const Ice::Current& current) { Ice::CommunicatorPtr communicator = current.adapter->getCommunicator(); - Ice::OutputStreamPtr out = Ice::createOutputStream(communicator); - out->startEncapsulation(); + Ice::OutputStream out(communicator); + out.startEncapsulation(); if(current.operation == "opOneway") { return true; @@ -27,46 +27,50 @@ invokeInternal(const Ice::InputStreamPtr& in, vector<Ice::Byte>& outEncaps, cons else if(current.operation == "opString") { string s; - in->startEncapsulation(); - in->read(s); - in->endEncapsulation(); - out->write(s); - out->write(s); - out->endEncapsulation(); - out->finished(outEncaps); + in.startEncapsulation(); + in.read(s); + in.endEncapsulation(); + out.write(s); + out.write(s); + out.endEncapsulation(); + out.finished(outEncaps); return true; } else if(current.operation == "opException") { + if(current.ctx.find("raise") != current.ctx.end()) + { + throw Test::MyException(); + } Test::MyException ex; - out->writeException(ex); - out->endEncapsulation(); - out->finished(outEncaps); + out.writeException(ex); + out.endEncapsulation(); + out.finished(outEncaps); return false; } else if(current.operation == "shutdown") { - out->endEncapsulation(); - out->finished(outEncaps); + out.endEncapsulation(); + out.finished(outEncaps); communicator->shutdown(); return true; } else if(current.operation == "ice_isA") { string s; - in->startEncapsulation(); - in->read(s); - in->endEncapsulation(); + in.startEncapsulation(); + in.read(s); + in.endEncapsulation(); if(s == "::Test::MyClass") { - out->write(true); + out.write(true); } else { - out->write(false); + out.write(false); } - out->endEncapsulation(); - out->finished(outEncaps); + out.endEncapsulation(); + out.finished(outEncaps); return true; } else @@ -82,24 +86,58 @@ invokeInternal(const Ice::InputStreamPtr& in, vector<Ice::Byte>& outEncaps, cons bool BlobjectI::ice_invoke(const vector<Ice::Byte>& inEncaps, vector<Ice::Byte>& outEncaps, const Ice::Current& current) { - Ice::InputStreamPtr in = Ice::createInputStream(current.adapter->getCommunicator(), inEncaps); + Ice::InputStream in(current.adapter->getCommunicator(), current.encoding, inEncaps); return invokeInternal(in, outEncaps, current); } bool BlobjectArrayI::ice_invoke(const pair<const Ice::Byte*, const Ice::Byte*>& inEncaps, vector<Ice::Byte>& outEncaps, - const Ice::Current& current) + const Ice::Current& current) { - Ice::InputStreamPtr in = Ice::createInputStream(current.adapter->getCommunicator(), inEncaps); + Ice::InputStream in(current.adapter->getCommunicator(), current.encoding, inEncaps); return invokeInternal(in, outEncaps, current); } +#ifdef ICE_CPP11_MAPPING +void +BlobjectAsyncI::ice_invokeAsync(vector<Ice::Byte> inEncaps, + function<void(bool, vector<Ice::Byte>)> response, + function<void(exception_ptr)>, + const Ice::Current& current) +{ + Ice::InputStream in(current.adapter->getCommunicator(), inEncaps); + vector<Ice::Byte> outEncaps; + bool ok = invokeInternal(in, outEncaps, current); + response(ok, move(outEncaps)); +} void -BlobjectAsyncI::ice_invoke_async(const Ice::AMD_Object_ice_invokePtr& cb, const vector<Ice::Byte>& inEncaps, +BlobjectArrayAsyncI::ice_invokeAsync(pair<const Ice::Byte*, const Ice::Byte*> inEncaps, + function<void(bool, pair<const Ice::Byte*, const Ice::Byte*>)> response, + function<void(exception_ptr)>, + const Ice::Current& current) +{ + Ice::InputStream in(current.adapter->getCommunicator(), inEncaps); + vector<Ice::Byte> outEncaps; + bool ok = invokeInternal(in, outEncaps, current); +#if (defined(_MSC_VER) && (_MSC_VER >= 1600)) + pair<const Ice::Byte*, const Ice::Byte*> outPair(static_cast<const Ice::Byte*>(nullptr), static_cast<const Ice::Byte*>(nullptr)); +#else + pair<const Ice::Byte*, const Ice::Byte*> outPair(0, 0); +#endif + if(outEncaps.size() != 0) + { + outPair.first = &outEncaps[0]; + outPair.second = &outEncaps[0] + outEncaps.size(); + } + response(ok, move(outPair)); +} +#else +void +BlobjectAsyncI::ice_invoke_async(const Ice::AMD_Object_ice_invokePtr& cb, const vector<Ice::Byte>& inEncaps, const Ice::Current& current) { - Ice::InputStreamPtr in = Ice::createInputStream(current.adapter->getCommunicator(), inEncaps); + Ice::InputStream in(current.adapter->getCommunicator(), current.encoding, inEncaps); vector<Ice::Byte> outEncaps; bool ok = invokeInternal(in, outEncaps, current); cb->ice_response(ok, outEncaps); @@ -110,7 +148,7 @@ BlobjectArrayAsyncI::ice_invoke_async(const Ice::AMD_Object_ice_invokePtr& cb, const pair<const Ice::Byte*, const Ice::Byte*>& inEncaps, const Ice::Current& current) { - Ice::InputStreamPtr in = Ice::createInputStream(current.adapter->getCommunicator(), inEncaps); + Ice::InputStream in(current.adapter->getCommunicator(), current.encoding, inEncaps); vector<Ice::Byte> outEncaps; bool ok = invokeInternal(in, outEncaps, current); #if (defined(_MSC_VER) && (_MSC_VER >= 1600)) @@ -125,3 +163,4 @@ BlobjectArrayAsyncI::ice_invoke_async(const Ice::AMD_Object_ice_invokePtr& cb, } cb->ice_response(ok, outPair); } +#endif |