On Wed, Sep 5, 2012 at 5:14 AM, Joachim Bauch <j...@struktur.de> wrote: > Hi, > > I'm looking for a way to implement a bufferevent that uses a custom API > to read/write data to the network - similar to what the SSL bufferevent > does with the OpenSSL BIO. > > Any hints on what would be the best way to implement this? The easiest > solution I came up was to copy most of bufferevent_openssl.c and modify > "do_read" / "do_write" to use the other API. However this would require > building a completely custom version of libevent or using various > internal header files in my application. > > I'm thinking about moving all common code from bufferevent_openssl to a > new bufferevent object that can be customized through callbacks with > OpenSSL being one implementation.
Sounds like a big but fun project. You might want to look at bufferevent_sock.c first; bufferevent_openssl.c has to jump through a lot of annoying hoops because the TLS protocol has a property that doing a read at the TLS abstraction may require a write on the underlying stream, and vice versa. If your protocol doesn't have that feature, you can get much, much simpler than something based on bufferevent_openssl.c. For any patch here, I'd suggest: * Doing as a two-step thing, and not rewriting the old bufferevent_openssl.c itself until the new thing is stabilized. (Assuming you even want to support bufferevent_openssl's weird read/write model.) * Looking at at least two or three other cases beyond your application and bufferevent_openssl to make sure it's nice and flexible. * Designing the API and circulating it for comment before diving into the implementation too deeply. Happy hacking! -- Nick *********************************************************************** To unsubscribe, send an e-mail to majord...@freehaven.net with unsubscribe libevent-users in the body.