Boost Asio绑定读取处理程序

锡安345

我试图绑定一个读取处理程序,而boost asio使我发疯。

我有以下课程

class namenode_registration: 
        public  boost::enable_shared_from_this<namenode_registration>,
        private boost::noncopyable {
private:
     [...]
public:
    namenode_registration(....);
    [...]
    void handle_request_sent(const boost::system::error_code& e);
    void handle_read_reply_type(boost::asio::mutable_buffers_1& buffer,
        const boost::system::error_code& e, std::size_t bytes_transferred);
};

通过以下实现:

void namenode_registration::handle_request_sent(
        const boost::system::error_code& e) {
    if (!e) {
        boost::asio::async_read(socket_,
                boost::asio::buffer(buffer_data_, namenode::reply::type_size),
                boost::bind(&namenode_registration::handle_read_reply_type,
                        shared_from_this(), boost::asio::placeholders::error,
                        boost::asio::placeholders::bytes_transferred));
    }
}

而且我真的不明白为什么它不能编译:

In file included from /usr/include/boost/bind.hpp:22:0,
                from /home/.../datanode/namenode_registration.cpp:9:
/usr/include/boost/bind/bind.hpp:
    In instantiation of ‘boost::_bi::result_traits<boost::_bi::unspecified,
    void (datanode::namenode_registration::*)(boost::asio::mutable_buffers_1&,
    const boost::system::error_code&, long unsigned int)>’:
/usr/include/boost/bind/bind_template.hpp:15:48:
    instantiated from ‘boost::_bi::bind_t<boost::_bi::unspecified, void (datanode::namenode_registration::*
    (boost::asio::mutable_buffers_1&, const boost::system::error_code&, long unsigned int),
    boost::_bi::list3<boost::_bi::value<boost::shared_ptr<datanode::namenode_registration> >,
    boost::arg<1> (*)(), boost::arg<2> (*)()> >’
/home/.../datanode/namenode_registration.cpp:50:51:
    instantiated from here
/usr/include/boost/bind/bind.hpp:69:37:
    erreur: ‘void (datanode::namenode_registration::*)(boost::asio::mutable_buffers_1&,
    const boost::system::error_code&, long unsigned int)’ is not a class, struct, or union type
乔纳森·韦克利(Jonathan Wakely)

您尚未为该函数绑定足够的参数:

void handle_read_reply_type(boost::asio::mutable_buffers_1& buffer,
    const boost::system::error_code& e, std::size_t bytes_transferred);

您缺少buffer参数:

            boost::bind(&namenode_registration::handle_read_reply_type,
                    shared_from_this(), boost::asio::placeholders::error,
                    boost::asio::placeholders::bytes_transferred));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

boost asio绑定端点

来自分类Dev

boost asio绑定端点

来自分类Dev

使用Boost ASIO进行Boost异常处理

来自分类Dev

使用Boost ASIO进行Boost异常处理

来自分类Dev

为什么Boost Asio信号处理程序立即被取消?

来自分类Dev

如何使用Lambda进行Boost Asio异步完成处理程序

来自分类Dev

boost :: asio :: deadline_timer不调用处理程序

来自分类Dev

为什么Boost Asio信号处理程序立即被取消?

来自分类Dev

如何使用Lambda进行Boost Asio异步完成处理程序

来自分类Dev

boost :: asio自定义处理程序分配

来自分类Dev

boost :: asio :: deadline_timer不调用处理程序

来自分类Dev

ASIO处理程序参数和boost :: bind,编译时错误

来自分类Dev

不保持 io_service 运行的 Boost asio 处理程序

来自分类Dev

Boost Asio - boost::bind 导致程序崩溃

来自分类Dev

绑定端点时的boost :: asio绑定异常

来自分类Dev

从其处理程序或处理程序dtor中破坏boost :: asio计时器安全吗?

来自分类Dev

从其处理程序或处理程序dtor中销毁boost :: asio计时器是否安全?

来自分类Dev

使用boost :: asio从套接字读取JSON

来自分类Dev

boost asio取消读取而不取消写入

来自分类Dev

Boost asio异步读取然后写入

来自分类Dev

如何使用 boost::asio::spawn 构建程序

来自分类Dev

boost :: asio :: signal_set不会还原以前的信号处理程序

来自分类Dev

在不关闭本机处理程序的情况下销毁Boost Asio套接字

来自分类Dev

Boost库asio示例中的处理程序分配之前的[this,self]是什么?

来自分类Dev

Boost Asio connect_async永不调用处理程序

来自分类Dev

Boost :: asio :: async_read_until永远不会调用处理程序

来自分类Dev

boost asio处理程序中的长时间运行/阻止操作

来自分类Dev

Boost Asio connect_async永不调用处理程序

来自分类Dev

boost :: asio :: signal_set不会还原以前的信号处理程序

Related 相关文章

  1. 1

    boost asio绑定端点

  2. 2

    boost asio绑定端点

  3. 3

    使用Boost ASIO进行Boost异常处理

  4. 4

    使用Boost ASIO进行Boost异常处理

  5. 5

    为什么Boost Asio信号处理程序立即被取消?

  6. 6

    如何使用Lambda进行Boost Asio异步完成处理程序

  7. 7

    boost :: asio :: deadline_timer不调用处理程序

  8. 8

    为什么Boost Asio信号处理程序立即被取消?

  9. 9

    如何使用Lambda进行Boost Asio异步完成处理程序

  10. 10

    boost :: asio自定义处理程序分配

  11. 11

    boost :: asio :: deadline_timer不调用处理程序

  12. 12

    ASIO处理程序参数和boost :: bind,编译时错误

  13. 13

    不保持 io_service 运行的 Boost asio 处理程序

  14. 14

    Boost Asio - boost::bind 导致程序崩溃

  15. 15

    绑定端点时的boost :: asio绑定异常

  16. 16

    从其处理程序或处理程序dtor中破坏boost :: asio计时器安全吗?

  17. 17

    从其处理程序或处理程序dtor中销毁boost :: asio计时器是否安全?

  18. 18

    使用boost :: asio从套接字读取JSON

  19. 19

    boost asio取消读取而不取消写入

  20. 20

    Boost asio异步读取然后写入

  21. 21

    如何使用 boost::asio::spawn 构建程序

  22. 22

    boost :: asio :: signal_set不会还原以前的信号处理程序

  23. 23

    在不关闭本机处理程序的情况下销毁Boost Asio套接字

  24. 24

    Boost库asio示例中的处理程序分配之前的[this,self]是什么?

  25. 25

    Boost Asio connect_async永不调用处理程序

  26. 26

    Boost :: asio :: async_read_until永远不会调用处理程序

  27. 27

    boost asio处理程序中的长时间运行/阻止操作

  28. 28

    Boost Asio connect_async永不调用处理程序

  29. 29

    boost :: asio :: signal_set不会还原以前的信号处理程序

热门标签

归档