Hello.
How to change watched events? For example I want to implement POP3-like
protocol. Accepted socket must watch EV_READ for command and EV _WRITE for
reply. So I need change watched events on every state of conversation in his
callback. Something like
void my_sock_cb (ev_io *sock, int what)
{
my_ev_io *my = (my_ev_io *)sock;
if (what & EV_ERROR)
{
/* close connection */
return;
}
if (what & EV_READ)
{
/* read and process client's command */
read (sock->fd, buf, my->buf_size);
....
strcpy (my->buf, "OK\n");
my->len = strlen (buf);
ev_io_set (&sock, EV_WRITE);
}
if (what & EV_WRITE)
{
write (sock->fd, my->buf, my->len);
.....
/* switch to READING next command */
ev_io_set (&sock, EV_READ);
}
ev_io_start (ev_default_loop (0), &sock);
return;
}
....
my_ev_io *data;
....
fd = accept (...);
ev_io_init ((ev_io *)data, my_io_cb, fd, EV_READ);
ev_io_start (ev_default_loop (0), (ev_io *)data);
Is it correct?
_______________________________________________
libev mailing list
[email protected]
http://lists.schmorp.de/cgi-bin/mailman/listinfo/libev