AsyncMessager初步

ceph_osd.cc
// 创建AsyncMessager对象
|---Messenger *ms_public = Messenger::create(g_ceph_context, public_msgr_type, entity_name_t::OSD(whoami), "client",
                       getpid(), Messenger::HAS_HEAVY_TRAFFIC | Messenger::HAS_MANY_CONNECTIONS);
|---starting osd.0 at 空(ms_public->get_myaddr()) osd_data /var/lib/ceph/osd/ceph-0 (g_conf->osd_data) $1/journal(g_conf->osd_journal)
// 设置通信协议
|---ms_public->set_default_policy(Messenger::Policy::stateless_server(0)); // Policy(true, true, false, false, req);
    |---SimplePolicyMessenger::void set_default_policy(Policy p) override
        |---default_policy = p;
|---boost::scoped_ptr<Throttle> client_byte_throttler(new Throttle(g_ceph_context, "osd_client_bytes", g_conf->osd_client_message_size_cap));
|---ms_public->set_policy_throttlers(entity_name_t::TYPE_CLIENT, client_byte_throttler.get(), nullptr);
    |---default_policy.throttler_bytes = byte_throttle  
    |---default_policy.throttler_messages = msg_throttle // null
// Policy(true, false, false, false, req)
|---ms_public->set_policy(entity_name_t::TYPE_MON, Messenger::Policy::lossy_client(CEPH_FEATURE_UID | CEPH_FEATURE_PGID64 | CEPH_FEATURE_OSDENC));
    |---policy_map[type] = p;
|---ms_public->set_policy(entity_name_t::TYPE_MGR, Messenger::Policy::lossy_client(CEPH_FEATURE_UID | CEPH_FEATURE_PGID64 | CEPH_FEATURE_OSDENC));
    |---policy_map[type] = p;
|---ms_public->set_policy(entity_name_t::TYPE_OSD, Messenger::Policy::stateless_server(0)); // Policy(true, true, false, false, 0)
    |---policy_map[type] = p;
// 绑定端口
|---ms_public->bind(g_conf->public_addr); // AsyncMessenger::bind(const entity_addr_t &bind_addr) 172.17.22.25:0/0
    |---for (auto &&p : processors) 
        |--- p->bind(bind_addr, avoid_ports, &bound_addr); // int Processor::bind(const entity_addr_t &bind_addr, const set<int>& avoid_ports, entity_addr_t* bound_addr)
            |---bound on random port 172.17.22.25:6801/0
            |---bound to 172.17.22.25:6801/25921
    |---_finish_bind(bind_addr, bound_addr);
        |---bind my_inst.addr is 172.17.22.25:6801/25921
// 启动
ms_public->start()  // AsyncMessenger::start
|---if (!did_bind)  // did_bind 0
|---
|---
|---
|---
|---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值