Change request #581
Implement custom basic IRC library
|Assignee:||David Demelier||% Done:|
|Category:||Irccd||Estimated time:||24.00 h|
|Target version:||3.0.0||Spent time:||16.00 h|
|MFD revision:||Submitted by:|
Use Boost.Asio to implement a custom IRC library and replace libircclient.
Irccd: finish custom IRC library, closes #581
Finally remove the lovely libircclient that has been used since the
beginning of irccd back in 2013.
Several issues made the choice of developing a custom IRC library:
- libircclient requires select(2) system call and works in procedural
paradigm which is incompatible with our Boost.Asio main loop,
- there was no way in the libircclient to detect custom message like
PING to handle dead servers, this required to bundle the library
within the application,
- the library use static output buffer which requires to keep an
internal queue of commands that we flush at each iteration.