summaryrefslogtreecommitdiff
path: root/src/swarmkv_message.h
blob: ebc880179035385166e0e991bb84c852aea1526a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#pragma once
#include "swarmkv/swarmkv.h"
#include "swarmkv_common.h"

#include <stdint.h>

enum swarmkv_msg_type
{
    SWARMKV_MSG_TYPE_CMD,
    SWARMKV_MSG_TYPE_REPLY
};
struct swarmkv_msg
{
    enum swarmkv_msg_type type;
    uint64_t sequence;
    union
    {
        struct swarmkv_cmd *cmd;
        struct swarmkv_reply *reply;
    };
};

struct swarmkv_msg *swarmkv_msg_new_by_cmd(const struct swarmkv_cmd *cmd, long long sequence);
struct swarmkv_msg *swarmkv_msg_new_by_reply(const struct swarmkv_reply *reply, long long sequence);
void swarmkv_msg_free(struct swarmkv_msg *msg);

void swarmkv_msg_serialize(const struct swarmkv_msg *msg, char **blob, size_t *blob_sz);
struct swarmkv_msg *swarmkv_msg_deserialize(const char *blob, size_t size);