aboutsummaryrefslogtreecommitdiff
path: root/test/interop/testclient.h
blob: 2aa229b49c3eab6189ed9503c8ab1698c14c0aa9 (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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#ifndef TESTCLIENT_H
#define TESTCLIENT_H

#include "mqtt.h"
#include "private.h"
#include "queue.h"

typedef struct Message Message;

struct Message
{
    SIMPLEQ_ENTRY(Message) chain;
    char *topic;
    void *data;
    size_t size;
    int qos;
    int retain;
};

typedef struct TestClient TestClient;

struct TestClient
{
    MqttClient *client;

    /* OnConnect */
    MqttConnectionStatus connectionStatus;
    int sessionPresent;

    /* OnSubscribe */
    int subId;
    MqttSubscriptionStatus subStatus[16];
    int subCount;

    /* OnPublish */
    int pubId;

    /* OnMessage */
    SIMPLEQ_HEAD(messages, Message) messages;
};

Message *MessageNew(const char *topic, const void *data, size_t size,
                    int qos, int retain);

void MessageFree(Message *msg);

TestClient *TestClientNew(const char *clientId);

void TestClientFree(TestClient *client);

int TestClientConnect(TestClient *client, const char *host, int port,
                      int keepAlive, int cleanSession);

void TestClientDisconnect(TestClient *client);

int TestClientSubscribe(TestClient *client, const char *topicFilter, int qos);

int TestClientSubscribeMany(TestClient *client, const char **topicFilter,
                            int *qos, size_t count);

int TestClientPublish(TestClient *client, int qos, int retain,
                      const char *topic, const char *message);

int TestClientMessageCount(TestClient *client);

int TestClientWait(TestClient *client, int timeout);

#endif