The filters that implement COPE's causal logging perform the same operations for each method of an optimist object: they add assumptions to a method invocation on the invoking object's side and remove the assumptions on the invoked object's side. Ideally, one would like to be able to associate the same filter with each method of any class that derives from optimist, and this association should be done in a general way. Unfortunately, this cannot be done in OrbixWeb. As discussed in Section 4.2, an object that implements per-object filters is required to implement all methods defined in the IDL definition for the class a of objects with which it is associated. Classes that inherit from a require their own filters to be explicitly implemented.
Since a general purpose filter cannot be constructed as a per-object filter and since we are unwilling to change the OrbixWeb IDL compiler, a per-process filter is our only option. A per-process filter is invoked for all method invocations leaving and entering the process, and so it can be used to implement a generic filter. However, using per-process filters raises other problems. We have found workarounds for these problems, but we do not believe that the workarounds are acceptable in terms of meeting our engineering requirements.