首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将有效载荷传递给副翼处理程序?

如何将有效载荷传递给副翼处理程序?
EN

Stack Overflow用户
提问于 2022-02-21 23:22:19
回答 1查看 36关注 0票数 0

我在C中使用了副翼客户端实现,我需要结束。但C中没有闭包..。

例如:

代码语言:javascript
复制
void poll_handler(void *clientd, const uint8_t *buffer, size_t length, aeron_header_t *header)
{
    aeron_subscription_t* subscription = (aeron_subscription_t*)clientd;
    aeron_subscription_constants_t subscription_constants;
    aeron_header_values_t header_values;
    aeron_subscription_constants(subscription, &subscription_constants)
    aeron_header_values(header, &header_values);

    // How to get some_data here?
}

void some_func(int some_data)
{
    aeron_fragment_assembler_create(fragment_assembler, poll_handler, subscription)
}

我尝试使用Clang块扩展,但是没有接受块的函数实现。

如何在处理程序中获取一些本地数据?

EN

回答 1

Stack Overflow用户

发布于 2022-02-23 08:54:31

aeron_fragment_assembler_create函数将指向任何结构的指针作为第三个参数。它不需要是aeron_subscription_t*

您可以创建自己的结构,用必要的数据初始化它,并传递指向它的指针。为了方便起见,您可以在结构中保存指向aeron_subscription_t的指针。

差不多是这样的:

代码语言:javascript
复制
typedef struct some_data_t {
    aeron_subscription_t* subscription;
    // ...
} some_data_t ;

void poll_handler(void *clientd, const uint8_t *buffer, size_t length, aeron_header_t *header)
{
    some_data_t * some_data = (some_data_t *) clientd;
    aeron_subscription_t* subscription = some_data->subscription;

    // ...
}

void some_func(some_data_t* some_data)
{
    aeron_fragment_assembler_create(fragment_assembler, poll_handler, some_data)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71214171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档