2 Unix SMB/CIFS implementation.
4 common events code for fd events
6 Copyright (C) Stefan Metzmacher 2009
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 3 of the License, or
11 (at your option) any later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program. If not, see <http://www.gnu.org/licenses/>.
24 #include "tevent_internal.h"
25 #include "tevent_util.h"
27 int tevent_common_fd_destructor(struct tevent_fd *fde)
30 DLIST_REMOVE(fde->event_ctx->fd_events, fde);
34 fde->close_fn(fde->event_ctx, fde, fde->fd, fde->private_data);
41 struct tevent_fd *tevent_common_add_fd(struct tevent_context *ev, TALLOC_CTX *mem_ctx,
42 int fd, uint16_t flags,
43 tevent_fd_handler_t handler,
45 const char *handler_name,
48 struct tevent_fd *fde;
50 fde = talloc(mem_ctx?mem_ctx:ev, struct tevent_fd);
51 if (!fde) return NULL;
56 fde->handler = handler;
58 fde->private_data = private_data;
59 fde->handler_name = handler_name;
60 fde->location = location;
61 fde->additional_flags = 0;
62 fde->additional_data = NULL;
64 DLIST_ADD(ev->fd_events, fde);
66 talloc_set_destructor(fde, tevent_common_fd_destructor);
70 uint16_t tevent_common_fd_get_flags(struct tevent_fd *fde)
75 void tevent_common_fd_set_flags(struct tevent_fd *fde, uint16_t flags)
77 if (fde->flags == flags) return;
81 void tevent_common_fd_set_close_fn(struct tevent_fd *fde,
82 tevent_fd_close_fn_t close_fn)
84 fde->close_fn = close_fn;