Introduce iostream wrapper for socket I/O
Reading/writing fd directly doesn't let us add any data processing transparently to the users. To overcome this limitation, let's wrap fd in struct iostream. The new struct exposes virtual read/write methods, which should be defined by a concrete implementation. It also allows to access the associated fd, which is needed to poll the stream via libev. For now, there's the only iostream implementation - plain iostream without any processing - but we may add other implementations in future. Apart from introducing the iostream struct, this patch also makes coio helpers use it. From now on, coio read/write methods take iostream instead of ev_io and create ev_io internally (in coio_wait). This is fine, because creation of a new ev_io on stack is cheap. Basically, this patch updates all coio users so that they call iostream_create and iostream_close instead of coio_create and coio_close_io. Plus, it adds a call to iostream_destroy, because in contrast to ev_io, iostream must be destroyed explicitly.
Showing
- src/box/applier.cc 18 additions, 16 deletionssrc/box/applier.cc
- src/box/applier.h 3 additions, 2 deletionssrc/box/applier.h
- src/box/box.cc 4 additions, 4 deletionssrc/box/box.cc
- src/box/box.h 7 additions, 7 deletionssrc/box/box.h
- src/box/iproto.cc 3 additions, 2 deletionssrc/box/iproto.cc
- src/box/relay.cc 10 additions, 4 deletionssrc/box/relay.cc
- src/box/xrow_io.cc 3 additions, 3 deletionssrc/box/xrow_io.cc
- src/box/xrow_io.h 4 additions, 4 deletionssrc/box/xrow_io.h
- src/lib/core/CMakeLists.txt 1 addition, 0 deletionssrc/lib/core/CMakeLists.txt
- src/lib/core/coio.cc 43 additions, 94 deletionssrc/lib/core/coio.cc
- src/lib/core/coio.h 22 additions, 34 deletionssrc/lib/core/coio.h
- src/lib/core/coio_buf.h 12 additions, 9 deletionssrc/lib/core/coio_buf.h
- src/lib/core/iostream.c 82 additions, 0 deletionssrc/lib/core/iostream.c
- src/lib/core/iostream.h 174 additions, 0 deletionssrc/lib/core/iostream.h
- src/lib/core/popen.c 10 additions, 11 deletionssrc/lib/core/popen.c
- src/lib/core/popen.h 2 additions, 2 deletionssrc/lib/core/popen.h
Loading
Please register or sign in to comment