/* see LICENSE file for copyright and license details. */ #ifndef COBBLE_PROTOCOL_H #define COBBLE_PROTOCOL_H struct __attribute__((__packed__)) uuid { uint64_t part1; uint64_t part2; }; /* read */ size_t read_long(int64_t *output, uint8_t *buf, size_t buf_len); size_t read_ushort(uint16_t *output, uint8_t *buf, size_t buf_len); size_t read_int(int32_t *output, uint8_t *buf, size_t buf_len); size_t read_varint(int32_t *output, uint8_t *buf, size_t buf_len); size_t read_varlong(int64_t *output, uint8_t *buf, size_t buf_len); size_t read_string(char **output, uint8_t *buf, size_t buf_len); size_t read_bool(bool *output, uint8_t *buf, size_t buf_len); /* write */ size_t write_long(int64_t input, uint8_t *buf); size_t write_ushort(uint16_t input, uint8_t *buf); size_t write_int(int32_t input, uint8_t *buf); size_t write_varint(int32_t input, uint8_t *buf); size_t write_varlong(int64_t input, uint8_t *buf); size_t write_string(char *input, uint8_t *buf); size_t write_bool(bool input, uint8_t *buf); /* get length */ size_t get_varint_len(int32_t input); size_t get_varlong_len(int64_t input); size_t get_string_len(char* input); /* other */ bool generate_uuid(char *username, struct uuid*); #endif