aboutsummaryrefslogtreecommitdiffstats
path: root/hicn-light/src/hicn/base/loop.h
diff options
context:
space:
mode:
Diffstat (limited to 'hicn-light/src/hicn/base/loop.h')
-rw-r--r--hicn-light/src/hicn/base/loop.h88
1 files changed, 59 insertions, 29 deletions
diff --git a/hicn-light/src/hicn/base/loop.h b/hicn-light/src/hicn/base/loop.h
index b73d91738..697021175 100644
--- a/hicn-light/src/hicn/base/loop.h
+++ b/hicn-light/src/hicn/base/loop.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017-2019 Cisco and/or its affiliates.
+ * Copyright (c) 2020 Cisco and/or its affiliates.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
@@ -18,87 +18,117 @@
* \brief Face manager main loop
*/
-#ifndef FACEMGR_LOOP_H
-#define FACEMGR_LOOP_H
+#ifndef UTIL_LOOP_H
+#define UTIL_LOOP_H
/* fd & timer callbacks */
-typedef int (*fd_callback_t)(void * owner, int fd, void * data);
+typedef int (*fd_callback_t)(void *owner, int fd, void *data);
typedef struct {
int fd;
void *owner;
fd_callback_t callback;
- //int (*callback)(void * owner, int fd, void * data);
void *data;
} fd_callback_data_t;
/* loop */
typedef struct loop_s loop_t;
+typedef struct event_s event_t;
-/* Global loop to be used in single threaded applications */
-extern loop_t * MAIN_LOOP;
+extern loop_t *MAIN_LOOP;
/**
* \brief Creates a main loop
* \return Pointer to the newly created loop, or NULL in case of error
*/
-loop_t * loop_create();
+loop_t *loop_create();
/**
* \brief Releases a loop instance and frees all associated memory
* \param [in] loop - Pointer to the loop instance to free
*/
-void loop_free(loop_t * loop);
+void loop_free(loop_t *loop);
/**
* \brief Runs the loop instance to process events
* \param [in] loop - Pointer to the loop instance
* \return 0 if successful, -1 otherwise
*/
-int loop_dispatch(loop_t * loop);
+int loop_dispatch(loop_t *loop);
/**
* \brief Terminates the dispatching of events
* \param [in] loop - Pointer to the loop instance
*/
-int loop_undispatch(loop_t * loop);
+int loop_undispatch(loop_t *loop);
/**
* \brief Breaks out of the loop
* \param [in] loop - Pointer to the loop instance
*/
-void loop_break(loop_t * loop);
+void loop_break(loop_t *loop);
-/**
- * \brief Registers a new file descriptor to the event loop
- * \param [in] fd - File descriptor to register
+/** Create new event associated with given fd.
+ * \param [out] event - Struct representing new fd event
+ * \param [in] loop - Loop running events
+ * \param [in] fd - fd to register
* \param [in] callback_owner - Pointer to the owner of the callack (first
* parameter of callback function)
* \param [in] callback - Callback function
* \param [in] callback_data - User data to pass alongside callback invocation
* \return 0 in case of success, -1 otherwise
*/
-int
-loop_register_fd(loop_t * loop, int fd, void * callback_owner,
- fd_callback_t callback, void * callback_data);
+int loop_fd_event_create(event_t **event, loop_t *loop, int fd,
+ void *callback_owner, fd_callback_t callback,
+ void *callback_data);
+
+/**
+ * Register event in corresponding event loop.
+ * \param [in] event - Struct representing fd event
+ * \return 0 in case of success, -1 otherwise
+ */
+int loop_fd_event_register(event_t *event);
/**
- * \brief Unregisters a file descriptor from the event loop
- * \param [in] fd - File descriptor to unregister
+ * Unregister event from corresponding event loop.
+ * \param [in] event - Struct representing fd event
* \return 0 in case of success, -1 otherwise
*/
-int
-loop_unregister_fd(loop_t * loop, int fd);
+int loop_event_unregister(event_t *event);
-int _loop_register_timer(loop_t * loop, unsigned delay_ms, void * owner,
- fd_callback_t callback, void * data);
+/**
+ * Free event object.
+ * \param [in] event - Struct representing the event
+ * \return 0 in case of success, -1 otherwise
+ */
+int loop_event_free(event_t *event);
+
+/** Create new timer event.
+ * \param [out] event - Struct representing new timer event
+ * \param [in] loop - Loop running events
+ * \param [in] callback_owner - Pointer to the owner of the callack (first
+ * parameter of callback function)
+ * \param [in] callback - Callback function
+ * \param [in] callback_data - User data to pass alongside callback invocation
+ * \return 0 in case of success, -1 otherwise
+ */
+int loop_timer_create(event_t **timer, loop_t *loop, void *callback_owner,
+ fd_callback_t callback, void *callback_data);
-#define loop_register_timer(loop, delay_ms, owner, callback, data) \
- _loop_register_timer(loop, delay_ms, owner, (fd_callback_t) callback, data)
+/**
+ * Register event in corresponding event loop.
+ * \param [in] timer - Struct representing timer event
+ * \return 0 in case of success, -1 otherwise
+ */
+int loop_timer_register(event_t *timer, unsigned delay_ms);
-int
-loop_unregister_timer(loop_t * loop, int fd);
+/**
+ * Check if timer is enabled.
+ * \param [in] timer - Struct representing timer event
+ * \return 1 if enabled, 0 otherwise
+ */
+int loop_timer_is_enabled(event_t *timer);
-#endif /* FACEMGR_LOOP_H */
+#endif /* UTIL_LOOP_H */