aboutsummaryrefslogtreecommitdiffstats
path: root/hicn-light/src/hicn/core/listener.h
diff options
context:
space:
mode:
Diffstat (limited to 'hicn-light/src/hicn/core/listener.h')
-rw-r--r--hicn-light/src/hicn/core/listener.h35
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 */