diff --git a/include/mptp.h b/include/mptp.h index d0a7b52..6f260fe 100644 --- a/include/mptp.h +++ b/include/mptp.h @@ -1,36 +1,38 @@ #pragma once -#include #include "types.h" +#include + +// clang-format off + +/* + + 0 1 2 3 4 5 6 7 + ############### + # FLAGS # + ############### + # SIZE # + # # + ############### + # DATA # + #.............# -/* - - 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 - ##################################### - # FLAGS # - ##################################### - # SIZE # - # # - ##################################### - # DATA # - #...................................# - [8 bits] FLAGS --------------------------------------------------------- 4 bits used for specifying the version --------------------------------------------------------- 1 bit used to specify if this is a request or response - + 0- it's a request 1- it's a response --------------------------------------------------------- 2 bits used for request/response codes - + We have 4 types of different requests 1- PING: checks if the server is avaliable - 2- INFO: gets information about the pool(s) the server is hosting + 2- INFO: gets information about the pool(s) the server is hosting 3- LIST: requests the package list for certain pool 4- PULL: requests a certain package from a certain pool - + And 4 types of responses 1- PONG: response for the ping request 2- COOL: everything is fine, here's the data you requested @@ -38,7 +40,7 @@ 4- WHAT: bad request --------------------------------------------------------- 1 bit used to specify if this the last request/response - + 0- no stay connected, im not done responsing/requesting yet 1- yes, im done, disconnect --------------------------------------------------------- @@ -57,18 +59,20 @@ */ -#define MPTP_VERSION_SUPPORTED 0 -#define MPTP_VERSION_MAX 15 // 4 bits -#define MPTP_CODE_MAX 4 // 2 bits +// clang-format on -typedef enum lm_mptp_request{ +#define MPTP_VERSION_SUPPORTED 0 +#define MPTP_VERSION_MAX 15 // 4 bits +#define MPTP_CODE_MAX 4 // 2 bits + +typedef enum lm_mptp_request { MPTP_C2S_PING = 0, MPTP_C2S_INFO = 1, MPTP_C2S_LIST = 2, MPTP_C2S_PULL = 3, } lm_mptp_request_t; -typedef enum lm_mptp_response{ +typedef enum lm_mptp_response { MPTP_S2C_PONG = 0, MPTP_S2C_COOL = 1, MPTP_S2C_BRUH = 2, @@ -76,18 +80,18 @@ typedef enum lm_mptp_response{ } lm_mptp_response_t; typedef struct lm_mptp { - uint8_t flags; + uint8_t flags; uint16_t size; - char *data; + char *data; } lm_mptp_t; void lm_mptp_flags_set(lm_mptp_t *packet, uint8_t version, bool is_request, uint8_t code, bool is_last); -#define MPTP_FLAGS_VERSION(m) (m->flags >> 4) & 15 +#define MPTP_FLAGS_VERSION(m) (m->flags >> 4) & 15 #define MPTP_FLAGS_IS_REQUEST(m) ((m->flags >> 3) & 1) == 0 -#define MPTP_FLAGS_TYPE(m) (m->flags >> 1) & 3 -#define MPTP_FLAGS_IS_LAST(m) (m->flags & 1) == 1 +#define MPTP_FLAGS_TYPE(m) (m->flags >> 1) & 3 +#define MPTP_FLAGS_IS_LAST(m) (m->flags & 1) == 1 -int lm_mptp_connect(lm_url_t *url); +int lm_mptp_connect(lm_url_t *url); bool lm_mptp_recv(int socket, lm_mptp_t *packet); bool lm_mptp_send(int socket, lm_mptp_t *packet); void lm_mptp_disconnect(int socket); diff --git a/src/protocol.c b/src/mptp.c similarity index 100% rename from src/protocol.c rename to src/mptp.c