--- mqtt/src/utils.c 2011/11/29 23:31:57 1.1.2.1 +++ mqtt/src/utils.c 2012/06/29 15:43:13 1.2.2.6 @@ -1,3 +1,59 @@ #include "global.h" +#include "mqttd.h" +#include "mqttd_calls.h" +inline int +srv_Socket(cfg_root_t * __restrict cfg) +{ + int s = -1; + ait_val_t v; + u_short port; + io_sockaddr_t sa = {{ 0 }}; + + ioTRACE(2); + + assert(cfg); + + cfg_loadAttribute(cfg, "mqttd", "port", &v, MQTT_PORT); + port = strtol(AIT_GET_STR(&v), NULL, 0); + AIT_FREE_VAL(&v); + cfg_loadAttribute(cfg, "mqttd", "listen", &v, MQTT_HOST); + if (!io_gethostbyname(AIT_GET_STR(&v), port, &sa)) { + ioLIBERR(io); + AIT_FREE_VAL(&v); + return -1; + } else + AIT_FREE_VAL(&v); + + s = mqtt_srv_Create(&sa.sa, sa.sa.sa_len); + if (s == -1) { + ioLIBERR(mqtt); + return -1; + } + + return s; +} + +inline int +srv_Close(int s) +{ + ioTRACE(2); + + return mqtt_srv_Destroy(s); +} + +inline int +srv_Will(struct tagSession * __restrict sess) +{ + int ret = 0; + + ioTRACE(2); + + ret = mqtt_msgPUBLISH(sess->sess_buf, sess->sess_will.topic, 0xDEAD, 0, 1, 0, + sess->sess_will.msg, sess->sess_will.msg ? strlen(sess->sess_will.msg) : 0); + if (ret == -1) + return -1; /* error */ + else + return cmdPUBLISH(sess->sess_srv, ret, sess); +}