#ifndef __MQTTAPI_H
#define __MQTTAPI_H
#include "aitmqtt.h"
/* MQTT server structure & hooks */
/* MQTT command callback. 1st argument is (mqtt_srv_t*) server handle */
typedef int (*mqtt_cb_t)(void* /*mqtt_srv_t**/, void *);
typedef struct {
mqtt_cb_t cmds[MQTT_TYPE_MAX];
int sock;
mqtt_msg_t *buf;
} mqtt_srv_t;
#define mqtt_srv_setCmd(x, _cmd, _func) (assert((x)), (x)->cmds[(_cmd)] = (_func))
#define mqtt_srv_getCmd(x, _cmd) (assert((x)), (x)->cmds[(_cmd)])
/*
* mqtt_srv_Init() Init server side actor
*
* @sock = Client socket from accept()
* @buf = Message buffer
* return: NULL error or !=NULL allocated server handle
*/
mqtt_srv_t *mqtt_srv_Init(int sock, mqtt_msg_t * __restrict buf);
/*
* mqtt_srv_Fini() Finish MQTT server side support
*
* @psrv = Server handle
* return: none
*/
void mqtt_srv_Fini(mqtt_srv_t ** __restrict psrv);
/*
* mqtt_srv_Dispatch() MQTT server dispatcher
*
* @srv = Server handle
* @arg = Argument pass to command callback
* return: -1 error or 0 ok
*/
int mqtt_srv_Dispatch(mqtt_srv_t * __restrict srv, void *arg);
#endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>