* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
* USA
*
- * $Id: ports.c 25038 2008-01-23 16:03:08Z androsyn $
+ * $Id: ports.c 26092 2008-09-19 15:13:52Z androsyn $
*/
#include <libratbox_config.h>
static port_event_t *pelst; /* port buffer */
static int pemax; /* max structs to buffer */
-int
-rb_setup_fd_ports(rb_fde_t *F)
+int
+rb_setup_fd_ports(int fd)
{
- return 0;
+ return 0;
}
-
+
static void
-pe_update_events(rb_fde_t * F, short filter, PF * handler)
+pe_update_events(rb_fde_t *F, short filter, PF * handler)
{
PF *cur_handler = NULL;
- if (filter == POLLRDNORM)
+ if(filter == POLLRDNORM)
cur_handler = F->read_handler;
- else if (filter == POLLWRNORM)
+ else if(filter == POLLWRNORM)
cur_handler = F->write_handler;
- if (!cur_handler && handler)
+ if(!cur_handler && handler)
port_associate(pe, PORT_SOURCE_FD, F->fd, filter, F);
- else if (cur_handler && !handler)
+ else if(cur_handler && !handler)
port_dissociate(pe, PORT_SOURCE_FD, F->fd);
}
int
rb_init_netio_ports(void)
{
- if((pe = port_create()) < 0) {
+ if((pe = port_create()) < 0)
+ {
return errno;
}
pemax = getdtablesize();
* and deregister interest in a pending IO state for a given FD.
*/
void
-rb_setselect_ports(rb_fde_t *F, unsigned int type, PF * handler,
- void *client_data)
+rb_setselect_ports(rb_fde_t *F, unsigned int type, PF * handler, void *client_data)
{
lrb_assert(IsFDOpen(F));
/* Update the list, even though we're not using it .. */
- if(type & RB_SELECT_READ) {
+ if(type & RB_SELECT_READ)
+ {
pe_update_events(F, POLLRDNORM, handler);
F->read_handler = handler;
F->read_data = client_data;
}
- if(type & RB_SELECT_WRITE) {
+ if(type & RB_SELECT_WRITE)
+ {
pe_update_events(F, POLLWRNORM, handler);
F->write_handler = handler;
F->write_data = client_data;
int
rb_select_ports(long delay)
{
- int i, fd;
- uint nget = 1;
-struct timespec poll_time;
-struct timer_data *tdata;
+ int i, fd;
+ uint nget = 1;
+ struct timespec poll_time;
+ struct timer_data *tdata;
poll_time.tv_sec = delay / 1000;
poll_time.tv_nsec = (delay % 1000) * 1000000;
i = port_getn(pe, pelst, pemax, &nget, &poll_time);
rb_set_time();
- if (i == -1)
+ if(i == -1)
return RB_OK;
- for (i = 0; i < nget; i++) {
- switch(pelst[i].portev_source) {
+ for(i = 0; i < nget; i++)
+ {
+ switch (pelst[i].portev_source)
+ {
case PORT_SOURCE_FD:
fd = pelst[i].portev_object;
PF *hdl = NULL;
rb_fde_t *F = rb_find_fd(fd);
- if ((pelst[i].portev_events & POLLRDNORM) && (hdl = F->read_handler)) {
+ if((pelst[i].portev_events & POLLRDNORM) && (hdl = F->read_handler))
+ {
F->read_handler = NULL;
hdl(F, F->read_data);
}
- if ((pelst[i].portev_events & POLLWRNORM) && (hdl = F->write_handler)) {
+ if((pelst[i].portev_events & POLLWRNORM) && (hdl = F->write_handler))
+ {
F->write_handler = NULL;
hdl(F, F->write_data);
}
}
#else /* ports not supported */
-int
+int
rb_init_netio_ports(void)
{
return ENOSYS;
void
rb_setselect_ports(rb_fde_t *F, unsigned int type, PF * handler, void *client_data)
{
- errno = ENOSYS;
- return;
+ errno = ENOSYS;
+ return;
}
-
+
int
rb_select_ports(long delay)
{
- errno = ENOSYS;
- return -1;
+ errno = ENOSYS;
+ return -1;
}
-
+
int
rb_setup_fd_ports(rb_fde_t *F)
{
- errno = ENOSYS;
- return -1;
+ errno = ENOSYS;
+ return -1;
}
-
+
#endif