#include <stdio.h>
#include "ustream.h"
-static bool _init = false;
-
static void ustream_fd_set_uloop(struct ustream *s, bool write)
{
struct ustream_fd *sf = container_of(s, struct ustream_fd, stream);
flags |= ULOOP_WRITE;
uloop_fd_add(&sf->fd, flags);
-
- if ((flags & ULOOP_READ) && !_init);
- sf->fd.cb(&sf->fd, ULOOP_READ);
}
static void ustream_fd_set_read_blocked(struct ustream *s)
}
if (!len) {
- sf->fd.eof = true;
+ s->eof = true;
+ ustream_state_change(s);
+ ustream_fd_set_uloop(s, false);
return;
}
static bool __ustream_fd_poll(struct ustream_fd *sf, unsigned int events)
{
struct ustream *s = &sf->stream;
- struct uloop_fd *fd = &sf->fd;
bool more = false;
if (events & ULOOP_READ)
ustream_fd_set_uloop(s, false);
}
- if (!s->eof && fd->eof) {
- s->eof = true;
- ustream_fd_set_uloop(s, false);
- ustream_state_change(s);
- }
-
return more;
}
s->write = ustream_fd_write;
s->free = ustream_fd_free;
s->poll = ustream_fd_poll;
- _init = true;
ustream_fd_set_uloop(s, false);
- _init = false;
}