I've created a GitHub organization called 'SwiftNIO Extra'. The idea is to use that as a common place for 3rd party protocol implementations for SwiftNIO. That is, just channel handlers which parse and/or emit a specific network protocol. Absolutely no higher level framework specific stuff (e.g. wrappers for client libs etc.). The idea being, that such can be reused across all NIO based frameworks instead of being tied to specific, "opinionated" implementations.
Right now it just contains the two protocols I implemented (and open-sourced):
If someone is interested, I'm very happy to add additional people and repos to that organization. If not, well, that will be the place where I put my protocol implementations (and ports of vendor specific implementations) nevertheless
Again the idea is that it just contains generic stuff which works with just NIO and doesn't add extra wrappers. As a consequence I suggest that the modules all start with
NIORedis, etc. A nice client wrapper (which would not be part of this effort) could then be named just
Redis or whatever the framework vendor wants. (e.g. I split my clients out of the packages above and put them into own ones over at Noze.io)
Such a protocol module would usually consist of three things:
- types to represent the parsed or emitted entities (e.g.
- inbound channel handlers which emit those types, outbound channel which consume those types
- a pipeline config function (e.g.
Or in other words: They are supposed to work the same like the builtin modules e.g.
Let me know what you think!