diff options
Diffstat (limited to 'hicn-light/src/hicn/core/listener.h')
-rw-r--r-- | hicn-light/src/hicn/core/listener.h | 35 |
1 files changed, 27 insertions, 8 deletions
diff --git a/hicn-light/src/hicn/core/listener.h b/hicn-light/src/hicn/core/listener.h index 749e9b177..d0658270b 100644 --- a/hicn-light/src/hicn/core/listener.h +++ b/hicn-light/src/hicn/core/listener.h @@ -21,11 +21,13 @@ #ifndef HICNLIGHT_LISTENER_H #define HICNLIGHT_LISTENER_H -#include <hicn/core/address_pair.h> #include <hicn/face.h> +#include "address_pair.h" +#include "msgbuf.h" +#include "../base/loop.h" + struct forwarder_s; -struct batch_buffer_s; typedef struct { address_t address; @@ -48,6 +50,7 @@ typedef struct { unsigned interface_index; unsigned family; int fd; + event_t *event_data; void * data; /* Listener specific data */ struct forwarder_s * forwarder; } listener_t; @@ -66,6 +69,12 @@ typedef struct { listener_t * listener_create(face_type_t type, const address_t * address, const char * interface_name, const char * symbolic, struct forwarder_s * forwarder); +/** + * @brief Helper function used inside 'listener_create' to + * setup variables in listener struct. + * + * @see listener_create + */ int listener_initialize(listener_t * listener, face_type_t type, const char * name, unsigned listener_id, const address_t * address, const char * interface_name, struct forwarder_s * forwarder); @@ -82,16 +91,26 @@ unsigned listener_create_connection(const listener_t * listener, void listener_setup_all(const struct forwarder_s * forwarder, uint16_t port, const char *localPath); -void listener_setup_local_ipv4(const struct forwarder_s * forwarder, uint16_t port); +void listener_setup_local_ipv4(struct forwarder_s * forwarder, uint16_t port); void listener_process_packet(const listener_t * listener, const uint8_t * packet, size_t size); -ssize_t listener_read_callback(struct forwarder_s * forwarder, listener_t * listener, - int fd, address_t * local_addr, uint8_t * packet, size_t size); -void listener_batch_read_callback(struct forwarder_s * forwarder, - listener_t * listener, int fd, address_t * local_addr, - struct batch_buffer_s * bb); +ssize_t listener_read_single(listener_t * listener); +ssize_t listener_read_batch(listener_t * listener); + +/** + * @brief Callback helper function for batch reading data from listener fd. + * + * This function is usually called from the listener read callback to proceed to + * actual reading of data from the fd. + * + * @see listener_read_callback + * + * NOTE: the function returns size_t as for TCP we might need to know how much + * data we can consume from the socket. + */ +ssize_t listener_read_callback(listener_t * listener, int fd, void * user_data); #endif /* HICNLIGHT_LISTENER_H */ |