Adding pipeline and filters to remote protocol
To make it possible for extension points on the remote protocol layer, add a pipeline and filters infrastructure and the possibility to add extension information on the remote protocol messages.
(independent of the used RemoteSupport)
The pipeline should allow for chaining N filters in front of receiving RemoteProtocol messages, and chaining N filters just before sending RemoteProtocol messages off onto the network. (both on client and server side)
A filter should be able to pass on a modified message, or the message unmodified, or not pass on the message. A filter should be able to modify a message by adding/removing/updating headers on the MessageProtocol object.
The headers should be available in the chain of filters with the results of the previous filter(s) applied.
Some type of context about the connection should be passed to the filter as well if possible (socket addresses)
You could add "repeated Header headers" to the MessageProtocol, and then the Header message as a key value pair for simple headers. the value should probably just be bytes, the implementor using the headers will need to know how to encode/decode to keep it simple but also flexible.
(independent of the used RemoteSupport)
The pipeline should allow for chaining N filters in front of receiving RemoteProtocol messages, and chaining N filters just before sending RemoteProtocol messages off onto the network. (both on client and server side)
A filter should be able to pass on a modified message, or the message unmodified, or not pass on the message. A filter should be able to modify a message by adding/removing/updating headers on the MessageProtocol object.
The headers should be available in the chain of filters with the results of the previous filter(s) applied.
Some type of context about the connection should be passed to the filter as well if possible (socket addresses)
You could add "repeated Header headers" to the MessageProtocol, and then the Header message as a key value pair for simple headers. the value should probably just be bytes, the implementor using the headers will need to know how to encode/decode to keep it simple but also flexible.
Leave a comment
on 2010-12-29 16:17 *
By
Description changed from To make it possible for ext... to To make it possible for ext...
on 2010-12-30 14:05 *
By viktorklang
I think the headers should go onto the RemoteProtocol instead of the MessageProtocol (MessageProtocol is used for persisting messages etc)
on 2011-01-05 10:37 *
By
Assigned to set to Raymond Roestenburg
Status changed from New to Accepted
Work remaining changed from 0.0 to 20.0
Are you going to fix this within 2 weeks or should it be moved?
on 2011-07-22 10:32 *
By viktorklang
Status changed from Accepted to Invalid
Work remaining changed from 8.0 to 0.0