0

我想将我自己定义的变量传递给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 - 连接响应的返回码。

4

0 回答 0