From: <rhy...@gm...> - 2007-11-27 02:00:24
|
Hi, all I have posted this in asio user group. And I think it is also important for cpp-netlib. I think filter chain is an important facility for almost every some what complicated network application. Say, I want 1. do RC4 encryption/decryption, 2. zip/unzip the byte stream, 3. encode/decode a protocol specific class instance into/from plain byte stream. Then we need 3 filters: an RC4 filter, a compression filter, and a protocol codec filter. We assemble these filters into a filter chain, and attach the filter chain to sessions. There are several choices, say compile time static filter chain or runtime assembled dynamic filter chain? And filters often maintains session specific states, if we store the states in the filters, we should maintain one filter chain per session. If we store the states in the session object, and make all filters stateless, then all session can share a single filter chain. But the session object must meet the concept that all the filters requires. Say, the RC4 encoder/decoder pair are not stateless, thus cannot be stored in the rc4_filter instance, and rc4_filter may requires the session object having two public method: rc4_encoder& get_rc4_encoder(); rc4_decoder& get_rc4_decoder(); What do you think? And I recommend a glance at the Apache MINA project, which have a rather flexible filter chain facility. Here's the site: http://mina.apache.org/ Cheers Cheng |
From: Alex O. <al...@gm...> - 2007-11-27 15:58:27
|
SGVsbG8KCk1heSBiZSB0YWtlIGludG8gYWNjb3VudCBkZXNpZ24gb2YgYm9vc3QuaW9zdHJlYW1z PyBBbHNvIG1heSBiZSBnb29kCmlkZWEgdG8gbG9vayBvbiBkZXNpZ24gb2YgY2hhaW5zIGluIEFD RQoKT24gTm92IDI3LCAyMDA3IDI6NTggQU0sIMGss8cgPHJoeXRobS5tYWlsQGdtYWlsLmNvbT4g d3JvdGU6Cj4gSGksIGFsbAo+Cj4gSSBoYXZlIHBvc3RlZCB0aGlzIGluIGFzaW8gdXNlciBncm91 cC4gIEFuZCBJIHRoaW5rIGl0IGlzIGFsc28gaW1wb3J0YW50Cj4gZm9yIGNwcC1uZXRsaWIuCj4K PiBJIHRoaW5rIGZpbHRlciBjaGFpbiBpcyBhbiBpbXBvcnRhbnQgZmFjaWxpdHkgZm9yIGFsbW9z dCBldmVyeSBzb21lIHdoYXQKPiBjb21wbGljYXRlZCBuZXR3b3JrIGFwcGxpY2F0aW9uLiBTYXks IEkgd2FudAo+Cj4gMS4gZG8gUkM0IGVuY3J5cHRpb24vZGVjcnlwdGlvbiwKPiAyLiB6aXAvdW56 aXAgdGhlIGJ5dGUgc3RyZWFtLAo+IDMuIGVuY29kZS9kZWNvZGUgYSBwcm90b2NvbCBzcGVjaWZp YyBjbGFzcyBpbnN0YW5jZSBpbnRvL2Zyb20gcGxhaW4gYnl0ZQo+IHN0cmVhbS4KPgo+IFRoZW4g d2UgbmVlZCAzIGZpbHRlcnM6IGFuIFJDNCBmaWx0ZXIsIGEgY29tcHJlc3Npb24gZmlsdGVyLCBh bmQgYQo+IHByb3RvY29sIGNvZGVjIGZpbHRlci4gV2UgYXNzZW1ibGUgdGhlc2UgZmlsdGVycyBp bnRvIGEgZmlsdGVyIGNoYWluLAo+IGFuZCBhdHRhY2ggdGhlIGZpbHRlciBjaGFpbiB0byBzZXNz aW9ucy4KPgo+IFRoZXJlIGFyZSBzZXZlcmFsIGNob2ljZXMsIHNheSBjb21waWxlIHRpbWUgc3Rh dGljIGZpbHRlciBjaGFpbiBvcgo+IHJ1bnRpbWUgYXNzZW1ibGVkIGR5bmFtaWMgZmlsdGVyIGNo YWluPyBBbmQgZmlsdGVycyBvZnRlbiBtYWludGFpbnMKPiBzZXNzaW9uIHNwZWNpZmljIHN0YXRl cywgaWYgd2Ugc3RvcmUgdGhlIHN0YXRlcyBpbiB0aGUgZmlsdGVycywgd2UKPiBzaG91bGQgbWFp bnRhaW4gb25lIGZpbHRlciBjaGFpbiBwZXIgc2Vzc2lvbi4gSWYgd2Ugc3RvcmUgdGhlIHN0YXRl cyBpbgo+IHRoZSBzZXNzaW9uIG9iamVjdCwgYW5kIG1ha2UgYWxsIGZpbHRlcnMgc3RhdGVsZXNz LCB0aGVuIGFsbCBzZXNzaW9uIGNhbgo+IHNoYXJlIGEgc2luZ2xlIGZpbHRlciBjaGFpbi4gQnV0 IHRoZSBzZXNzaW9uIG9iamVjdCBtdXN0IG1lZXQgdGhlCj4gY29uY2VwdCB0aGF0IGFsbCB0aGUg ZmlsdGVycyByZXF1aXJlcy4gU2F5LCB0aGUgUkM0IGVuY29kZXIvZGVjb2RlciBwYWlyCj4gYXJl IG5vdCBzdGF0ZWxlc3MsIHRodXMgY2Fubm90IGJlIHN0b3JlZCBpbiB0aGUgcmM0X2ZpbHRlciBp bnN0YW5jZSwgYW5kCj4gcmM0X2ZpbHRlciBtYXkgcmVxdWlyZXMgdGhlIHNlc3Npb24gb2JqZWN0 IGhhdmluZyB0d28gcHVibGljIG1ldGhvZDoKPgo+ICAgICAgcmM0X2VuY29kZXImIGdldF9yYzRf ZW5jb2RlcigpOwo+ICAgICAgcmM0X2RlY29kZXImIGdldF9yYzRfZGVjb2RlcigpOwo+Cj4gV2hh dCBkbyB5b3UgdGhpbms/IEFuZCBJIHJlY29tbWVuZCBhIGdsYW5jZSBhdCB0aGUgQXBhY2hlIE1J TkEgcHJvamVjdCwKPiB3aGljaCBoYXZlIGEgcmF0aGVyIGZsZXhpYmxlIGZpbHRlciBjaGFpbiBm YWNpbGl0eS4gSGVyZSdzIHRoZSBzaXRlOgo+Cj4gICAgICBodHRwOi8vbWluYS5hcGFjaGUub3Jn Lwo+Cj4KPiBDaGVlcnMKPiBDaGVuZwo+Cj4KPgo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiBUaGlzIFNG Lm5ldCBlbWFpbCBpcyBzcG9uc29yZWQgYnk6IE1pY3Jvc29mdAo+IERlZnkgYWxsIGNoYWxsZW5n ZXMuIE1pY3Jvc29mdChSKSBWaXN1YWwgU3R1ZGlvIDIwMDUuCj4gaHR0cDovL2Nsay5hdGRtdC5j b20vTVJUL2dvL3ZzZTAxMjAwMDAwNzBtcnQvZGlyZWN0LzAxLwo+IF9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gQ3BwLW5ldGxpYi1kZXZlbCBtYWlsaW5n IGxpc3QKPiBDcHAtbmV0bGliLWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldAo+IGh0dHBzOi8v bGlzdHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZvL2NwcC1uZXRsaWItZGV2ZWwKPgo+ CgoKCi0tIApXaXRoIGJlc3Qgd2lzaGVzLCAgICAgICAgICAgICAgICAgICAgQWxleCBPdHQsIE1C QQpodHRwOi8vYWxleG90dC5ibG9nc3BvdC5jb20vCmh0dHA6Ly9hbGV4b3R0LXJ1LmJsb2dzcG90 LmNvbS8KaHR0cDovL2NvbnRlbnQtZmlsdGVyaW5nLmJsb2dzcG90LmNvbS8KaHR0cDovL3h0YWxr Lm1zay5zdS9+b3R0Lwo= |
From: Christian H. <chh...@gm...> - 2007-11-27 16:37:06
|
SGkgdGhlcmUsCgpkb2Vzbid0IHRoaXMgaWRlYSBzb3VuZCBsaWtlIHRoZSBzaWduYWwgbmV0d29y ayB3aGljaCB3YXMgcGFydCBvZiB0aGlzCnllYXIncyBTb0M/IERvbid0IGtub3cgdGhlIHN0YXR1 cyBvZiB0aGlzIHByb2plY3QsIHRob3VnaC4KCkNocmlzdGlhbgoKT24gTm92IDI3LCAyMDA3IDEw OjU4IEFNLCBBbGV4IE90dCA8YWxleG90dEBnbWFpbC5jb20+IHdyb3RlOgo+IEhlbGxvCj4KPiBN YXkgYmUgdGFrZSBpbnRvIGFjY291bnQgZGVzaWduIG9mIGJvb3N0Lmlvc3RyZWFtcz8gQWxzbyBt YXkgYmUgZ29vZAo+IGlkZWEgdG8gbG9vayBvbiBkZXNpZ24gb2YgY2hhaW5zIGluIEFDRQo+Cj4g T24gTm92IDI3LCAyMDA3IDI6NTggQU0sIMGss8cgPHJoeXRobS5tYWlsQGdtYWlsLmNvbT4gd3Jv dGU6Cj4gPiBIaSwgYWxsCj4gPgo+ID4gSSBoYXZlIHBvc3RlZCB0aGlzIGluIGFzaW8gdXNlciBn cm91cC4gIEFuZCBJIHRoaW5rIGl0IGlzIGFsc28gaW1wb3J0YW50Cj4gPiBmb3IgY3BwLW5ldGxp Yi4KPiA+Cj4gPiBJIHRoaW5rIGZpbHRlciBjaGFpbiBpcyBhbiBpbXBvcnRhbnQgZmFjaWxpdHkg Zm9yIGFsbW9zdCBldmVyeSBzb21lIHdoYXQKPiA+IGNvbXBsaWNhdGVkIG5ldHdvcmsgYXBwbGlj YXRpb24uIFNheSwgSSB3YW50Cj4gPgo+ID4gMS4gZG8gUkM0IGVuY3J5cHRpb24vZGVjcnlwdGlv biwKPiA+IDIuIHppcC91bnppcCB0aGUgYnl0ZSBzdHJlYW0sCj4gPiAzLiBlbmNvZGUvZGVjb2Rl IGEgcHJvdG9jb2wgc3BlY2lmaWMgY2xhc3MgaW5zdGFuY2UgaW50by9mcm9tIHBsYWluIGJ5dGUK PiA+IHN0cmVhbS4KPiA+Cj4gPiBUaGVuIHdlIG5lZWQgMyBmaWx0ZXJzOiBhbiBSQzQgZmlsdGVy LCBhIGNvbXByZXNzaW9uIGZpbHRlciwgYW5kIGEKPiA+IHByb3RvY29sIGNvZGVjIGZpbHRlci4g V2UgYXNzZW1ibGUgdGhlc2UgZmlsdGVycyBpbnRvIGEgZmlsdGVyIGNoYWluLAo+ID4gYW5kIGF0 dGFjaCB0aGUgZmlsdGVyIGNoYWluIHRvIHNlc3Npb25zLgo+ID4KPiA+IFRoZXJlIGFyZSBzZXZl cmFsIGNob2ljZXMsIHNheSBjb21waWxlIHRpbWUgc3RhdGljIGZpbHRlciBjaGFpbiBvcgo+ID4g cnVudGltZSBhc3NlbWJsZWQgZHluYW1pYyBmaWx0ZXIgY2hhaW4/IEFuZCBmaWx0ZXJzIG9mdGVu IG1haW50YWlucwo+ID4gc2Vzc2lvbiBzcGVjaWZpYyBzdGF0ZXMsIGlmIHdlIHN0b3JlIHRoZSBz dGF0ZXMgaW4gdGhlIGZpbHRlcnMsIHdlCj4gPiBzaG91bGQgbWFpbnRhaW4gb25lIGZpbHRlciBj aGFpbiBwZXIgc2Vzc2lvbi4gSWYgd2Ugc3RvcmUgdGhlIHN0YXRlcyBpbgo+ID4gdGhlIHNlc3Np b24gb2JqZWN0LCBhbmQgbWFrZSBhbGwgZmlsdGVycyBzdGF0ZWxlc3MsIHRoZW4gYWxsIHNlc3Np b24gY2FuCj4gPiBzaGFyZSBhIHNpbmdsZSBmaWx0ZXIgY2hhaW4uIEJ1dCB0aGUgc2Vzc2lvbiBv YmplY3QgbXVzdCBtZWV0IHRoZQo+ID4gY29uY2VwdCB0aGF0IGFsbCB0aGUgZmlsdGVycyByZXF1 aXJlcy4gU2F5LCB0aGUgUkM0IGVuY29kZXIvZGVjb2RlciBwYWlyCj4gPiBhcmUgbm90IHN0YXRl bGVzcywgdGh1cyBjYW5ub3QgYmUgc3RvcmVkIGluIHRoZSByYzRfZmlsdGVyIGluc3RhbmNlLCBh bmQKPiA+IHJjNF9maWx0ZXIgbWF5IHJlcXVpcmVzIHRoZSBzZXNzaW9uIG9iamVjdCBoYXZpbmcg dHdvIHB1YmxpYyBtZXRob2Q6Cj4gPgo+ID4gICAgICByYzRfZW5jb2RlciYgZ2V0X3JjNF9lbmNv ZGVyKCk7Cj4gPiAgICAgIHJjNF9kZWNvZGVyJiBnZXRfcmM0X2RlY29kZXIoKTsKPiA+Cj4gPiBX aGF0IGRvIHlvdSB0aGluaz8gQW5kIEkgcmVjb21tZW5kIGEgZ2xhbmNlIGF0IHRoZSBBcGFjaGUg TUlOQSBwcm9qZWN0LAo+ID4gd2hpY2ggaGF2ZSBhIHJhdGhlciBmbGV4aWJsZSBmaWx0ZXIgY2hh aW4gZmFjaWxpdHkuIEhlcmUncyB0aGUgc2l0ZToKPiA+Cj4gPiAgICAgIGh0dHA6Ly9taW5hLmFw YWNoZS5vcmcvCj4gPgo+ID4KPiA+IENoZWVycwo+ID4gQ2hlbmcKPiA+Cj4gPgo+ID4KPiA+IC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KPiA+IFRoaXMgU0YubmV0IGVtYWlsIGlzIHNwb25zb3JlZCBieTogTWlj cm9zb2Z0Cj4gPiBEZWZ5IGFsbCBjaGFsbGVuZ2VzLiBNaWNyb3NvZnQoUikgVmlzdWFsIFN0dWRp byAyMDA1Lgo+ID4gaHR0cDovL2Nsay5hdGRtdC5jb20vTVJUL2dvL3ZzZTAxMjAwMDAwNzBtcnQv ZGlyZWN0LzAxLwo+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KPiA+IENwcC1uZXRsaWItZGV2ZWwgbWFpbGluZyBsaXN0Cj4gPiBDcHAtbmV0bGliLWRl dmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldAo+ID4gaHR0cHM6Ly9saXN0cy5zb3VyY2Vmb3JnZS5u ZXQvbGlzdHMvbGlzdGluZm8vY3BwLW5ldGxpYi1kZXZlbAo+ID4KPiA+Cj4KPgo+Cj4gLS0KPiBX aXRoIGJlc3Qgd2lzaGVzLCAgICAgICAgICAgICAgICAgICAgQWxleCBPdHQsIE1CQQo+IGh0dHA6 Ly9hbGV4b3R0LmJsb2dzcG90LmNvbS8KPiBodHRwOi8vYWxleG90dC1ydS5ibG9nc3BvdC5jb20v Cj4gaHR0cDovL2NvbnRlbnQtZmlsdGVyaW5nLmJsb2dzcG90LmNvbS8KPiBodHRwOi8veHRhbGsu bXNrLnN1L35vdHQvCj4KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gVGhpcyBTRi5uZXQgZW1haWwgaXMg c3BvbnNvcmVkIGJ5OiBNaWNyb3NvZnQKPiBEZWZ5IGFsbCBjaGFsbGVuZ2VzLiBNaWNyb3NvZnQo UikgVmlzdWFsIFN0dWRpbyAyMDA1Lgo+IGh0dHA6Ly9jbGsuYXRkbXQuY29tL01SVC9nby92c2Uw MTIwMDAwMDcwbXJ0L2RpcmVjdC8wMS8KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwo+IENwcC1uZXRsaWItZGV2ZWwgbWFpbGluZyBsaXN0Cj4gQ3BwLW5l dGxpYi1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKPiBodHRwczovL2xpc3RzLnNvdXJjZWZv cmdlLm5ldC9saXN0cy9saXN0aW5mby9jcHAtbmV0bGliLWRldmVsCj4KPgo= |
From: Stjepan R. <st...@as...> - 2007-11-27 22:22:33
|
On Nov 27, 2007 9:37 AM, Christian Henning <chh...@gm...> wrote: > Hi there, > > doesn't this idea sound like the signal network which was part of this > year's SoC? Don't know the status of this project, though. > > Christian It turned into the Dataflow library, and yes - the filter chaining should be within its scope. At the moment you can do it using the layer based on Boost.Signals - see the "motivation and advantages" section for a simple filter example (there are other examples of filter chains as well): http://dancinghacker.com/code/dataflow/ The Boost.Signals approach might not be the best for the use case you mention here - but I am planning to expand the library with another (perhaps more suitable) dataflow layer, and any feedback on what is useful or lacking in what's currently supported by the library would be greatly appreciated! Regards, Stjepan |