bufferevent
libevent では、ディスクリプタへの読み書きがとても簡単に実装できます。
bufev = bufferevent_new(fd, readcb, writecb, errorcb, NULL);
bufferevent_enable(bufev, EV_READ);
fd は対象ディスクリプタ
readcb, writecb, errorcb へはそれぞれ読み、書き、エラーを行うコールバックを指定します。
行読みしたいなら、readcb はこう書けます。
void
readcb(struct bufferevent *bufev, void *arg)
{
char *buf;buf = evbuffer_readline(bufev->input);
if (buf == NULL) {
return;
}printf("buf=%s\n", buf);
}
簡単ですね。
注意点として、errorcb だけプロトタイプが違い、どんなエラーが起きたかを指定します。
void errorcb(struct bufferevent *bufev, short event, void *arg);