summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Proxy.cpp
diff options
context:
space:
mode:
authorMarc Laukien <marc@zeroc.com>2001-11-25 15:34:03 +0000
committerMarc Laukien <marc@zeroc.com>2001-11-25 15:34:03 +0000
commit93944cf8efcde3080f79088c78d97ff9ea3e6f15 (patch)
treeed06cf02478b01816796ba27ee216f5b56f81470 /cpp/src/Ice/Proxy.cpp
parentfix (diff)
downloadice-93944cf8efcde3080f79088c78d97ff9ea3e6f15.tar.bz2
ice-93944cf8efcde3080f79088c78d97ff9ea3e6f15.tar.xz
ice-93944cf8efcde3080f79088c78d97ff9ea3e6f15.zip
Blobject
Diffstat (limited to 'cpp/src/Ice/Proxy.cpp')
-rw-r--r--cpp/src/Ice/Proxy.cpp73
1 files changed, 73 insertions, 0 deletions
diff --git a/cpp/src/Ice/Proxy.cpp b/cpp/src/Ice/Proxy.cpp
index b66ebf512b5..82a47527713 100644
--- a/cpp/src/Ice/Proxy.cpp
+++ b/cpp/src/Ice/Proxy.cpp
@@ -150,6 +150,40 @@ IceProxy::Ice::Object::ice_ping()
}
}
+void
+IceProxy::Ice::Object::ice_invokeIn(const string& operation, bool nonmutating, const vector<Byte>& inParams)
+{
+ int __cnt = 0;
+ while (true)
+ {
+ try
+ {
+ Handle< ::IceDelegate::Ice::Object> __del = __getDelegate();
+ __del->ice_invokeIn(operation, inParams);
+ return;
+ }
+ catch (const LocationForward& __ex)
+ {
+ __locationForward(__ex);
+ }
+ catch (const NonRepeatable& __ex)
+ {
+ if (nonmutating)
+ {
+ __handleException(*__ex.get(), __cnt);
+ }
+ else
+ {
+ __rethrowException(*__ex.get());
+ }
+ }
+ catch (const LocalException& __ex)
+ {
+ __handleException(__ex, __cnt);
+ }
+ }
+}
+
std::string
IceProxy::Ice::Object::ice_getIdentity() const
{
@@ -498,6 +532,18 @@ IceDelegateM::Ice::Object::ice_ping()
}
void
+IceDelegateM::Ice::Object::ice_invokeIn(const string& operation, const vector<Byte>& inParams)
+{
+ Outgoing __out(__emitter, __reference, operation.c_str());
+ BasicStream* __os = __out.os();
+ __os->write(inParams);
+ if (!__out.invoke())
+ {
+ throw ::Ice::UnknownUserException(__FILE__, __LINE__);
+ }
+}
+
+void
IceDelegateM::Ice::Object::ice_flush()
{
__emitter->flushBatchRequest();
@@ -571,6 +617,33 @@ IceDelegateD::Ice::Object::ice_ping()
}
void
+IceDelegateD::Ice::Object::ice_invokeIn(const string& operation, const vector<Byte>& inParams)
+{
+ ::IceInternal::Direct __direct(__adapter, __reference, operation.c_str());
+ ::Ice::Blobject* __servant = dynamic_cast< ::Ice::Blobject*>(__direct.facetServant().get());
+ if (!__servant)
+ {
+ throw ::Ice::OperationNotExistException(__FILE__, __LINE__);
+ }
+ try
+ {
+ __servant->ice_invokeIn(__reference->identity, __reference->facet, operation, inParams);
+ }
+ catch (const ::Ice::LocalException&)
+ {
+ throw ::Ice::UnknownLocalException(__FILE__, __LINE__);
+ }
+ catch (const ::Ice::UserException&)
+ {
+ throw ::Ice::UnknownUserException(__FILE__, __LINE__);
+ }
+ catch (...)
+ {
+ throw ::Ice::UnknownException(__FILE__, __LINE__);
+ }
+}
+
+void
IceDelegateD::Ice::Object::ice_flush()
{
// Nothing to do for direct delegates