我正在为mosquitto MQTT代理程序(版本1.5)实现一个插件,并且正在努力在插件实现内部访问指向mosquitto客户端结构的指针的某些元素:
#include <mosquitto_plugin.h>
...
int mosquitto_auth_acl_check(void *userdata, int access, const struct mosquitto *client, const struct mosquitto_acl_msg *msg)
{
const char *clientid = client->id;
const char *username = client->username;
...
}
在编译时,我检索到错误:
错误:取消引用不完整类型的指针
const char * clientid = client-> id;
有人可以给我一些建议如何访问客户端数据吗?
编辑:struct mosquitto是在mosquitto源代码(mosquitto_internal.h)内定义的:
struct mosquitto {
...
char *id;
char *username;
...
}
但是mosquitto_internal.h仅用于mosquitto内部使用,无法由我的插件访问(至少我认为是这样...)
在mosquitto_plugin.h(由mosquitto提供并包含在我的插件中)中,仅是对mosquitto结构的“引用”:
struct mosquitto;
因此,只要我不访问mosquitto结构的任何数据,它就可以成功编译,但是如果我尝试访问某些数据(如id),它将崩溃。
最佳答案
请使用mosquitto_broker.h
中提供的访问器功能,例如
const char *mosquitto_client_id(const struct mosquitto *client);
关于c++ - 无法通过Mosquitto MQTT Broker插件访问struct mosquitto的元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52404126/