Opened 17 years ago
#44 new enhancement
build support for membranes
Reported by: | Brian Warner | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | undecided |
Component: | unknown | Version: | 0.2.4 |
Keywords: | Cc: |
Description
The sealer/unsealer code should also be usable to make it easy to create Membranes (which are like a revokable forwarder, but every reference you pass through it is also wrapped in a revokable forwarder, so that the users of the interface don't have to refrain from passing their own references).
Something with an API like:
wrapfunc = RevocableForwarder() d = tub.makeMembrane(orig, wrapfunc) # then later.. wrapfunc.revoke()
I'm thinking that wrapfunc
will be called for each Referenceable or
RemoteReference? (ooh, interesting to think about the difference there..) that
passes through, and it is expected to return a new reference for each one.
RovocableForwarder.__call__
would provide this.
This would also provide for things like:
wrapfunc = LoggingForwarder(logfunc) wrapfunc = ArgumentAddingForwarder(owner="bob")
makeMembrane
would be implemented with a special serialize/unserialize
pair, in which the unslicer table uses the wrapper function to handle
my-reference sequences.