我想将我自己定义的变量传递给on_message()
回调,但我似乎找不到任何明确的方法来做到这一点。
void on_connect(struct mosquitto *mosq, void *obj, int reason_code) {
mosquitto_subscribe(mosq, NULL, "example/topic", 1);
}
void on_message(struct mosquitto *mosq, void *obj, const struct mosquitto_message *msg) {
printf("%s %d %s\n", msg->topic, msg->qos, (char *)msg->payload);
// printf("My variable X = %d\n", x);
}
int main(int argc, char *argv[]) {
int x = 10;
struct mosquitto *mosq;
mosquitto_lib_init();
mosq = mosquitto_new(NULL, true, NULL);
mosquitto_connect_callback_set(mosq, on_connect);
mosquitto_message_callback_set(mosq, on_message);
mosquitto_connect(mosq, "test.mosquitto.org", 1883, 60);
mosquitto_loop_forever(mosq, -1, 1);
mosquitto_lib_cleanup();
return 0;
}
该文档提到了有关传递用户数据的一些内容,但我无法弄清楚如何做到这一点,如果有某种示例,我将不胜感激。
void mosquitto_connect_callback_set(struct mosquitto *mosq, void (*on_connect)(struct mosquitto *, void *, int));
参数:
mosq - 一个有效的 mosquitto 实例。
on_connect - 以下形式的回调函数:
void callback(struct mosquitto *mosq, void *obj, int rc)回调参数:
mosq - 进行回调的 mosquitto 实例。
obj - <mosquitto_new> 中提供的用户数据
rc - 连接响应的返回码。