summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/Ice/PropertyNames.cpp4
-rw-r--r--cpp/src/Ice/PropertyNames.h2
-rw-r--r--cpp/src/IceGrid/AdminSessionI.cpp33
-rw-r--r--cpp/src/IceGrid/AdminSessionI.h3
-rw-r--r--cpp/src/IceGrid/AllocatableObjectCache.cpp66
-rw-r--r--cpp/src/IceGrid/ServerCache.cpp126
-rw-r--r--cpp/src/IceGrid/SessionI.cpp34
-rw-r--r--cpp/src/IceGrid/SessionI.h11
8 files changed, 160 insertions, 119 deletions
diff --git a/cpp/src/Ice/PropertyNames.cpp b/cpp/src/Ice/PropertyNames.cpp
index b381bf1b4df..221ce52fc09 100644
--- a/cpp/src/Ice/PropertyNames.cpp
+++ b/cpp/src/Ice/PropertyNames.cpp
@@ -7,7 +7,7 @@
//
// **********************************************************************
//
-// Generated by makeprops.py from file ../config/PropertyNames.xml, Fri Jun 22 15:28:01 2007
+// Generated by makeprops.py from file ../config/PropertyNames.xml, Mon Jul 9 14:48:13 2007
// IMPORTANT: Do not edit this file -- any edits made here will be lost!
@@ -201,6 +201,7 @@ const IceInternal::Property IceGridPropsData[] =
IceInternal::Property("IceGrid.Registry.AdminPermissionsVerifier.CollocationOptimized", false, 0),
IceInternal::Property("IceGrid.Registry.AdminPermissionsVerifier.ThreadPerConnection", false, 0),
IceInternal::Property("IceGrid.Registry.AdminPermissionsVerifier", false, 0),
+ IceInternal::Property("IceGrid.Registry.AdminSessionFilters", false, 0),
IceInternal::Property("IceGrid.Registry.AdminSSLPermissionsVerifier.EndpointSelection", false, 0),
IceInternal::Property("IceGrid.Registry.AdminSSLPermissionsVerifier.ConnectionCached", false, 0),
IceInternal::Property("IceGrid.Registry.AdminSSLPermissionsVerifier.PreferSecure", false, 0),
@@ -267,6 +268,7 @@ const IceInternal::Property IceGridPropsData[] =
IceInternal::Property("IceGrid.Registry.Server.ThreadPool.SizeMax", false, 0),
IceInternal::Property("IceGrid.Registry.Server.ThreadPool.SizeWarn", false, 0),
IceInternal::Property("IceGrid.Registry.Server.ThreadPool.StackSize", false, 0),
+ IceInternal::Property("IceGrid.Registry.SessionFilters", false, 0),
IceInternal::Property("IceGrid.Registry.SessionManager.AdapterId", false, 0),
IceInternal::Property("IceGrid.Registry.SessionManager.Endpoints", false, 0),
IceInternal::Property("IceGrid.Registry.SessionManager.Locator", false, 0),
diff --git a/cpp/src/Ice/PropertyNames.h b/cpp/src/Ice/PropertyNames.h
index dec96776a5f..916310fa30e 100644
--- a/cpp/src/Ice/PropertyNames.h
+++ b/cpp/src/Ice/PropertyNames.h
@@ -7,7 +7,7 @@
//
// **********************************************************************
//
-// Generated by makeprops.py from file ../config/PropertyNames.xml, Fri Jun 22 15:28:01 2007
+// Generated by makeprops.py from file ../config/PropertyNames.xml, Mon Jul 9 14:48:13 2007
// IMPORTANT: Do not edit this file -- any edits made here will be lost!
diff --git a/cpp/src/IceGrid/AdminSessionI.cpp b/cpp/src/IceGrid/AdminSessionI.cpp
index c8e49df1858..87d445f2abb 100644
--- a/cpp/src/IceGrid/AdminSessionI.cpp
+++ b/cpp/src/IceGrid/AdminSessionI.cpp
@@ -54,8 +54,9 @@ FileIteratorI::destroy(const Ice::Current& current)
_session->removeFileIterator(current.id, current);
}
-AdminSessionI::AdminSessionI(const string& id, const DatabasePtr& db, int timeout, const string& replicaName) :
- BaseSessionI(id, "admin", db),
+AdminSessionI::AdminSessionI(const string& id, const DatabasePtr& db, bool filters, int timeout,
+ const string& replicaName) :
+ BaseSessionI(id, "admin", db, filters),
_timeout(timeout),
_replicaName(replicaName)
{
@@ -475,8 +476,15 @@ AdminSessionFactory::AdminSessionFactory(const Ice::ObjectAdapterPtr& adapter,
_database(database),
_timeout(registry->getSessionTimeout()),
_reaper(reaper),
- _registry(registry)
+ _registry(registry),
+ _filters(false)
{
+ if(_adapter) // Not set if Glacier2 session manager adapter not enabled
+ {
+ Ice::PropertiesPtr properties = adapter->getCommunicator()->getProperties();
+ const_cast<bool&>(_filters) =
+ properties->getPropertyAsIntWithDefault("IceGrid.Registry.AdminSessionFilters", 1) > 0;
+ }
}
Glacier2::SessionPrx
@@ -499,14 +507,17 @@ AdminSessionFactory::createGlacier2Session(const string& sessionId, const Glacie
int timeout = 0;
if(ctl)
{
- try
+ if(_filters)
{
- ctl->identities()->add(ids);
- }
- catch(const Ice::LocalException&)
- {
- session->destroy(Ice::Current());
- return 0;
+ try
+ {
+ ctl->identities()->add(ids);
+ }
+ catch(const Ice::LocalException&)
+ {
+ session->destroy(Ice::Current());
+ return 0;
+ }
}
timeout = ctl->getSessionTimeout();
}
@@ -522,7 +533,7 @@ AdminSessionFactory::createGlacier2Session(const string& sessionId, const Glacie
AdminSessionIPtr
AdminSessionFactory::createSessionServant(const string& id)
{
- return new AdminSessionI(id, _database, _timeout, _registry->getName());
+ return new AdminSessionI(id, _database, _filters, _timeout, _registry->getName());
}
const TraceLevelsPtr&
diff --git a/cpp/src/IceGrid/AdminSessionI.h b/cpp/src/IceGrid/AdminSessionI.h
index 0c40a8162bb..e7bcf02aa6d 100644
--- a/cpp/src/IceGrid/AdminSessionI.h
+++ b/cpp/src/IceGrid/AdminSessionI.h
@@ -28,7 +28,7 @@ class AdminSessionI : public BaseSessionI, public AdminSession
{
public:
- AdminSessionI(const std::string&, const DatabasePtr&, int, const std::string&);
+ AdminSessionI(const std::string&, const DatabasePtr&, bool, int, const std::string&);
virtual ~AdminSessionI();
virtual Ice::ObjectPrx registerWithServantLocator(const SessionServantLocatorIPtr&, const Ice::ConnectionPtr&,
@@ -102,6 +102,7 @@ private:
const WaitQueuePtr _waitQueue;
const ReapThreadPtr _reaper;
const RegistryIPtr _registry;
+ const bool _filters;
};
typedef IceUtil::Handle<AdminSessionFactory> AdminSessionFactoryPtr;
diff --git a/cpp/src/IceGrid/AllocatableObjectCache.cpp b/cpp/src/IceGrid/AllocatableObjectCache.cpp
index 2c34d42603e..e8308ae4e8e 100644
--- a/cpp/src/IceGrid/AllocatableObjectCache.cpp
+++ b/cpp/src/IceGrid/AllocatableObjectCache.cpp
@@ -295,25 +295,28 @@ AllocatableObjectEntry::allocated(const SessionIPtr& session)
<< ")";
}
- Glacier2::SessionControlPrx ctl = session->getSessionControl();
- if(ctl)
+ if(session->useFilters())
{
- try
- {
- Ice::IdentitySeq seq(1);
- seq.push_back(_info.proxy->ice_getIdentity());
- ctl->identities()->add(seq);
- }
- catch(const Ice::LocalException& ex)
+ Glacier2::SessionControlPrx ctl = session->getSessionControl();
+ if(ctl)
{
- if(traceLevels && traceLevels->object > 0)
+ try
{
- Ice::Trace out(traceLevels->logger, traceLevels->objectCat);
- out << "couldn't add Glacier2 filter for object `" << _info.proxy->ice_toString();
- out << "' allocated by `" << session->getId() << "':\n" << ex;
- }
- }
- }
+ Ice::IdentitySeq seq(1);
+ seq.push_back(_info.proxy->ice_getIdentity());
+ ctl->identities()->add(seq);
+ }
+ catch(const Ice::LocalException& ex)
+ {
+ if(traceLevels && traceLevels->object > 0)
+ {
+ Ice::Trace out(traceLevels->logger, traceLevels->objectCat);
+ out << "couldn't add Glacier2 filter for object `" << _info.proxy->ice_toString();
+ out << "' allocated by `" << session->getId() << "':\n" << ex;
+ }
+ }
+ }
+ }
}
void
@@ -326,23 +329,26 @@ AllocatableObjectEntry::released(const SessionIPtr& session)
TraceLevelsPtr traceLevels = _cache.getTraceLevels();
- Glacier2::SessionControlPrx ctl = session->getSessionControl();
- if(ctl)
+ if(session->useFilters())
{
- try
- {
- Ice::IdentitySeq seq(1);
- seq.push_back(_info.proxy->ice_getIdentity());
- ctl->identities()->remove(seq);
- }
- catch(const Ice::LocalException& ex)
+ Glacier2::SessionControlPrx ctl = session->getSessionControl();
+ if(ctl)
{
- if(traceLevels && traceLevels->object > 0)
+ try
+ {
+ Ice::IdentitySeq seq(1);
+ seq.push_back(_info.proxy->ice_getIdentity());
+ ctl->identities()->remove(seq);
+ }
+ catch(const Ice::LocalException& ex)
{
- Ice::Trace out(traceLevels->logger, traceLevels->objectCat);
- out << "couldn't remove Glacier2 filter for object `" << _info.proxy->ice_toString();
- out << "' allocated by `" << session->getId() << "':\n" << ex;
- }
+ if(traceLevels && traceLevels->object > 0)
+ {
+ Ice::Trace out(traceLevels->logger, traceLevels->objectCat);
+ out << "couldn't remove Glacier2 filter for object `" << _info.proxy->ice_toString();
+ out << "' allocated by `" << session->getId() << "':\n" << ex;
+ }
+ }
}
}
diff --git a/cpp/src/IceGrid/ServerCache.cpp b/cpp/src/IceGrid/ServerCache.cpp
index 14030eea69b..fefd0ed7ebe 100644
--- a/cpp/src/IceGrid/ServerCache.cpp
+++ b/cpp/src/IceGrid/ServerCache.cpp
@@ -833,41 +833,44 @@ ServerEntry::allocated(const SessionIPtr& session)
_load->sessionId = session->getId();
}
- Glacier2::SessionControlPrx ctl = session->getSessionControl();
- if(ctl)
+ if(session->useFilters())
{
- ServerHelperPtr helper = createHelper(desc);
- multiset<string> adapterIds;
- multiset<Ice::Identity> identities;
- helper->getIds(adapterIds, identities);
- try
+ Glacier2::SessionControlPrx ctl = session->getSessionControl();
+ if(ctl)
{
- //
- // SunCC won't accept the following:
- //
- // ctl->adapterIds()->add(Ice::StringSeq(adapterIds.begin(), adapterIds.end()));
- // ctl->identities()->add(Ice::IdentitySeq(identities.begin(), identities.end()));
- //
- Ice::StringSeq adapterIdSeq;
- for(multiset<string>::iterator p = adapterIds.begin(); p != adapterIds.end(); ++p)
+ ServerHelperPtr helper = createHelper(desc);
+ multiset<string> adapterIds;
+ multiset<Ice::Identity> identities;
+ helper->getIds(adapterIds, identities);
+ try
{
- adapterIdSeq.push_back(*p);
- }
- Ice::IdentitySeq identitySeq;
- for(multiset<Ice::Identity>::iterator q = identities.begin(); q != identities.end(); ++q)
- {
- identitySeq.push_back(*q);
+ //
+ // SunCC won't accept the following:
+ //
+ // ctl->adapterIds()->add(Ice::StringSeq(adapterIds.begin(), adapterIds.end()));
+ // ctl->identities()->add(Ice::IdentitySeq(identities.begin(), identities.end()));
+ //
+ Ice::StringSeq adapterIdSeq;
+ for(multiset<string>::iterator p = adapterIds.begin(); p != adapterIds.end(); ++p)
+ {
+ adapterIdSeq.push_back(*p);
+ }
+ Ice::IdentitySeq identitySeq;
+ for(multiset<Ice::Identity>::iterator q = identities.begin(); q != identities.end(); ++q)
+ {
+ identitySeq.push_back(*q);
+ }
+ ctl->adapterIds()->add(adapterIdSeq);
+ ctl->identities()->add(identitySeq);
}
- ctl->adapterIds()->add(adapterIdSeq);
- ctl->identities()->add(identitySeq);
- }
- catch(const Ice::LocalException& ex)
- {
- if(traceLevels && traceLevels->server > 0)
+ catch(const Ice::LocalException& ex)
{
- Ice::Trace out(traceLevels->logger, traceLevels->serverCat);
- out << "couldn't add Glacier2 filters for server `" << _id << "' allocated by `" << session->getId();
- out << ":\n" << ex;
+ if(traceLevels && traceLevels->server > 0)
+ {
+ Ice::Trace out(traceLevels->logger, traceLevels->serverCat);
+ out << "couldn't add Glacier2 filters for server `" << _id << "' allocated by `"
+ << session->getId() << ":\n" << ex;
+ }
}
}
}
@@ -920,41 +923,44 @@ ServerEntry::released(const SessionIPtr& session)
TraceLevelsPtr traceLevels = _cache.getTraceLevels();
- Glacier2::SessionControlPrx ctl = session->getSessionControl();
- if(ctl)
+ if(session->useFilters())
{
- ServerHelperPtr helper = createHelper(desc);
- multiset<string> adapterIds;
- multiset<Ice::Identity> identities;
- helper->getIds(adapterIds, identities);
- try
+ Glacier2::SessionControlPrx ctl = session->getSessionControl();
+ if(ctl)
{
- //
- // SunCC won't accept the following:
- //
- // ctl->adapterIds()->remove(Ice::StringSeq(adapterIds.begin(), adapterIds.end()));
- // ctl->identities()->remove(Ice::IdentitySeq(identities.begin(), identities.end()));
- //
- Ice::StringSeq adapterIdSeq;
- for(multiset<string>::iterator p = adapterIds.begin(); p != adapterIds.end(); ++p)
+ ServerHelperPtr helper = createHelper(desc);
+ multiset<string> adapterIds;
+ multiset<Ice::Identity> identities;
+ helper->getIds(adapterIds, identities);
+ try
{
- adapterIdSeq.push_back(*p);
- }
- Ice::IdentitySeq identitySeq;
- for(multiset<Ice::Identity>::iterator q = identities.begin(); q != identities.end(); ++q)
- {
- identitySeq.push_back(*q);
+ //
+ // SunCC won't accept the following:
+ //
+ // ctl->adapterIds()->remove(Ice::StringSeq(adapterIds.begin(), adapterIds.end()));
+ // ctl->identities()->remove(Ice::IdentitySeq(identities.begin(), identities.end()));
+ //
+ Ice::StringSeq adapterIdSeq;
+ for(multiset<string>::iterator p = adapterIds.begin(); p != adapterIds.end(); ++p)
+ {
+ adapterIdSeq.push_back(*p);
+ }
+ Ice::IdentitySeq identitySeq;
+ for(multiset<Ice::Identity>::iterator q = identities.begin(); q != identities.end(); ++q)
+ {
+ identitySeq.push_back(*q);
+ }
+ ctl->adapterIds()->remove(adapterIdSeq);
+ ctl->identities()->remove(identitySeq);
}
- ctl->adapterIds()->remove(adapterIdSeq);
- ctl->identities()->remove(identitySeq);
- }
- catch(const Ice::LocalException& ex)
- {
- if(traceLevels && traceLevels->server > 0)
+ catch(const Ice::LocalException& ex)
{
- Ice::Trace out(traceLevels->logger, traceLevels->serverCat);
- out << "couldn't remove Glacier2 filters for server `" << _id << "' allocated by `";
- out << session->getId() << ":\n" << ex;
+ if(traceLevels && traceLevels->server > 0)
+ {
+ Ice::Trace out(traceLevels->logger, traceLevels->serverCat);
+ out << "couldn't remove Glacier2 filters for server `" << _id << "' allocated by `";
+ out << session->getId() << ":\n" << ex;
+ }
}
}
}
diff --git a/cpp/src/IceGrid/SessionI.cpp b/cpp/src/IceGrid/SessionI.cpp
index f27ded104d5..263331bae3e 100644
--- a/cpp/src/IceGrid/SessionI.cpp
+++ b/cpp/src/IceGrid/SessionI.cpp
@@ -66,11 +66,13 @@ newAllocateObject(const SessionIPtr& session, const IceUtil::Handle<T>& cb)
BaseSessionI::BaseSessionI(const string& id,
const string& prefix,
- const DatabasePtr& database) :
+ const DatabasePtr& database,
+ bool filters) :
_id(id),
_prefix(prefix),
_traceLevels(database->getTraceLevels()),
_database(database),
+ _filters(filters),
_destroyed(false),
_timestamp(IceUtil::Time::now())
{
@@ -181,9 +183,10 @@ BaseSessionI::registerWithObjectAdapter(const Ice::ObjectAdapterPtr& adapter)
SessionI::SessionI(const string& id,
const DatabasePtr& database,
+ bool filters,
const WaitQueuePtr& waitQueue,
const Glacier2::SessionControlPrx& sessionControl) :
- BaseSessionI(id, "client", database),
+ BaseSessionI(id, "client", database, filters),
_waitQueue(waitQueue),
_sessionControl(sessionControl),
_allocationTimeout(-1)
@@ -318,8 +321,14 @@ ClientSessionFactory::ClientSessionFactory(const Ice::ObjectAdapterPtr& adapter,
_adapter(adapter),
_database(database),
_waitQueue(waitQueue),
- _reaper(reaper)
+ _reaper(reaper),
+ _filters(false)
{
+ if(_adapter) // Not set if Glacier2 session manager adapter not enabled
+ {
+ Ice::PropertiesPtr properties = _adapter->getCommunicator()->getProperties();
+ const_cast<bool&>(_filters) = properties->getPropertyAsIntWithDefault("IceGrid.Registry.SessionFilters", 1) > 0;
+ }
}
Glacier2::SessionPrx
@@ -341,14 +350,17 @@ ClientSessionFactory::createGlacier2Session(const string& sessionId, const Glaci
int timeout = 0;
if(ctl)
{
- try
+ if(_filters)
{
- ctl->identities()->add(ids);
- }
- catch(const Ice::LocalException&)
- {
- session->destroy(Ice::Current());
- return 0;
+ try
+ {
+ ctl->identities()->add(ids);
+ }
+ catch(const Ice::LocalException&)
+ {
+ session->destroy(Ice::Current());
+ return 0;
+ }
}
timeout = ctl->getSessionTimeout();
}
@@ -364,7 +376,7 @@ ClientSessionFactory::createGlacier2Session(const string& sessionId, const Glaci
SessionIPtr
ClientSessionFactory::createSessionServant(const string& userId, const Glacier2::SessionControlPrx& ctl)
{
- return new SessionI(userId, _database, _waitQueue, ctl);
+ return new SessionI(userId, _database, _filters, _waitQueue, ctl);
}
const TraceLevelsPtr&
diff --git a/cpp/src/IceGrid/SessionI.h b/cpp/src/IceGrid/SessionI.h
index 9dbb5666b83..ed497046f68 100644
--- a/cpp/src/IceGrid/SessionI.h
+++ b/cpp/src/IceGrid/SessionI.h
@@ -52,17 +52,19 @@ public:
virtual Ice::ObjectPrx registerWithObjectAdapter(const Ice::ObjectAdapterPtr&);
const std::string& getId() const { return _id; }
-
+ bool useFilters() const { return _filters; }
+
protected:
virtual void destroyImpl(bool);
- BaseSessionI(const std::string&, const std::string&, const DatabasePtr&);
+ BaseSessionI(const std::string&, const std::string&, const DatabasePtr&, bool);
const std::string _id;
const std::string _prefix;
const TraceLevelsPtr _traceLevels;
const DatabasePtr _database;
+ const bool _filters;
SessionServantLocatorIPtr _servantLocator;
Ice::ObjectAdapterPtr _adapter;
Ice::Identity _identity;
@@ -79,8 +81,8 @@ class SessionI : public BaseSessionI, public Session
{
public:
- SessionI(const std::string&, const DatabasePtr&, const WaitQueuePtr&, const Glacier2::SessionControlPrx&);
- SessionI(const std::string&, const DatabasePtr&, const WaitQueuePtr&, const Ice::ConnectionPtr&);
+ SessionI(const std::string&, const DatabasePtr&, bool, const WaitQueuePtr&, const Glacier2::SessionControlPrx&);
+ SessionI(const std::string&, const DatabasePtr&, bool, const WaitQueuePtr&, const Ice::ConnectionPtr&);
virtual ~SessionI();
virtual void keepAlive(const Ice::Current& current) { BaseSessionI::keepAlive(current); }
@@ -131,6 +133,7 @@ private:
const DatabasePtr _database;
const WaitQueuePtr _waitQueue;
const ReapThreadPtr _reaper;
+ const bool _filters;
};
typedef IceUtil::Handle<ClientSessionFactory> ClientSessionFactoryPtr;