summaryrefslogtreecommitdiff
path: root/cppe/src
diff options
context:
space:
mode:
Diffstat (limited to 'cppe/src')
-rw-r--r--cppe/src/IceE/Instance.cpp11
-rw-r--r--cppe/src/IceE/Instance.h2
-rw-r--r--cppe/src/IceE/Proxy.cpp18
-rw-r--r--cppe/src/IceE/Reference.cpp6
-rw-r--r--cppe/src/IceE/Reference.h2
5 files changed, 34 insertions, 5 deletions
diff --git a/cppe/src/IceE/Instance.cpp b/cppe/src/IceE/Instance.cpp
index 4c53df751a2..3b70ed648a6 100644
--- a/cppe/src/IceE/Instance.cpp
+++ b/cppe/src/IceE/Instance.cpp
@@ -33,8 +33,8 @@
#include <stdio.h>
-#ifdef _WIN32
-# include <winsock2.h>
+#ifdef _WIN32
+# include <winsock2.h>
#else
# include <signal.h>
# include <pwd.h>
@@ -60,6 +60,12 @@ extern bool ICEE_API nullHandleAbort;
void IceInternal::incRef(Instance* p) { p->__incRef(); }
void IceInternal::decRef(Instance* p) { p->__decRef(); }
+CommunicatorPtr
+IceInternal::Instance::communicator() const
+{
+ return _communicator;
+}
+
PropertiesPtr
IceInternal::Instance::properties() const
{
@@ -266,6 +272,7 @@ IceInternal::Instance::getDefaultContext() const
}
IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const PropertiesPtr& properties) :
+ _communicator(communicator.get()),
_destroyed(false),
_properties(properties),
_messageSizeMax(0),
diff --git a/cppe/src/IceE/Instance.h b/cppe/src/IceE/Instance.h
index 3c0530479e2..ed61cc4b084 100644
--- a/cppe/src/IceE/Instance.h
+++ b/cppe/src/IceE/Instance.h
@@ -42,6 +42,7 @@ class Instance : public IceUtil::Shared, public IceUtil::RecMutex
{
public:
+ Ice::CommunicatorPtr communicator() const;
Ice::PropertiesPtr properties() const;
Ice::LoggerPtr logger() const;
void logger(const Ice::LoggerPtr&);
@@ -78,6 +79,7 @@ private:
void destroy();
friend class Ice::Communicator;
+ Ice::Communicator* _communicator; // Not a Ptr, to avoid having Instance and CommunicatorI point at each other.
bool _destroyed;
const Ice::PropertiesPtr _properties; // Immutable, not reset by destroy().
Ice::LoggerPtr _logger; // Not reset by destroy().
diff --git a/cppe/src/IceE/Proxy.cpp b/cppe/src/IceE/Proxy.cpp
index c2cf22025d3..974c9ac31a9 100644
--- a/cppe/src/IceE/Proxy.cpp
+++ b/cppe/src/IceE/Proxy.cpp
@@ -14,9 +14,9 @@
#include <IceE/Instance.h>
#include <IceE/BasicStream.h>
#include <IceE/LocalExceptions.h>
-#ifdef ICEE_HAS_ROUTER
-# include <IceE/RouterInfo.h>
-#endif
+#ifdef ICEE_HAS_ROUTER
+# include <IceE/RouterInfo.h>
+#endif
using namespace std;
using namespace Ice;
@@ -146,6 +146,18 @@ IceProxy::Ice::Object::ice_hash() const
return _reference->hash();
}
+CommunicatorPtr
+IceProxy::Ice::Object::ice_communicator() const
+{
+ return _reference->getCommunicator();
+}
+
+string
+IceProxy::Ice::Object::ice_toString() const
+{
+ return _reference->toString();
+}
+
bool
IceProxy::Ice::Object::ice_isA(const string& __id)
{
diff --git a/cppe/src/IceE/Reference.cpp b/cppe/src/IceE/Reference.cpp
index 307b5dca782..9e8f75e919c 100644
--- a/cppe/src/IceE/Reference.cpp
+++ b/cppe/src/IceE/Reference.cpp
@@ -55,6 +55,12 @@ IceInternal::Reference::defaultContext() const
return r;
}
+CommunicatorPtr
+IceInternal::Reference::getCommunicator() const
+{
+ return _instance->communicator();
+}
+
ReferencePtr
IceInternal::Reference::changeContext(const Context& newContext) const
{
diff --git a/cppe/src/IceE/Reference.h b/cppe/src/IceE/Reference.h
index 7308f6ccb7b..9de7ea628e2 100644
--- a/cppe/src/IceE/Reference.h
+++ b/cppe/src/IceE/Reference.h
@@ -53,6 +53,8 @@ public:
ReferencePtr defaultContext() const;
+ Ice::CommunicatorPtr getCommunicator() const;
+
virtual std::vector<EndpointPtr> getEndpoints() const = 0;
//