diff options
| author | Kimplul <kimi.h.kuparinen@gmail.com> | 2023-05-05 23:13:42 +0300 |
|---|---|---|
| committer | Kimplul <kimi.h.kuparinen@gmail.com> | 2023-05-05 23:13:42 +0300 |
| commit | 1a2ff9a1e5b91b7e307246ed2f4b898f1e179806 (patch) | |
| tree | 6da407851e3b01fadd1ffba64fbdffce71dab68a /src/packet.c | |
| parent | 79f67d5ca820b663e9e5682aaaad07118fdbfad8 (diff) | |
| download | gran-1a2ff9a1e5b91b7e307246ed2f4b898f1e179806.tar.gz gran-1a2ff9a1e5b91b7e307246ed2f4b898f1e179806.zip | |
add async packets
Diffstat (limited to 'src/packet.c')
| -rw-r--r-- | src/packet.c | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/src/packet.c b/src/packet.c new file mode 100644 index 0000000..3582020 --- /dev/null +++ b/src/packet.c @@ -0,0 +1,75 @@ +#include <gran/packet.h> +#include <stdlib.h> + +struct packet { + enum packet_state state; + enum packet_type type; + + uintptr_t addr; + size_t size; + void *data; +}; + + +struct packet *create_packet(enum packet_type type, uintptr_t addr, size_t size) +{ + struct packet *pkt = calloc(1, sizeof(struct packet) + size); + if (!pkt) + return NULL; + + pkt->state = PACKET_INIT; + pkt->type = type; + pkt->addr = addr; + pkt->size = size; + pkt->data = pkt + 1; + return pkt; +} + +struct packet *create_packet_with(enum packet_type type, uintptr_t addr, size_t size, void *data) +{ + struct packet *pkt = calloc(1, sizeof(struct packet)); + if (!pkt) + return NULL; + + pkt->state = PACKET_INIT; + pkt->type = type; + pkt->addr = addr; + pkt->size = size; + pkt->data = data; + return pkt; +} + +enum packet_type packet_type(struct packet *pkt) +{ + return pkt->type; +} + +enum packet_state packet_state(struct packet *pkt) +{ + return pkt->state; +} + +void packet_set_state(struct packet *pkt, enum packet_state state) +{ + pkt->state = state; +} + +size_t packet_size(struct packet *pkt) +{ + return pkt->size; +} + +uintptr_t packet_addr(struct packet *pkt) +{ + return pkt->addr; +} + +void *packet_data(struct packet *pkt) +{ + return pkt->data; +} + +void destroy_packet(struct packet *pkt) +{ + free(pkt); +} |
