summaryrefslogtreecommitdiff
path: root/cppe/src
diff options
context:
space:
mode:
Diffstat (limited to 'cppe/src')
-rwxr-xr-xcppe/src/IceE/Communicator.cpp8
-rwxr-xr-xcppe/src/IceE/Connection.cpp2
-rw-r--r--cppe/src/IceE/Instance.cpp34
-rw-r--r--cppe/src/IceE/Instance.h6
-rw-r--r--cppe/src/IceE/ObjectAdapter.cpp10
-rw-r--r--cppe/src/IceE/Proxy.cpp12
-rw-r--r--cppe/src/IceE/Reference.cpp26
-rw-r--r--cppe/src/IceE/Reference.h15
-rw-r--r--cppe/src/IceE/ReferenceFactory.cpp26
-rw-r--r--cppe/src/IceE/ReferenceFactory.h6
-rw-r--r--cppe/src/IceE/SharedContext.h47
11 files changed, 140 insertions, 52 deletions
diff --git a/cppe/src/IceE/Communicator.cpp b/cppe/src/IceE/Communicator.cpp
index e3089448f26..8f406a4f733 100755
--- a/cppe/src/IceE/Communicator.cpp
+++ b/cppe/src/IceE/Communicator.cpp
@@ -116,10 +116,16 @@ Ice::Communicator::createObjectAdapterWithRouter(const string& name, const Route
#endif
+void
+Ice::Communicator::setDefaultContext(const Context& ctx)
+{
+ _instance->setDefaultContext(ctx);
+}
+
Ice::Context
Ice::Communicator::getDefaultContext() const
{
- return _instance->initializationData().defaultContext;
+ return _instance->getDefaultContext()->getValue();
}
PropertiesPtr
diff --git a/cppe/src/IceE/Connection.cpp b/cppe/src/IceE/Connection.cpp
index 08b13996902..57f22775c0b 100755
--- a/cppe/src/IceE/Connection.cpp
+++ b/cppe/src/IceE/Connection.cpp
@@ -866,7 +866,7 @@ Ice::Connection::createProxy(const Identity& ident) const
//
vector<ConnectionPtr> connections;
connections.push_back(const_cast<Connection*>(this));
- ReferencePtr ref = _instance->referenceFactory()->create(ident, _instance->initializationData().defaultContext, "",
+ ReferencePtr ref = _instance->referenceFactory()->create(ident, _instance->getDefaultContext(), "",
Reference::ModeTwoway, connections);
return _instance->proxyFactory()->referenceToProxy(ref);
}
diff --git a/cppe/src/IceE/Instance.cpp b/cppe/src/IceE/Instance.cpp
index 67dbb2750ba..5d7977c5fd0 100644
--- a/cppe/src/IceE/Instance.cpp
+++ b/cppe/src/IceE/Instance.cpp
@@ -222,6 +222,33 @@ IceInternal::Instance::flushBatchRequests()
}
#endif
+void
+IceInternal::Instance::setDefaultContext(const Context& ctx)
+{
+ IceUtil::RecMutex::Lock sync(*this);
+
+ if(_state == StateDestroyed)
+ {
+ throw CommunicatorDestroyedException(__FILE__, __LINE__);
+ }
+
+ _defaultContext = new SharedContext(ctx);
+}
+
+SharedContextPtr
+IceInternal::Instance::getDefaultContext() const
+{
+ IceUtil::RecMutex::Lock sync(*this);
+
+ if(_state == StateDestroyed)
+ {
+ throw CommunicatorDestroyedException(__FILE__, __LINE__);
+ }
+
+ return _defaultContext;
+}
+
+
Identity
IceInternal::Instance::stringToIdentity(const string& s) const
{
@@ -328,10 +355,11 @@ IceInternal::Instance::identityToString(const Identity& ident) const
IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const InitializationData& initData) :
_state(StateActive),
_initData(initData),
- _messageSizeMax(0)
+ _messageSizeMax(0),
#ifndef ICEE_PURE_BLOCKING_CLIENT
- , _threadPerConnectionStackSize(0)
+ _threadPerConnectionStackSize(0),
#endif
+ _defaultContext(new SharedContext(initData.defaultContext))
{
try
{
@@ -514,7 +542,7 @@ IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const Initi
if(!_initData.wstringConverter)
{
- const_cast<WstringConverterPtr&>(_initData.wstringConverter) = new UnicodeWstringConverter();
+ _initData.wstringConverter = new UnicodeWstringConverter();
}
__setNoDelete(false);
diff --git a/cppe/src/IceE/Instance.h b/cppe/src/IceE/Instance.h
index 0b40da1ed2e..bb278faa0ac 100644
--- a/cppe/src/IceE/Instance.h
+++ b/cppe/src/IceE/Instance.h
@@ -28,6 +28,7 @@
#include <IceE/Shared.h>
#include <IceE/RecMutex.h>
#include <IceE/Initialize.h>
+#include <IceE/SharedContext.h>
#include <IceE/Identity.h>
namespace IceInternal
@@ -56,6 +57,10 @@ public:
#ifdef ICEE_HAS_BATCH
void flushBatchRequests();
#endif
+
+ void setDefaultContext(const ::Ice::Context&);
+ SharedContextPtr getDefaultContext() const;
+
#ifndef ICEE_PURE_BLOCKING_CLIENT
size_t threadPerConnectionStackSize() const;
#endif
@@ -104,6 +109,7 @@ private:
#ifndef ICEE_PURE_CLIENT
ObjectAdapterFactoryPtr _objectAdapterFactory;
#endif
+ SharedContextPtr _defaultContext;
};
class UTF8BufferI : public Ice::UTF8Buffer
diff --git a/cppe/src/IceE/ObjectAdapter.cpp b/cppe/src/IceE/ObjectAdapter.cpp
index 012d5a16b52..e9b6a88e774 100644
--- a/cppe/src/IceE/ObjectAdapter.cpp
+++ b/cppe/src/IceE/ObjectAdapter.cpp
@@ -519,7 +519,7 @@ Ice::ObjectAdapter::createReverseProxy(const Identity& ident) const
// reference.
//
vector<EndpointPtr> endpoints;
- ReferencePtr ref = _instance->referenceFactory()->create(ident, _instance->initializationData().defaultContext, "",
+ ReferencePtr ref = _instance->referenceFactory()->create(ident, _instance->getDefaultContext(), "",
Reference::ModeTwoway, connections);
return _instance->proxyFactory()->referenceToProxy(ref);
}
@@ -775,10 +775,10 @@ Ice::ObjectAdapter::newDirectProxy(const Identity& ident, const string& facet) c
// Create a reference and return a proxy for this reference.
//
#ifdef ICEE_HAS_ROUTER
- ReferencePtr ref = _instance->referenceFactory()->create(ident, _instance->initializationData().defaultContext,
+ ReferencePtr ref = _instance->referenceFactory()->create(ident, _instance->getDefaultContext(),
facet, Reference::ModeTwoway, false, endpoints, 0);
#else
- ReferencePtr ref = _instance->referenceFactory()->create(ident, _instance->initializationData().defaultContext,
+ ReferencePtr ref = _instance->referenceFactory()->create(ident, _instance->getDefaultContext(),
facet, Reference::ModeTwoway, false, endpoints);
#endif
return _instance->proxyFactory()->referenceToProxy(ref);
@@ -793,11 +793,11 @@ Ice::ObjectAdapter::newIndirectProxy(const Identity& ident, const string& facet,
// Create a reference with the adapter id.
//
#ifdef ICEE_HAS_ROUTER
- ReferencePtr ref = _instance->referenceFactory()->create(ident, _instance->initializationData().defaultContext,
+ ReferencePtr ref = _instance->referenceFactory()->create(ident, _instance->getDefaultContext(),
facet, Reference::ModeTwoway, false, id, 0, _locatorInfo);
#else
- ReferencePtr ref = _instance->referenceFactory()->create(ident, _instance->initializationData().defaultContext,
+ ReferencePtr ref = _instance->referenceFactory()->create(ident, _instance->getDefaultContext(),
facet, Reference::ModeTwoway, false, id, _locatorInfo);
#endif
diff --git a/cppe/src/IceE/Proxy.cpp b/cppe/src/IceE/Proxy.cpp
index 31ced0d3e44..da3f5a36812 100644
--- a/cppe/src/IceE/Proxy.cpp
+++ b/cppe/src/IceE/Proxy.cpp
@@ -177,7 +177,7 @@ IceProxy::Ice::Object::ice_toString() const
bool
IceProxy::Ice::Object::ice_isA(const string& __id)
{
- return ice_isA(__id, _reference->getContext());
+ return ice_isA(__id, _reference->getContext()->getValue());
}
bool
@@ -250,7 +250,7 @@ IceProxy::Ice::Object::ice_isA(const string& __id, const Context& __context)
void
IceProxy::Ice::Object::ice_ping()
{
- ice_ping(_reference->getContext());
+ ice_ping(_reference->getContext()->getValue());
}
void
@@ -312,7 +312,7 @@ IceProxy::Ice::Object::ice_ping(const Context& __context)
vector<string>
IceProxy::Ice::Object::ice_ids()
{
- return ice_ids(_reference->getContext());
+ return ice_ids(_reference->getContext()->getValue());
}
vector<string>
@@ -377,7 +377,7 @@ IceProxy::Ice::Object::ice_ids(const Context& __context)
string
IceProxy::Ice::Object::ice_id()
{
- return ice_id(_reference->getContext());
+ return ice_id(_reference->getContext()->getValue());
}
string
@@ -442,7 +442,7 @@ IceProxy::Ice::Object::ice_id(const Context& __context)
Context
IceProxy::Ice::Object::ice_getContext() const
{
- return _reference->getContext();
+ return _reference->getContext()->getValue();
}
ObjectPrx
@@ -794,7 +794,7 @@ IceProxy::Ice::Object::__checkTwowayOnly(const char* name) const
const Context&
IceProxy::Ice::Object::__defaultContext() const
{
- return _reference->getContext();
+ return _reference->getContext()->getValue();
}
void
diff --git a/cppe/src/IceE/Reference.cpp b/cppe/src/IceE/Reference.cpp
index e35e779f09e..3af3a3728b3 100644
--- a/cppe/src/IceE/Reference.cpp
+++ b/cppe/src/IceE/Reference.cpp
@@ -42,7 +42,7 @@ ReferencePtr
IceInternal::Reference::defaultContext() const
{
ReferencePtr r = _instance->referenceFactory()->copy(this);
- r->_context = _instance->initializationData().defaultContext;
+ r->_context = _instance->getDefaultContext();
return r;
}
@@ -56,7 +56,7 @@ ReferencePtr
IceInternal::Reference::changeContext(const Context& newContext) const
{
ReferencePtr r = _instance->referenceFactory()->copy(this);
- r->_context = newContext;
+ r->_context = new SharedContext(newContext);
return r;
}
@@ -134,7 +134,7 @@ Reference::hash() const
h = 5 * h + *p;
}
- for(q = _context.begin(); q != _context.end(); ++q)
+ for(q = _context->getValue().begin(); q != _context->getValue().end(); ++q)
{
for(p = q->first.begin(); p != q->first.end(); ++p)
{
@@ -303,7 +303,7 @@ IceInternal::Reference::operator==(const Reference& r) const
return false;
}
- if(_context != r._context)
+ if(_context->getValue() != r._context->getValue())
{
return false;
}
@@ -361,11 +361,11 @@ IceInternal::Reference::operator<(const Reference& r) const
return false;
}
- if(_context < r._context)
+ if(_context->getValue() < r._context->getValue())
{
return true;
}
- else if(r._context < _context)
+ else if(r._context->getValue() < _context->getValue())
{
return false;
}
@@ -403,7 +403,7 @@ IceInternal::Reference::operator<(const Reference& r) const
}
IceInternal::Reference::Reference(const InstancePtr& inst, const CommunicatorPtr& com, const Identity& ident,
- const Context& ctx, const string& fs, Mode md, bool sec) :
+ const SharedContextPtr& ctx, const string& fs, Mode md, bool sec) :
_hashInitialized(false),
_instance(inst),
_communicator(com),
@@ -450,7 +450,7 @@ void IceInternal::incRef(IceInternal::FixedReference* p) { p->__incRef(); }
void IceInternal::decRef(IceInternal::FixedReference* p) { p->__decRef(); }
IceInternal::FixedReference::FixedReference(const InstancePtr& inst, const CommunicatorPtr& com, const Identity& ident,
- const Context& ctx, const string& fs, Mode md,
+ const SharedContextPtr& ctx, const string& fs, Mode md,
const vector<ConnectionPtr>& fixedConns) :
Reference(inst, com, ident, ctx, fs, md, false),
_fixedConnections(fixedConns)
@@ -699,7 +699,7 @@ IceInternal::RoutableReference::operator<(const Reference& r) const
}
IceInternal::RoutableReference::RoutableReference(const InstancePtr& inst, const CommunicatorPtr& com,
- const Identity& ident, const Context& ctx, const string& fs,
+ const Identity& ident, const SharedContextPtr& ctx, const string& fs,
Mode md, bool sec, const RouterInfoPtr& rtrInfo) :
Reference(inst, com, ident, ctx, fs, md, sec), _routerInfo(rtrInfo)
{
@@ -717,7 +717,7 @@ void IceInternal::decRef(IceInternal::DirectReference* p) { p->__decRef(); }
#ifdef ICEE_HAS_ROUTER
IceInternal::DirectReference::DirectReference(const InstancePtr& inst, const CommunicatorPtr& com,
- const Identity& ident, const Context& ctx, const string& fs, Mode md,
+ const Identity& ident, const SharedContextPtr& ctx, const string& fs, Mode md,
bool sec, const vector<EndpointPtr>& endpts,
const RouterInfoPtr& rtrInfo) :
@@ -727,7 +727,7 @@ IceInternal::DirectReference::DirectReference(const InstancePtr& inst, const Com
}
#else
IceInternal::DirectReference::DirectReference(const InstancePtr& inst, const CommunicatorPtr& com,
- const Identity& ident, const Context& ctx, const string& fs, Mode md,
+ const Identity& ident, const SharedContextPtr& ctx, const string& fs, Mode md,
bool sec, const vector<EndpointPtr>& endpts) :
Reference(inst, com, ident, ctx, fs, md, sec),
_endpoints(endpts)
@@ -921,7 +921,7 @@ void IceInternal::decRef(IceInternal::IndirectReference* p) { p->__decRef(); }
#ifdef ICEE_HAS_ROUTER
IceInternal::IndirectReference::IndirectReference(const InstancePtr& inst, const CommunicatorPtr& com,
- const Identity& ident, const Context& ctx, const string& fs,
+ const Identity& ident, const SharedContextPtr& ctx, const string& fs,
Mode md, bool sec, const string& adptid,
const RouterInfoPtr& rtrInfo, const LocatorInfoPtr& locInfo) :
RoutableReference(inst, com, ident, ctx, fs, md, sec, rtrInfo),
@@ -931,7 +931,7 @@ IceInternal::IndirectReference::IndirectReference(const InstancePtr& inst, const
}
#else
IceInternal::IndirectReference::IndirectReference(const InstancePtr& inst, const CommunicatorPtr& com,
- const Identity& ident, const Context& ctx, const string& fs,
+ const Identity& ident, const SharedContextPtr& ctx, const string& fs,
Mode md, bool sec, const string& adptid,
const LocatorInfoPtr& locInfo) :
Reference(inst, com, ident, ctx, fs, md, sec),
diff --git a/cppe/src/IceE/Reference.h b/cppe/src/IceE/Reference.h
index e16d630c44c..5557fbcef95 100644
--- a/cppe/src/IceE/Reference.h
+++ b/cppe/src/IceE/Reference.h
@@ -25,6 +25,7 @@
#include <IceE/ConnectionF.h>
#include <IceE/Shared.h>
#include <IceE/RecMutex.h>
+#include <IceE/SharedContext.h>
#include <IceE/Identity.h>
namespace IceInternal
@@ -51,7 +52,7 @@ public:
const Ice::Identity& getIdentity() const { return _identity; }
const std::string& getFacet() const { return _facet; }
const InstancePtr& getInstance() const { return _instance; }
- const Ice::Context& getContext() const { return _context; }
+ const SharedContextPtr& getContext() const { return _context; }
ReferencePtr defaultContext() const;
@@ -108,7 +109,7 @@ public:
protected:
- Reference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const Ice::Context&,
+ Reference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const SharedContextPtr&,
const std::string&, Mode, bool);
Reference(const Reference&);
@@ -126,7 +127,7 @@ private:
Mode _mode;
bool _secure;
Ice::Identity _identity;
- Ice::Context _context;
+ SharedContextPtr _context;
std::string _facet;
//
@@ -144,7 +145,7 @@ class FixedReference : public Reference
{
public:
- FixedReference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const Ice::Context&,
+ FixedReference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const SharedContextPtr&,
const std::string&, Mode, const std::vector<Ice::ConnectionPtr>&);
const std::vector<Ice::ConnectionPtr>& getFixedConnections() const;
@@ -201,7 +202,7 @@ public:
protected:
- RoutableReference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const Ice::Context&,
+ RoutableReference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const SharedContextPtr&,
const std::string&, Mode, bool, const RouterInfoPtr&);
RoutableReference(const RoutableReference&);
@@ -221,7 +222,7 @@ class DirectReference :
{
public:
- DirectReference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const Ice::Context&,
+ DirectReference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const SharedContextPtr&,
const std::string&, Mode, bool, const std::vector<EndpointPtr>&
#ifdef ICEE_HAS_ROUTER
, const RouterInfoPtr&
@@ -273,7 +274,7 @@ class IndirectReference :
{
public:
- IndirectReference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const Ice::Context&,
+ IndirectReference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const SharedContextPtr&,
const std::string&, Mode, bool, const std::string&
#ifdef ICEE_HAS_ROUTER
, const RouterInfoPtr&
diff --git a/cppe/src/IceE/ReferenceFactory.cpp b/cppe/src/IceE/ReferenceFactory.cpp
index 2d9fdee24e4..1c07371db19 100644
--- a/cppe/src/IceE/ReferenceFactory.cpp
+++ b/cppe/src/IceE/ReferenceFactory.cpp
@@ -53,7 +53,7 @@ IceInternal::ReferenceFactory::copy(const Reference* r) const
ReferencePtr
IceInternal::ReferenceFactory::create(const Identity& ident,
- const Context& context,
+ const SharedContextPtr& context,
const string& facet,
Reference::Mode mode,
bool secure,
@@ -89,7 +89,7 @@ IceInternal::ReferenceFactory::create(const Identity& ident,
ReferencePtr
IceInternal::ReferenceFactory::create(const Identity& ident,
- const Context& context,
+ const SharedContextPtr& context,
const string& facet,
Reference::Mode mode,
bool secure,
@@ -126,7 +126,7 @@ IceInternal::ReferenceFactory::create(const Identity& ident,
ReferencePtr
IceInternal::ReferenceFactory::create(const Identity& ident,
- const Context& context,
+ const SharedContextPtr& context,
const string& facet,
Reference::Mode mode,
const vector<Ice::ConnectionPtr>& fixedConnections)
@@ -441,10 +441,10 @@ IceInternal::ReferenceFactory::create(const string& str)
{
#ifdef ICEE_HAS_LOCATOR
# ifdef ICEE_HAS_ROUTER
- return create(ident, _instance->initializationData().defaultContext, facet, mode, secure, "", routerInfo,
+ return create(ident, _instance->getDefaultContext(), facet, mode, secure, "", routerInfo,
locatorInfo);
# else
- return create(ident, _instance->initializationData().defaultContext, facet, mode, secure, "", locatorInfo);
+ return create(ident, _instance->getDefaultContext(), facet, mode, secure, "", locatorInfo);
# endif
#else
ProxyParseException ex(__FILE__, __LINE__);
@@ -503,10 +503,10 @@ IceInternal::ReferenceFactory::create(const string& str)
}
#ifdef ICEE_HAS_ROUTER
- return create(ident, _instance->initializationData().defaultContext, facet, mode, secure, endpoints,
+ return create(ident, _instance->getDefaultContext(), facet, mode, secure, endpoints,
routerInfo);
#else
- return create(ident, _instance->initializationData().defaultContext, facet, mode, secure, endpoints);
+ return create(ident, _instance->getDefaultContext(), facet, mode, secure, endpoints);
#endif
break;
}
@@ -559,10 +559,10 @@ IceInternal::ReferenceFactory::create(const string& str)
}
#ifdef ICEE_HAS_ROUTER
- return create(ident, _instance->initializationData().defaultContext, facet, mode, secure, adapter,
+ return create(ident, _instance->getDefaultContext(), facet, mode, secure, adapter,
routerInfo, locatorInfo);
#else
- return create(ident, _instance->initializationData().defaultContext, facet, mode, secure, adapter,
+ return create(ident, _instance->getDefaultContext(), facet, mode, secure, adapter,
locatorInfo);
#endif
break;
@@ -637,10 +637,10 @@ IceInternal::ReferenceFactory::create(const Identity& ident, BasicStream* s)
endpoints.push_back(endpoint);
}
#ifdef ICEE_HAS_ROUTER
- return create(ident, _instance->initializationData().defaultContext, facet, mode, secure, endpoints,
+ return create(ident, _instance->getDefaultContext(), facet, mode, secure, endpoints,
routerInfo);
#else
- return create(ident, _instance->initializationData().defaultContext, facet, mode, secure, endpoints);
+ return create(ident, _instance->getDefaultContext(), facet, mode, secure, endpoints);
#endif
}
else
@@ -649,10 +649,10 @@ IceInternal::ReferenceFactory::create(const Identity& ident, BasicStream* s)
LocatorInfoPtr locatorInfo = _instance->locatorManager()->get(getDefaultLocator());
s->read(adapterId);
# ifdef ICEE_HAS_ROUTER
- return create(ident, _instance->initializationData().defaultContext, facet, mode, secure, adapterId,
+ return create(ident, _instance->getDefaultContext(), facet, mode, secure, adapterId,
routerInfo, locatorInfo);
# else
- return create(ident, _instance->initializationData().defaultContext, facet, mode, secure, adapterId,
+ return create(ident, _instance->getDefaultContext(), facet, mode, secure, adapterId,
locatorInfo);
# endif
#else
diff --git a/cppe/src/IceE/ReferenceFactory.h b/cppe/src/IceE/ReferenceFactory.h
index 740aa9206e9..f905911fd6c 100644
--- a/cppe/src/IceE/ReferenceFactory.h
+++ b/cppe/src/IceE/ReferenceFactory.h
@@ -31,7 +31,7 @@ public:
//
// Create a direct reference.
//
- ReferencePtr create(const ::Ice::Identity&, const ::Ice::Context&, const ::std::string&,
+ ReferencePtr create(const ::Ice::Identity&, const SharedContextPtr&, const ::std::string&,
Reference::Mode, bool, const ::std::vector<EndpointPtr>&
#ifdef ICEE_HAS_ROUTER
, const RouterInfoPtr&
@@ -41,7 +41,7 @@ public:
// Create an indirect reference.
//
#ifdef ICEE_HAS_LOCATOR
- ReferencePtr create(const ::Ice::Identity&, const ::Ice::Context&, const ::std::string&,
+ ReferencePtr create(const ::Ice::Identity&, const SharedContextPtr&, const ::std::string&,
Reference::Mode, bool, const ::std::string&
#ifdef ICEE_HAS_ROUTER
, const RouterInfoPtr&
@@ -51,7 +51,7 @@ public:
//
// Create a fixed reference.
//
- ReferencePtr create(const ::Ice::Identity&, const ::Ice::Context&, const ::std::string&,
+ ReferencePtr create(const ::Ice::Identity&, const SharedContextPtr&, const ::std::string&,
Reference::Mode, const ::std::vector< ::Ice::ConnectionPtr>&);
//
diff --git a/cppe/src/IceE/SharedContext.h b/cppe/src/IceE/SharedContext.h
new file mode 100644
index 00000000000..6edf640c21d
--- /dev/null
+++ b/cppe/src/IceE/SharedContext.h
@@ -0,0 +1,47 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2006 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICEE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+#ifndef ICEE_SHARED_CONTEXT_H
+#define ICEE_SHARED_CONTEXT_H
+
+#include <IceE/Shared.h>
+#include <IceE/Handle.h>
+#include <string>
+#include <map>
+
+namespace Ice
+{
+typedef ::std::map< ::std::string, ::std::string> Context;
+}
+
+namespace IceInternal
+{
+
+class SharedContext : public IceUtil::Shared
+{
+public:
+
+ SharedContext(const Ice::Context& val) :
+ _val(val)
+ {
+ }
+
+ inline const Ice::Context& getValue()
+ {
+ return _val;
+ }
+
+private:
+
+ Ice::Context _val;
+};
+typedef IceUtil::Handle<SharedContext> SharedContextPtr;
+}
+
+#endif