`
pleasetojava
  • 浏览: 730042 次
  • 性别: Icon_minigender_2
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

小技巧: ACE_Svc_Handler的初始化

阅读更多
小技巧: ACE_Svc_Handler的初始化
Stone Jiang











ACE_Svc_Handler经常用于网络服务类的基类,这是因为它很容易在主动对象(Active Ojbect)
模式和反应器(Reactor)框架中使用。APG第7.6节中讨论了怎么在接受器-连接器(Acceptor-conector)
框架中如何把ACE_Svc_Handler作为目标来使用,并且,在C++NPv2第7章中,深度探讨了
Acceotor-Connector的相关设计。

挂勾函数(Hook method)ACE_Svc_Handler::open()常是服务中新建连接时执行的初始化设置的地方。
举例来说,如果服务要在日志中记录新连接建立的相关信息,open()函数是则是记录这个信息的地方。
对于使用Reacotor 框架的服务检查网络数据到达,open()是执行reactor注册的地方。
事实上,这正是reactor注册的地方,这种动作在服务建立新连接时非常常见的,ACE_Svc_Handler::
open()的缺省操作也正是


if (this->reactor () && this->reactor ()->register_handler
(this,
ACE_Event_Handler::READ_MASK) == -1)
ACE_ERROR_RETURN ((LM_ERROR,
ACE_LIB_TEXT ("%p\n"),
ACE_LIB_TEXT ("unable to register client handler")),
-1);
return 0;

所以,如果在与服务建立新连接并为“读事件”注册时,你甚至不需要在你的类中
实现open(void*)函数,ACE已经为你做了这一步!另外,请记住,如果reactor注册失败,
默认的open()函数会返回-1,它会引起Acceptor-Connector框架关闭新建的连接和删除这个
事件处理器(handler)。

分享到:
评论

相关推荐

    ACE编写的简单网络服务器

    1. **初始化ACE库**:在程序开始时,需要调用`ACE_OS::init()`函数初始化ACE环境。 2. **创建Acceptor**:使用`ACE_Acceptor`或`ACE_Reactor`的派生类来监听指定端口上的连接请求。这通常涉及到创建一个`ACE_SOCK_...

    ACE框架知识

    - **zero**: 初始化一个`ACE_Event_Handler`对象,并关联特定的`ACE_Reactor`实例。 - **handle_input(ACE_HANDLE)**: 处理输入事件,返回值通常表示是否成功处理。 - **handle_output(ACE_HANDLE)**: 处理输出...

    ACE_server.rar_ACE server_ACE tcp_ACE_SERVER_ACE框架_ace server cl

    3. `ACE_Svc_Handler`:处理具体的业务逻辑,继承自`ACE_Event_Handler`,实现读写回调函数。 4. `ACE_Thread_Manager`:用于管理线程,确保资源的正确释放。 客户端可能包含以下组件: 1. `ACE_SOCK_Connector`:...

    ACE_MFC.rar_ACE_ACE_MFC

    标题中的"ACE_MFC.rar_ACE_ACE_MFC"很可能是一个压缩包,包含了ACE MFC版本的库文件和相关的资源。这个压缩包可能是为了方便开发者在使用Visual C++ 2005进行项目开发时,可以直接引入这些库文件,以便利用ACE的网络...

    ACE_server.rar_ACE server

    1. **初始化ACE_WSOCK32.lib和ACE.dll**: 在Windows环境下,ACE服务器和客户端需要链接这些库,以支持网络I/O操作。 2. **定义服务端口和协议**: ACE支持多种网络协议,包括TCP/IP。在TCP服务器中,需要指定监听的...

    ACE开发指南(初级).

    if (reactor.register_handler(&client_handler, ACE_Event_Handler::READ_MASK) == -1) { ACE_ERROR((LM_ERROR, "Failed to register handler\n")); return -1; } reactor.run_reactor_event_loop(); return...

    ACE.zip_ACE_ACE p_ACE source code

    标题中的"ACE.zip_ACE_ACE p_ACE source code"表明这是一个包含ACE库源代码的压缩文件。"ACE p"可能是指"ACE Proactor",它是ACE库的一部分,提供了异步事件处理的能力。"ACE source code"则直接指明了压缩包内的...

    C++ 内存分配处理函数set_new_handler的使用

    《C++内存分配处理函数set_new_handler的使用详解》 C++编程语言提供了一种机制,当内存分配失败时能够自定义处理行为,这就是通过`set_new_handler`函数。这个函数允许程序员在new操作或new[]操作无法为对象分配...

    一个简单的ace C/S 供学习参考

    2. `ACE_Svc_Handler`: 和服务端一样,客户端也需要一个`ACE_Svc_Handler`实例来处理与服务器的通信,包括接收数据和发送请求。 3. 数据交互:客户端通过`ACE_Svc_Handler`发送请求给服务端,并接收服务端的响应。...

    ACE的中文文档(讲解ACE库)

    6. **时间管理和定时器**:ACE_Timestamp和ACE_Time_Value类提供了精确的时间操作,而ACE_Timer_Queue和ACE_Event_Handler则实现了定时任务的注册和执行。 7. **对象间通信**:ACE提供了一种基于消息的通信机制,如...

    BOOTLOADER 第一阶段代码分析

    这部分代码负责系统的初始化工作,包括设置异常向量表、进入 SVC 模式以及禁用中断等。这些步骤对于确保系统能够顺利启动至关重要。此外,异常处理程序的设计也体现了 ARM 处理器在处理各种异常情况时的灵活性和高效...

    ACE多级线程实例

    ### ACE多级线程实例分析 #### 一、概述 本文档主要介绍ACE框架下的多线程编程技术,包括线程锁(Mutex)与多线程应用实例等内容。...希望本文能帮助读者更好地理解和掌握ACE框架下的多线程编程技巧。

    Python库 | concurrent_log_handler-0.9.4-py2.py3-none-any.whl

    资源分类:Python库 所属语言:Python 使用前提:需要解压 资源全名:concurrent_log_handler-0.9.4-py2.py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    Websocketpp实现自己的web服务器

    接着,你需要创建一个服务器实例,并使用配置类初始化。服务器实例化后,可以注册回调函数来处理各种事件,例如连接建立、消息接收、连接关闭等。以下是一个基本示例: ```cpp #include typedef websocketpp::...

    ACE编程(linux平台)[归类].pdf

    在这里,`HA_MessageReceiver`继承自`ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_MT_SYNCH>`,用于接收并处理来自客户端的`ACE_SOCK_ACCEPTOR`连接。 8. **测试客户端**:客户端可以使用`This->peer().send_n`方法发送...

    ACE_Proactor网络通信示例代码

    首先,`Tcp.cpp`可能是主程序入口,它可能负责初始化ACE_Proactor,并创建必要的网络组件。`TcpHandler.cpp`则包含了TCP连接的处理器类,这个类通常会继承自ACE_Event_Handler,处理来自网络的输入和输出事件。 `...

    ACE编程(linux平台)借鉴.pdf

    例如,你可以创建一个名为message_receiver的类,继承自ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_MT_SYNCH>,用于接收消息。消息会被封装成ACE_Message_Block对象并放入队列。另一个名为message_handler的类,继承自...

    ace技术内幕示例代码

    7. **对象适配器**:ACE的对象适配器如`ACE_Service_Object`和`ACE_Svc_Handler`,帮助管理和调度服务对象,使其能被Reactor正确地激活和关闭。 8. **内存管理**:ACE提供了`ACE_Malloc`和`ACE_TSS`等工具,用于...

    ace技术内幕实例代码

    9. **ACE_Svc_Handler**:服务处理器,通常与Reactor配合使用,处理来自网络的请求。 10. **ACE_Log_Priority** 和 **ACE_DEBUG**:日志记录工具,用于调试和记录程序运行信息。 通过"ace技术内幕示例代码",我们...

Global site tag (gtag.js) - Google Analytics