libwebsockets:消息待处理

时间:2020-05-15 17:39:30

标签: c++ c libwebsockets

在我的用例中,我的消息很小,但是有很多,并且它们来的非常快。有时我的应用程序必须响应。但是,我希望它仅在处理完收到的所有消息后作出响应。

我通过以下方式接收消息:

static int lws_event_callback(struct lws* conn, enum lws_callback_reasons reason, void* user, void* data, size_t len)
{
    switch(reason)
    {
        case LWS_CALLBACK_CLIENT_RECEIVE:
        {
            my_callback_client_receive(data);
        }}}

我对libwebsockets的内部了解不多,但是从概念上讲,我可以想象到有可能在调用my_callback_client_receive时,其他消息已经到达。

在理想情况下,会有一个变量n,它表示“可以在缓冲区中等待处理的消息数”,我可以将该变量传递给回调函数

case LWS_CALLBACK_CLIENT_RECEIVE:
{
    my_callback_client_receive(data, n);
}

这样,在我处理尽可能多的消息之前,我将不响应。像这样:

void my_callback_client_receive(data, n)
{
    process(data);
    if (n>1):
        return; // this msg is not the most recent, keep processing
    else:
        send_response();
        return;
}

LWS可以做到这一点吗?

0 个答案:

没有答案
相关问题