We have implemented framework for message filtering using transperant dynamically
pluggable filter objects with an open-source CORBA implementation - MICO
- as the underlying distributed computing architecture. Tools to help build
filter objects effortlessly with this framework have been built. This manual
documents the development process in evolving the existing system, built
using MICO, with the aid of filter objects and aims at explaining the
process to build a new evolutionary system under the new framework.
Post-processing the Filter Header File
Post-processing of the filter header file can be done in two ways:
Usage: filterconf [NamingAddress] [Address] [-k key] [-f file] [-n | -nc | -nf] [(-e -d -m) | (-p -u)] [-t] [-a] [-h]
NamingAddress | Specifies naming service address. This address must
be specified if one of the naming options is used. |
Address |
Specifies BOA daemon's address. |
-k key |
Use 'key' section in filter configuration file. If
it is not specified, first section in filter configuration file is used. |
-f file |
Use 'file' instead of default configuration file 'filter.config'. |
-n | -nc | -nf |
'-n' option tells filterconf to use naming service
for both client and filter. '-nc' and '-nf' options cause filterconf to use
naming service only for client or filter respectively. The 'NamingAddress'
must be specified if these options are used. Moreover BOA daemon's address
might also be requied. |
-e |
Use 'Enable' subsection in filter configuration file. |
-d |
Use 'Disable' subsection in filter configuration file.
|
-m |
Use 'Mappings' subsection in filter configuration
file. |
-p |
Use 'Plug' subsection in filter configuration file.
|
-u |
Use 'Unplug' subsection in filter configuration file. |
-t |
Display time required to send each beta message. |
-a |
Use addresses specified in the configuration file. |
-h |
Display this message. |
Note:
If -n option is used along with 'Address', 'Address' will
be ignored.
If -a option is not used, then
If -nf option is used along with -p
or -u, 'Address' must be specified.
If -nc option is used, 'Address' must be specified.
If naming options are not used, 'Address' must be specified.
If 'NamingAddress' is specified, it must be first argument followed by others
in any order.
Options -e|-d|-m can not be combined with options -p|-u
.
Catalysts are processes which manage the filter objects in the system.
This involves plugging/unplugging filter objects, mapping filter methods
to server methods, and enabling and disabling filter methods selectively.
This is achieved using several interfaces provided by the framework.
Toggling with filter objects:
Filter objects can be plugged and unplugged from a server object dynamically.
This is achieved using the plug and unplug methods of the CORBA::ORB
class. Hence before we can plug or unplug filter objects from the system,
we need to obtain a local ORB reference. The filter and server object references
are passed as parameters.
Mapping method names:
Though there are strict rules for filter method signatures with respect to
corresponding server method, no such rules exist regarding naming of filter
methods. Hence the names filter methods need to be mapped to the corresponding
server methods, they are supposed to filter. The upfilter and the
downfilter methods of the CORBA::Filter class map the upfilter
and downfilter method names to that of the server class. The mappings are
established after a filter object is created. Unless the methods are appropriately
mapped, filtering action cannot occur even if the filter has been plugged
to the server. In such cases the call will continue normally as if no filter
exists.
Toggling with filter methods:
A filter object can have more than one methods mapped to a single server
object method. But at the same time, at the most, only one method can be
enabled and acts as a filter method for the corresponding server method.
The enable and disable methods of the CORBA::Filter
class are provided for this purpose. All the filter methods corresponding
to a server method being disabled is semantically equivalent to normal invocation
of that server method.
top