59 log_fatal(
"register_eventhandler: no memory!");
148 log_fatal (
"Incorrect object type, must be of type io_object");
167 status =
obj->reader(
obj->inner);
180 status =
obj->writer(
obj->inner);
217 if (!omapi_io_states.refcnt) {
218 omapi_io_states.refcnt = 1;
266 log_error(
"Unable to register fd with library %s",
279 for (
p = omapi_io_states.
next;
287 obj -> readfd = readfd;
288 obj -> writefd = writefd;
289 obj -> reader = reader;
290 obj -> writer = writer;
291 obj -> reaper = reaper;
326 reader, writer, reaper));
336 obj->readfd = readfd;
337 obj->writefd = writefd;
338 obj->reader = reader;
339 obj->writer = writer;
340 obj->reaper = reaper;
377 last = &omapi_io_states;
429 log_debug (
"omapi_wait_for_completion(%u.%u secs)",
430 (
unsigned int)(
t->tv_sec),
431 (
unsigned int)(
t->tv_usec));
433 log_debug (
"omapi_wait_for_completion(no timeout)");
471 log_debug (
"- call to omapi_one_dispatch failed: %s",
497 status =
waiter -> waitstatus;
539 if (to.tv_usec < 0) {
540 to.tv_usec += 1000000;
548 if (to.tv_sec > (60 * 60 * 24))
549 to.tv_sec = 60 * 60 * 24;
559 if (!(
io = omapi_io_states.
next))
566 for (;
io;
io =
io -> next) {
592 log_debug (
"--- Connected, nothing to write, skip writefd\n");
624 log_debug (
" calling select with timout: %u.%u secs",
625 (
unsigned int)(to.tv_sec),
626 (
unsigned int)(to.tv_usec));
642 if (omapi_io_states.
next)
649 t0.tv_sec =
t0.tv_usec = 0;
675 len =
ov ->
value -> u.buffer.len;
699 (&omapi_io_states.
next,
709 t0.tv_sec =
t0.tv_usec = 0;
740 ((*(
io -> reader)) (
tmp));
749 ((*(
io -> writer)) (
tmp));
763 if ((
io->inner ==
NULL) ||
785 (&omapi_io_states.
next,
834 if (h ->
inner && h ->
inner -> type -> set_value)
835 return (*(h ->
inner -> type -> set_value))
848 if (h ->
inner && h ->
inner -> type -> get_value)
849 return (*(h ->
inner -> type -> get_value))
870 for (
p = omapi_io_states.
next;
p;
p =
p -> next) {
898 log_debug (
"omapi_io_signal_handler(%s)", name);
903 if (h ->
inner && h ->
inner -> type -> signal_handler)
904 return (*(h ->
inner -> type -> signal_handler)) (h ->
inner,
917 return (*(
i ->
inner -> type -> stuff_values)) (
c, id,
928 log_debug (
"omapi_waiter_signal_handler(%s)", name);
933 if (!
strcmp (name,
"ready")) {
940 if (!
strcmp(name,
"status")) {
947 if (!
strcmp (name,
"disconnect")) {
954 if (h ->
inner && h ->
inner -> type -> signal_handler)
955 return (*(h ->
inner -> type -> signal_handler)) (h ->
inner,
982 if (omapi_io_states.
next) {
995 status = (*func) (
io->inner,
p);
void register_eventhandler(struct eventqueue **, void(*handler)(void *))
dhcp_context_t dhcp_gbl_ctx
isc_result_t omapi_unregister_io_object(omapi_object_t *h)
void unregister_eventhandler(struct eventqueue **queue, void(*handler)(void *))
isc_result_t omapi_one_dispatch(omapi_object_t *wo, struct timeval *t)
isc_result_t omapi_register_io_object(omapi_object_t *h, int(*readfd)(omapi_object_t *), int(*writefd)(omapi_object_t *), isc_result_t(*reader)(omapi_object_t *), isc_result_t(*writer)(omapi_object_t *), isc_result_t(*reaper)(omapi_object_t *))
isc_result_t omapi_io_destroy(omapi_object_t *h, const char *file, int line)
isc_result_t omapi_waiter_signal_handler(omapi_object_t *h, const char *name, va_list ap)
isc_result_t omapi_io_signal_handler(omapi_object_t *h, const char *name, va_list ap)
struct eventqueue * rw_queue_empty
isc_result_t omapi_io_state_foreach(isc_result_t(*func)(omapi_object_t *, void *), void *p)
calls a given function on every object
int omapi_iscsock_cb(isc_task_t *task, isc_socket_t *socket, void *cbarg, int flags)
isc_result_t omapi_io_stuff_values(omapi_object_t *c, omapi_object_t *id, omapi_object_t *i)
isc_result_t omapi_io_get_value(omapi_object_t *h, omapi_object_t *id, omapi_data_string_t *name, omapi_value_t **value)
isc_result_t omapi_io_set_value(omapi_object_t *h, omapi_object_t *id, omapi_data_string_t *name, omapi_typed_data_t *value)
isc_result_t omapi_reregister_io_object(omapi_object_t *h, int(*readfd)(omapi_object_t *), int(*writefd)(omapi_object_t *), isc_result_t(*reader)(omapi_object_t *), isc_result_t(*writer)(omapi_object_t *), isc_result_t(*reaper)(omapi_object_t *))
void trigger_event(struct eventqueue **queue)
isc_result_t omapi_wait_for_completion(omapi_object_t *object, struct timeval *t)
isc_result_t omapi_dispatch(struct timeval *t)
isc_result_t omapi_value_dereference(omapi_value_t **, const char *, int)
omapi_object_type_t * omapi_type_io_object
#define OMAPI_OBJECT_ALLOC(name, stype, type)
isc_result_t omapi_object_dereference(omapi_object_t **, const char *, int)
omapi_object_type_t * omapi_type_waiter
isc_result_t omapi_object_reference(omapi_object_t **, omapi_object_t *, const char *, int)
isc_result_t omapi_signal_in(omapi_object_t *, const char *,...)
omapi_object_type_t * omapi_type_connection
void * dmalloc(size_t, const char *, int)
void dfree(void *, const char *, int)
isc_result_t omapi_get_value_str(omapi_object_t *, omapi_object_t *, const char *, omapi_value_t **)
int log_error(const char *,...) __attribute__((__format__(__printf__
int int int log_debug(const char *,...) __attribute__((__format__(__printf__
void log_fatal(const char *,...) __attribute__((__format__(__printf__
@ omapi_connection_connected
#define DHCP_R_INVALIDARG
struct __omapi_io_object * next
isc_socketmgr_t * socketmgr