From 28b26ca86cf18947d6d9543ad753ef112ff4da89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ram=C5=ABnas=20Ma=C5=BEeikis?= Date: Wed, 22 May 2019 20:33:08 +0300 Subject: Protocol: interface redesign. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Every function is a stub now. Reimplementaion coming up. Signed-off-by: Ramūnas Mažeikis --- include/protocol.h | 45 ++++++++++++++------------------------------- 1 file changed, 14 insertions(+), 31 deletions(-) (limited to 'include') diff --git a/include/protocol.h b/include/protocol.h index 8d5c535..d8f395d 100644 --- a/include/protocol.h +++ b/include/protocol.h @@ -23,9 +23,9 @@ #include -#define E_TLV_OVERFLOW (1 << 0) -#define E_UNKNOWN_TYPE (1 << 1) -#define E_IVALID_DESCRIPTOR (1 << 2) +#define E_TLV_OVERFLOW (1 << 0) +#define E_UNKNOWN_TYPE (1 << 1) +#define E_IVALID_DESCRIPTOR (1 << 2) /** * Regular packets contain tlv's defined by tlv_type. @@ -40,11 +40,6 @@ enum packet_type { DISCOVERY }; -/** - * Connection descriptor. - */ -typedef unsigned int cd_t; - /** * Message sequence number since beggining of sesssion. * @@ -86,10 +81,13 @@ enum tlv_type { /** * Packet data itself is a special type of tlv. A packet is either regular, * hearbeat or discovery. + * + * May be used to send data. */ -struct packet_data { +struct tlv_packet { enum packet_type type; size_t packet_size; + size_t offset; char *data; /* Bytes representing tlv's */ }; @@ -102,33 +100,18 @@ struct tlv { void *data; }; -/** - * Reads last packets received, parses and stores them to be later retreived - * via get_tlv. - * */ -int get_last_data(cd_t connection); - -/** Returns tlv's parsed by get_last_data. Returned tlv is only valid until - * next call to get_tlv. - * */ -struct tlv * get_tlv(cd_t cd); +struct tlv_parser { + char *data; + size_t offset; + size_t size; +}; -/** - * Any modifications made to the pending outgoing packet are nullified. - * */ -int clear_data(cd_t connection); +int get_tlv(struct tlv_parser *parser, struct tlv *ret); /** * Appends data to the next packet to be sent. Type of data is determined by * enum tlv_type. * */ -int push_data(cd_t connection, const char *data, enum tlv_type); - -/** - * Sends packet towards the other end. - * */ -int flush_data(cd_t connection); - -cd_t protocol_init(void); +int push_tlv(struct tlv_packet *packet, const char *data, enum tlv_type); #endif /* PROTOCOL_H_INCLUDED */ -- cgit v1.2.3