summaryrefslogtreecommitdiff
path: root/cpp/src/Glacier2/ClientBlobject.cpp
diff options
context:
space:
mode:
authorBrent Eagles <brent@zeroc.com>2006-06-05 16:03:09 +0000
committerBrent Eagles <brent@zeroc.com>2006-06-05 16:03:09 +0000
commit64cc25d19077e937dac847c82b3ea62c5746a51e (patch)
tree80a8c6bc2594bef177acbdff14f342ee4b4283a9 /cpp/src/Glacier2/ClientBlobject.cpp
parentAdded IceSSL::DistinguishedName (diff)
downloadice-64cc25d19077e937dac847c82b3ea62c5746a51e.tar.bz2
ice-64cc25d19077e937dac847c82b3ea62c5746a51e.tar.xz
ice-64cc25d19077e937dac847c82b3ea62c5746a51e.zip
- Changes to align dynamic filtering with the current Glacier2Filters wiki
proposal. - Some 3.1.0 prep work for the VC 6.0 windows installers.
Diffstat (limited to 'cpp/src/Glacier2/ClientBlobject.cpp')
-rw-r--r--cpp/src/Glacier2/ClientBlobject.cpp134
1 files changed, 71 insertions, 63 deletions
diff --git a/cpp/src/Glacier2/ClientBlobject.cpp b/cpp/src/Glacier2/ClientBlobject.cpp
index 76dcb388783..5e39c2362c0 100644
--- a/cpp/src/Glacier2/ClientBlobject.cpp
+++ b/cpp/src/Glacier2/ClientBlobject.cpp
@@ -21,36 +21,36 @@ class ClientBlobjectImpl
{
public:
- ClientBlobjectImpl(const StringFilterManagerIPtr& categoryFilter, const StringFilterManagerIPtr& adapterFilter,
- const IdentityFilterManagerIPtr& idFilter) :
- _categoryFilter(categoryFilter),
- _adapterIdFilter(adapterFilter),
- _identityFilter(idFilter)
+ ClientBlobjectImpl(const StringSetIPtr& categories, const StringSetIPtr& adapters,
+ const IdentitySetIPtr& identities) :
+ _categories(categories),
+ _adapters(adapters),
+ _identities(identities)
{
}
- StringFilterManagerIPtr
- categoryFilter()
+ StringSetIPtr
+ categories()
{
- return _categoryFilter;
+ return _categories;
}
- StringFilterManagerIPtr
- adapterIdFilter()
+ StringSetIPtr
+ adapterIds()
{
- return _adapterIdFilter;
+ return _adapters;
}
- IdentityFilterManagerIPtr
- identityFilter()
+ IdentitySetIPtr
+ identities()
{
- return _identityFilter;
+ return _identities;
}
private:
- const StringFilterManagerIPtr _categoryFilter;
- const StringFilterManagerIPtr _adapterIdFilter;
- const IdentityFilterManagerIPtr _identityFilter;
+ const StringSetIPtr _categories;
+ const StringSetIPtr _adapters;
+ const IdentitySetIPtr _identities;
};
}
@@ -113,30 +113,38 @@ Glacier2::ClientBlobject::ice_invoke_async(const Ice::AMD_Array_Object_ice_invok
const std::pair<const Byte*, const Byte*>& inParams,
const Current& current)
{
- if(!_impl->categoryFilter()->match(current.id.category))
+ bool rejected = false;
+
+ if(!_impl->categories()->empty())
{
- if(_rejectTraceLevel >= 1)
+ if(!_impl->categories()->match(current.id.category))
{
- Trace out(_logger, "Glacier2");
- out << "rejecting request\n";
- out << "identity: " << _communicator->identityToString(current.id);
+ if(_rejectTraceLevel >= 1)
+ {
+ Trace out(_logger, "Glacier2");
+ out << "rejecting request\n";
+ out << "identity: " << _communicator->identityToString(current.id);
+ }
+ rejected = true;
}
- ObjectNotExistException ex(__FILE__, __LINE__);
- ex.id = current.id;
- throw ex;
}
- if(!_impl->identityFilter()->match(current.id))
+ if(!_impl->identities()->empty())
{
- if(_rejectTraceLevel >= 1)
+ if(_impl->identities()->match(current.id))
{
- Trace out(_logger, "Glacier2");
- out << "rejecting request\n";
- out << "identity: " << _communicator->identityToString(current.id);
+ rejected = false;
+ }
+ else
+ {
+ if(_rejectTraceLevel >= 1)
+ {
+ Trace out(_logger, "Glacier2");
+ out << "rejecting request\n";
+ out << "identity: " << _communicator->identityToString(current.id);
+ }
+ rejected = true;
}
- ObjectNotExistException ex(__FILE__, __LINE__);
- ex.id = current.id;
- throw ex;
}
ObjectPrx proxy = _routingTable->get(current.id);
@@ -158,14 +166,26 @@ Glacier2::ClientBlobject::ice_invoke_async(const Ice::AMD_Array_Object_ice_invok
}
string adapterId = proxy->ice_getAdapterId();
- if(!adapterId.empty() && !_impl->adapterIdFilter()->match(adapterId))
+
+ if(!adapterId.empty() && !_impl->adapterIds()->empty())
{
- if(_rejectTraceLevel >= 1)
+ if(_impl->adapterIds()->match(adapterId))
+ {
+ rejected = false;
+ }
+ else
{
- Trace out(_logger, "Glacier2");
- out << "rejecting request\n";
- out << "identity: " << _communicator->identityToString(current.id);
+ if(_rejectTraceLevel >= 1)
+ {
+ Trace out(_logger, "Glacier2");
+ out << "rejecting request\n";
+ out << "identity: " << _communicator->identityToString(current.id);
+ }
}
+ }
+
+ if(rejected)
+ {
ObjectNotExistException ex(__FILE__, __LINE__);
ex.id = current.id;
throw ex;
@@ -193,13 +213,8 @@ Glacier2::ClientBlobject::create(const CommunicatorPtr& communicator, const stri
allow = props->getProperty("Glacier2.Filter.Category.Accept");
}
- string reject = props->getProperty("Glacier2.Filter.Category.Reject");
- bool acceptOverride = props->getPropertyAsIntWithDefault("Glacier2.Filter.Category.AcceptOverride", 0) == 1;
-
vector<string> allowSeq;
- vector<string> rejectSeq;
stringToSeq(allow, allowSeq);
- stringToSeq(reject, rejectSeq);
int addUserMode = props->getPropertyAsInt("Glacier2.AddUserToAllowCategories");
if(addUserMode == 0)
@@ -218,47 +233,40 @@ Glacier2::ClientBlobject::create(const CommunicatorPtr& communicator, const stri
allowSeq.push_back('_' + userId); // Add user id with prepended underscore to allowed categories.
}
}
- StringFilterManagerIPtr categoryFilter = new StringFilterManagerI(allowSeq, rejectSeq, acceptOverride);
+ StringSetIPtr categoryFilter = new StringSetI(allowSeq);
//
// TODO: refactor initialization of filters.
//
allow = props->getProperty("Glacier2.Filter.AdapterId.Accept");
- reject = props->getProperty("Glacier2.Filter.AdapterId.Reject");
- acceptOverride = props->getPropertyAsIntWithDefault("Glacier2.Filter.AdapterId.AcceptOverride", 0) == 1;
stringToSeq(allow, allowSeq);
- stringToSeq(reject, rejectSeq);
- StringFilterManagerIPtr adapterIdFilter = new StringFilterManagerI(allowSeq, rejectSeq, acceptOverride);
+ StringSetIPtr adapterIdFilter = new StringSetI(allowSeq);
//
// TODO: Object id's from configurations?
//
IdentitySeq allowIdSeq;
- IdentitySeq rejectIdSeq;
- allow = props->getProperty("Glacier2.Filter.AdapterId.Accept");
- reject = props->getProperty("Glacier2.Filter.AdapterId.Reject");
- acceptOverride = props->getPropertyAsIntWithDefault("Glacier2.Filter.AdapterId.AcceptOverride", 0) == 1;
+ allow = props->getProperty("Glacier2.Filter.Identity.Accept");
stringToSeq(allow, allowSeq);
- stringToSeq(reject, rejectSeq);
- IdentityFilterManagerIPtr identityFilter = new IdentityFilterManagerI(allowIdSeq, rejectIdSeq, false);
+ IdentitySetIPtr identityFilter = new IdentitySetI(allowIdSeq);
return new ClientBlobject(communicator, new ClientBlobjectImpl(categoryFilter, adapterIdFilter, identityFilter));
}
-StringFilterManagerPtr
-ClientBlobject::categoryFilter()
+StringSetPtr
+ClientBlobject::categories()
{
- return _impl->categoryFilter();
+ return _impl->categories();
}
-StringFilterManagerPtr
-ClientBlobject::adapterIdFilter()
+StringSetPtr
+ClientBlobject::adapterIds()
{
- return _impl->adapterIdFilter();
+ return _impl->adapterIds();
}
-IdentityFilterManagerPtr
-ClientBlobject::identityFilter()
+IdentitySetPtr
+ClientBlobject::identities()
{
- return _impl->identityFilter();
+ return _impl->identities();
}