Skip to content

Callback userdata #26

@yaozijian

Description

@yaozijian

1 回调函数或者hio_t需要上下文
读完成/写完成/关闭回调函数也许应该增加一个上下文参数,以便回调函数可以对不同的hio_t进行不同的处理。或者,允许对 hio_t 设置用户数据,就像对 hloop_t 那样。至少,应该提供接口,获取 hio_t 关联到的 hloop_t ,然后再获取 hloop_t 的用户数据。
现在这样的回调函数,太简单,不方便编程。

2 读写失败时的回调问题
读写失败了,就不会调用读写完成回调函数,而是调用关闭回调函数。这太简单了,如果我需要在读写完成回调函数中进行资源释放,该怎么办?需要额外编码记住进行中的读写操作,在关闭回调函数中对没有完成的读写操作进行处理(还不知道读写失败的错误码),这增加了复杂性。

建议参考Windows完成端口的设计
(1) 每个 hio_t 可以关联一个上下文(CreateIoCompletionPort函数的第3个参数)
(2) 每个读写操作可以关联一个上下文(OVERLAPPED结构体)
(3) 无论读写是成功,还是出错完成,都要调用完成回调函数。

代码中是有 hoverlapped_s 类型的,能否开放出来,供用户使用?

我刚开始用 libhv,发现有上述问题,也许是对libhv不熟悉,使用方法错了,请指正。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions