#include "global.h" #include "rtlm.h" sl_config cfg; int main(int argc, char **argv) { sqlite3 *acc = NULL, *pub = NULL; FILE *logg = NULL; int ret = 0; mqtt_subscr_t *s, *p; if (LoadConfig("/etc/mqtt.conf", &cfg)) { printf("Error:: Load config #%d - %s\n", cfg_GetErrno(), cfg_GetError()); return 1; } if (!mqttLoadRTLM(&cfg, 0)) { printf("Error:: Can't load RTL ACC module\n"); UnloadConfig(&cfg); return 2; } if (!mqttLoadRTLM(&cfg, 1)) { printf("Error:: Can't load RTL PUB module\n"); mqttUnloadRTLM(0); UnloadConfig(&cfg); return 2; } if (!mqttLoadRTLM(&cfg, 2)) { printf("Error:: Can't load RTL LOG module\n"); mqttUnloadRTLM(1); mqttUnloadRTLM(0); UnloadConfig(&cfg); return 2; } acc = call.OpenACC(&cfg); if (!acc) goto end; pub = call.OpenPUB(&cfg); if (!pub) goto end; logg = call.OpenLOG(&cfg); if (!logg) goto end; if (mqttMkDir(&cfg)) { printf("Error:: in statedir #%d - %s\n", errno, strerror(errno)); goto end; } call.LOG(logg, "success!\n"); if ((ret = call.LoginACC(&cfg, acc, "misho", "test123")) == -1) { printf("Error:: Authentication problem\n"); goto end; } else call.LOG(logg, "Login: %s\n", ret ? "ALLOW" : "DENIED"); if ((ret = call.InitSessPUB(&cfg, pub, "misho", "doophenschmerz", "127.0.0.1", 12345, 1, "Topic43", "mmm", 2, 0)) == -1) { printf("Error:: Session init problem\n"); goto end; } else call.LOG(logg, "InitSess: %d\n", ret); if ((ret = call.ChkSessPUB(&cfg, pub, "misho", "doophenschmerz", "127.0._.%")) == -1) { printf("Error:: Session check problem\n"); goto end; } else call.LOG(logg, "ChkSess: %d\n", ret); if ((ret = call.DeletePUB(&cfg, pub, 10, "%", "%", "%", -1)) == -1) { printf("Error:: Clear problem\n"); goto end; } else call.LOG(logg, "Clear: %d\n", ret); if ((ret = call.WritePUB(&cfg, pub, 10, "oho/boho", "MRYN \n tryn brymbryn", "misho", "1.1.1.1", 1)) == -1) { printf("Error:: Publish problem\n"); goto end; } else call.LOG(logg, "Publish: %d\n", ret); if ((ret = call.WritePUB(&cfg, pub, 11, "boh", "testing", "misho", "1.1.1.2", 0)) == -1) { printf("Error:: Publish problem\n"); goto end; } else call.LOG(logg, "Publish: %d\n", ret); if (!(s = call.ReadPUB(&cfg, pub, 10, "%", -1))) { printf("Error:: Subscribe problem\n"); goto end; } else { call.LOG(logg, "Subscribe: %p\n", s); for (p = s; p->sub_topic._base; p++) { printf("Retain=%d Topic(%d)=%s Value(%d)=%s\n", p->sub_ret, p->sub_topic._size, p->sub_topic._base, p->sub_value._size, p->sub_value._base); } mqtt_subFree(&s); } if ((ret = call.DeletePUB(&cfg, pub, 11, "boh", "misho", "1.1.1._", 0)) == -1) { printf("Error:: Delete problem\n"); goto end; } else call.LOG(logg, "Delete: %d\n", ret); if ((ret = call.FiniSessPUB(&cfg, pub, "misho", "doophenschmerz", "127.0._.1%")) == -1) { printf("Error:: Session fini problem\n"); goto end; } else call.LOG(logg, "FiniSess: %d\n", ret); end: call.CloseLOG(logg); call.ClosePUB(pub); call.CloseACC(acc); mqttUnloadRTLM(2); mqttUnloadRTLM(1); mqttUnloadRTLM(0); UnloadConfig(&cfg); return 0; }