ACE之Acceptor-Connector框架

简介

Acceptor-Connector框架解除了“对端服务的连接和初始化”和“连接和初始化之后处理”的耦合

结构

ACE_Acceptor<SVC_HANDLER, PEER_ACCEPTOR>
ACE_Connector<SVC_HANDLER, PEER_CONNECTOR>
ACE_Connector_Base<SVC_HANDLER>
ACE_Svc_Handler<PEER_STREAM, SYNCH_TRAITS>
ACE_Service_Object
PEER_ACCEPTOR
PEER_CONNECTOR
ACE_Task<SYNCH_TRAITS>

ACE_Acceptor:被动连接方
ACE_Connector :主动连接方
ACE_Svc_Handler:被动连接方和主动连接方的处理器

Acceptor簇

ACE_Acceptor<SVC_HANDLER, PEER_ACCEPTOR>
# PEER_ACCEPTOR peer_acceptor_
#int make_svc_handler(SVC_HANDLER *&sh)
#int accept_svc_handler(SVC_HANDLER *svc_handler)
#int activate_svc_handler(SVC_HANDLER *svc_handler)
ACE_Strategy_Acceptor<SVC_HANDLER, PEER_ACCEPTOR>
# CREATION_STRATEGY *creation_strategy_
# ACCEPT_STRATEGY *accept_strategy_
# CONCURRENCY_STRATEGY *concurrency_strategy_
# SCHEDULING_STRATEGY *scheduling_strategy_
ACE_Oneshot_Acceptor<SVC_HANDLER, PEER_ACCEPTOR>
ACE_Service_Object
ACE_Creation_Strategy<SVC_HANDLER>
ACE_Accept_Strategy<SVC_HANDLER>
ACE_Concurrency_Strategy<SVC_HANDLER>
ACE_Scheduling_Strategy<SVC_HANDLER>

make_svc_handler :创建SVC_HANDLER
accept_svc_handler :接收客户端连接,设置SVC_HANDLER的peer_stream
activate_svc_handler:将SVC_HANDLER 注册到reactor中

ACE_Creation_Strategy

主要是创建SVC_HANDLER,即SVC_HANDLER的初始化处理

ACE_Creation_Strategy<SVC_HANDLER>
# ACE_Thread_Manager *thr_mgr_
# ACE_Reactor *reactor_
+int make_svc_handler(SVC_HANDLER *&sh)
ACE_Singleton_Strategy<SVC_HANDLER>
ACE_DLL_Strategy<SVC_HANDLER>

ACE_Accept_Strategy

处理接受连接

ACE_Accept_Strategy<SVC_HANDLER>
# ACE_PEER_ACCEPTOR peer_acceptor_
# ACE_Reactor *reactor_
# ACE_PEER_ACCEPTOR_ADDR peer_acceptor_addr_
+int accept_svc_handler(SVC_HANDLER *)

ACE_Concurrency_Strategy

激活SVC_HANDLER的处理

ACE_Concurrency_Strategy<SVC_HANDLER>
+int activate_svc_handler(SVC_HANDLER *svc_handler, void *arg = 0)
ACE_Reactive_Strategy<SVC_HANDLER>
ACE_Thread_Strategy<SVC_HANDLER>
ACE_Process_Strategy<SVC_HANDLER>

ACE_Scheduling_Strategy

ACE_Scheduling_Strategy<SVC_HANDLER>
+int suspend(void)
+int resume(void)
ACE_Schedule_All_Reactive_Strategy<SVC_HANDLER>
ACE_Schedule_All_Threaded_Strategy<SVC_HANDLER>

Acceptor的open

其时序为

server ACE_Acceptor PEER_ACCEPTOR Reactor open open enable register_handler server ACE_Acceptor PEER_ACCEPTOR Reactor
  • 首先调用PEER_ACCEPTOR(ACE_Sock_Acceptor)的open方法创建socket,绑定地址,并且监听
  • 将套接字设置非阻塞
  • 将读事件注册到reactor中

Acceptor的handle_input

其时序为

Reactor ACE_Acceptor SVC_HANDLER PEER_ACCEPTOR handle_input make_svc_handler create accept_svc_handler accept activate_svc_handler open Reactor ACE_Acceptor SVC_HANDLER PEER_ACCEPTOR

Connector簇

ACE_Connector<SVC_HANDLER, PEER_CONNECTOR>
#int make_svc_handler(SVC_HANDLER *&sh)
#int connect_svc_handler(SVC_HANDLER *&svc_handler,const typename PEER_CONNECTOR::PEER_ADDR &remote_addr,ACE_Time_Value *timeout,const typename PEER_CONNECTOR::PEER_ADDR &local_addr,int reuse_addr,int flags,int perms)
#int connect_svc_handler(SVC_HANDLER *&svc_handler,SVC_HANDLER *&sh_copy,const typename PEER_CONNECTOR::PEER_ADDR &remote_addr,ACE_Time_Value *timeout,const typename PEER_CONNECTOR::PEER_ADDR &local_addr,int reuse_addr,int flags,int perms)
#int activate_svc_handler(SVC_HANDLER *svc_handler)
ACE_Strategy_Connector<SVC_HANDLER, PEER_CONNECTOR>
- ACE_Creation_Strategy<SVC_HANDLER> *creation_strategy_
- ACE_Connect_Strategy<SVC_HANDLER, PEER_CONNECTOR> *connect_strategy_
- ACE_Concurrency_Strategy<SVC_HANDLER> *concurrency_strategy_
ACE_Connect_Strategy<SVC_HANDLER, ACE_PEER_CONNECTOR>
# ACE_PEER_CONNECTOR connector_
+int connect_svc_handler(SVC_HANDLER *&sh,const ACE_PEER_CONNECTOR_ADDR &remote_addr,ACE_Time_Value *timeout,const ACE_PEER_CONNECTOR_ADDR &local_addr,bool reuse_addr,int flags,int perms)
+int connect_svc_handler(SVC_HANDLER *&sh,SVC_HANDLER *&sh_copy,const ACE_PEER_CONNECTOR_ADDR &remote_addr,ACE_Time_Value *timeout,const ACE_PEER_CONNECTOR_ADDR &local_addr,bool reuse_addr,int flags,int perms)
ACE_Cached_Connect_Strategy<SVC_HANDLER, ACE_PEER_CONNECTOR_1, MUTEX>
ACE_Connection_Recycling_Strategy

Connector的connect

其时序为

client ACE_Connector SVC_HANDLER PEER_CONNECTOR connect make_svc_handler create connect_svc_handler connect activate_svc_handler open client ACE_Connector SVC_HANDLER PEER_CONNECTOR
  • 22
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kgduu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值