Major refactoring
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
#ifndef MESSAGE_INCLUDED
|
||||
#define MESSAGE_INCLUDED
|
||||
|
||||
#include "tcp.h"
|
||||
|
||||
#define MESSAGE_SYSTEM_NODE_LIMIT 8
|
||||
|
||||
typedef struct {
|
||||
bool used;
|
||||
uint16_t gen;
|
||||
int senders[MESSAGE_SYSTEM_NODE_LIMIT];
|
||||
int num_senders;
|
||||
void* message;
|
||||
} ConnMetadata;
|
||||
|
||||
typedef struct {
|
||||
|
||||
TCP tcp;
|
||||
|
||||
Address addrs[MESSAGE_SYSTEM_NODE_LIMIT];
|
||||
int num_addrs;
|
||||
|
||||
int max_conns;
|
||||
ConnMetadata *conns;
|
||||
} MessageSystem;
|
||||
|
||||
typedef struct {
|
||||
uint16_t version;
|
||||
uint16_t type;
|
||||
uint16_t sender;
|
||||
uint64_t length;
|
||||
} Message;
|
||||
|
||||
int message_system_init(MessageSystem *msys,
|
||||
Address *addrs, int num_addrs);
|
||||
|
||||
int message_system_free(MessageSystem *msys);
|
||||
|
||||
int message_system_listen_tcp(MessageSystem *msys, Address addr);
|
||||
int message_system_listen_tls(MessageSystem *msys, Address addr);
|
||||
|
||||
void message_system_process_events(MessageSystem *msys,
|
||||
void **ptrs, struct pollfd *arr, int num);
|
||||
|
||||
int message_system_register_events(MessageSystem *msys,
|
||||
void **ptrs, struct pollfd *arr, int cap);
|
||||
|
||||
void *get_next_message(MessageSystem *msys);
|
||||
|
||||
void consume_message(MessageSystem *msys, void *ptr);
|
||||
|
||||
void send_message(MessageSystem *msys, int target, Message *message);
|
||||
|
||||
void send_message_ex(MessageSystem *msys, int target,
|
||||
Message *header, void *extra, int extra_len);
|
||||
|
||||
void reply_to_message(MessageSystem *msys, void *incoming_message,
|
||||
Message *outgoing_message);
|
||||
|
||||
void reply_to_message_ex(MessageSystem *msys, void *incoming_message,
|
||||
Message *outgoing_message, void *extra, int extra_len);
|
||||
|
||||
void broadcast_message(MessageSystem *msys, int self_idx, Message *message);
|
||||
|
||||
void broadcast_message_ex(MessageSystem *msys, int self_idx,
|
||||
Message *header, void *extra, int extra_len);
|
||||
|
||||
#endif // MESSAGE_INCLUDED
|
||||
Reference in New Issue
Block a user