Refactor the network input parser to make it easier to extend for new formats.
This commit is contained in:
parent
0526388bdc
commit
34aeb29347
2 changed files with 85 additions and 62 deletions
9
net_io.h
9
net_io.h
|
|
@ -29,6 +29,12 @@ struct net_service;
|
|||
typedef int (*read_fn)(struct client *, char *);
|
||||
typedef void (*heartbeat_fn)(struct net_service *);
|
||||
|
||||
typedef enum {
|
||||
READ_MODE_IGNORE,
|
||||
READ_MODE_BEAST,
|
||||
READ_MODE_ASCII
|
||||
} read_mode_t;
|
||||
|
||||
// Describes one network service (a group of clients with common behaviour)
|
||||
struct net_service {
|
||||
struct net_service* next;
|
||||
|
|
@ -41,6 +47,7 @@ struct net_service {
|
|||
struct net_writer *writer; // shared writer state
|
||||
|
||||
const char *read_sep; // hander details for input data
|
||||
read_mode_t read_mode;
|
||||
read_fn read_handler;
|
||||
};
|
||||
|
||||
|
|
@ -62,7 +69,7 @@ struct net_writer {
|
|||
heartbeat_fn send_heartbeat; // function that queues a heartbeat if needed
|
||||
};
|
||||
|
||||
struct net_service *serviceInit(const char *descr, struct net_writer *writer, heartbeat_fn hb_handler, const char *sep, read_fn read_handler);
|
||||
struct net_service *serviceInit(const char *descr, struct net_writer *writer, heartbeat_fn hb_handler, read_mode_t mode, const char *sep, read_fn read_handler);
|
||||
struct client *serviceConnect(struct net_service *service, char *addr, int port);
|
||||
void serviceListen(struct net_service *service, char *bind_addr, char *bind_ports);
|
||||
struct client *createSocketClient(struct net_service *service, int fd);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue