1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-23 06:50:21 +03:00

s3: Remove select-based s3 event backend

This commit is contained in:
Volker Lendecke 2011-02-07 15:24:07 +01:00 committed by Volker Lendecke
parent ada2a5a245
commit cf7d331511
2 changed files with 0 additions and 119 deletions

View File

@ -26,11 +26,6 @@
/* The following definitions come from lib/events.c */
bool event_add_to_select_args(struct event_context *event_ctx,
fd_set *read_fds, fd_set *write_fds,
struct timeval *timeout, int *maxfd);
bool run_events(struct event_context *event_ctx,
int selrtn, fd_set *read_fds, fd_set *write_fds);
struct timeval *get_timed_events_timeout(struct event_context *event_ctx,
struct timeval *to_ret);
void dump_event_list(struct event_context *event_ctx);

View File

@ -23,120 +23,6 @@
#include "../lib/util/select.h"
#include "system/select.h"
/*
* Return if there's something in the queue
*/
bool event_add_to_select_args(struct tevent_context *ev,
fd_set *read_fds, fd_set *write_fds,
struct timeval *timeout, int *maxfd)
{
struct timeval now;
struct tevent_fd *fde;
struct timeval diff;
bool ret = false;
for (fde = ev->fd_events; fde; fde = fde->next) {
if (fde->flags & EVENT_FD_READ) {
FD_SET(fde->fd, read_fds);
ret = true;
}
if (fde->flags & EVENT_FD_WRITE) {
FD_SET(fde->fd, write_fds);
ret = true;
}
if ((fde->flags & (EVENT_FD_READ|EVENT_FD_WRITE))
&& (fde->fd > *maxfd)) {
*maxfd = fde->fd;
}
}
if (ev->immediate_events != NULL) {
*timeout = timeval_zero();
return true;
}
if (ev->timer_events == NULL) {
return ret;
}
now = timeval_current();
diff = timeval_until(&now, &ev->timer_events->next_event);
*timeout = timeval_min(timeout, &diff);
return true;
}
bool run_events(struct tevent_context *ev,
int selrtn, fd_set *read_fds, fd_set *write_fds)
{
struct tevent_fd *fde;
struct timeval now;
if (ev->signal_events &&
tevent_common_check_signal(ev)) {
return true;
}
if (ev->immediate_events &&
tevent_common_loop_immediate(ev)) {
return true;
}
GetTimeOfDay(&now);
if ((ev->timer_events != NULL)
&& (timeval_compare(&now, &ev->timer_events->next_event) >= 0)) {
/* this older events system did not auto-free timed
events on running them, and had a race condition
where the event could be called twice if the
talloc_free of the te happened after the callback
made a call which invoked the event loop. To avoid
this while still allowing old code which frees the
te, we need to create a temporary context which
will be used to ensure the te is freed. We also
remove the te from the timed event list before we
call the handler, to ensure we can't loop */
struct tevent_timer *te = ev->timer_events;
TALLOC_CTX *tmp_ctx = talloc_new(ev);
DEBUG(10, ("Running timed event \"%s\" %p\n",
ev->timer_events->handler_name, ev->timer_events));
DLIST_REMOVE(ev->timer_events, te);
talloc_steal(tmp_ctx, te);
te->handler(ev, te, now, te->private_data);
talloc_free(tmp_ctx);
return true;
}
if (selrtn <= 0) {
/*
* No fd ready
*/
return false;
}
for (fde = ev->fd_events; fde; fde = fde->next) {
uint16 flags = 0;
if (FD_ISSET(fde->fd, read_fds)) flags |= EVENT_FD_READ;
if (FD_ISSET(fde->fd, write_fds)) flags |= EVENT_FD_WRITE;
if (flags & fde->flags) {
DLIST_DEMOTE(ev->fd_events, fde, struct tevent_fd);
fde->handler(ev, fde, flags, fde->private_data);
return true;
}
}
return false;
}
struct tevent_poll_private {
/*
* Index from file descriptor into the pollfd array