⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 reactive_io_helpers.h

📁 ACE自适配通信环境(ADAPTIVE Communication Environment)是可以自由使用、开放源码的面向对象(OO)框架(Framework)
💻 H
字号:
/* -*- c++ -*- */// Reactive_IO_Helpers.h,v 1.3 2005/02/14 23:27:15 shuston Exp#ifndef JAWS_REACTIVE_IO_HELPERS_H#define JAWS_REACTIVE_IO_HELPERS_H#include "ace/Event_Handler.h"#include "ace/Message_Block.h"#include "ace/Singleton.h"#include "ace/Time_Value.h"#include "jaws3/Export.h"#include "jaws3/IO.h"#include "jaws3/Event_Result.h"#include "jaws3/Event_Completer.h"class JAWS_Reactive_IO;class JAWS_IO_Reactive_Handler : public ACE_Event_Handler{  friend class JAWS_IO_Reactive_Send;  friend class JAWS_IO_Reactive_Recv;  friend class JAWS_IO_Reactive_Transmit;public:  virtual void open (void);  int handle_timeout (const ACE_Time_Value &, const void *);  int handle_close (ACE_HANDLE, ACE_Reactor_Mask);  int handle_exception (ACE_HANDLE);  ACE_HANDLE get_handle (void) const { return this->handle_; }  void set_handle (ACE_HANDLE handle) { this->handle_ = handle; }protected:  virtual void close (int result);private:  JAWS_IO_Reactive_Handler ( ACE_HANDLE handle                           , JAWS_Event_Completer *completer                           , const ACE_Time_Value &tv                           , void *act                           , ACE_Reactor_Mask mask                           )    : bytes_ (0)    , handle_ (handle)    , completer_ (completer)    , tv_ (tv)    , act_ (act)    , mask_ (mask)    , timer_id_ (-1)    , was_active_ (0)  {    if (ACE_Time_Value::zero < this->tv_)      this->timer_id_ =        ACE_Reactor::instance ()->schedule_timer (this, 0, this->tv_);  }public: // needed for destructor due to "aCC: HP ANSI C++ B3910B A.03.39" compiler bug  ~JAWS_IO_Reactive_Handler (void)  {    if (this->timer_id_ != -1)      ACE_Reactor::instance ()->cancel_timer (this->timer_id_);  }private:  JAWS_Event_Result io_result_;  size_t bytes_;  ACE_HANDLE handle_;  JAWS_Event_Completer *completer_;  ACE_Time_Value tv_;  void *act_;  ACE_Reactor_Mask mask_;  long timer_id_;  int was_active_;};class JAWS_IO_Reactive_Send : public JAWS_IO_Reactive_Handler{  friend class JAWS_Reactive_IO;public:  int handle_output (ACE_HANDLE handle);  static JAWS_IO_Reactive_Send * make ( ACE_HANDLE handle                                      , ACE_Message_Block *mb                                      , JAWS_Event_Completer *completer                                      , void *act                                      )  {    return new JAWS_IO_Reactive_Send ( handle                                     , mb                                     , completer                                     , ACE_Time_Value::zero                                     , act                                     , ACE_Event_Handler::WRITE_MASK                                     );  }  static JAWS_IO_Reactive_Send * make ( ACE_HANDLE handle                                      , ACE_Message_Block *mb                                      , JAWS_Event_Completer *completer                                      , const ACE_Time_Value &tv                                      , void *act                                      )  {    return new JAWS_IO_Reactive_Send ( handle                                     , mb                                     , completer                                     , tv                                     , act                                     , ACE_Event_Handler::WRITE_MASK                                     );  }private:  JAWS_IO_Reactive_Send ( ACE_HANDLE handle                        , ACE_Message_Block *mb                        , JAWS_Event_Completer *completer                        , const ACE_Time_Value &tv                        , void *act                        , ACE_Reactor_Mask mask                        )    : JAWS_IO_Reactive_Handler (handle, completer, tv, act, mask)    , mb_ (mb)  {  }private:  ACE_Message_Block *mb_;};class JAWS_IO_Reactive_Recv : public JAWS_IO_Reactive_Handler{  friend class JAWS_Reactive_IO;public:  int handle_input (ACE_HANDLE handle);  static JAWS_IO_Reactive_Recv * make ( ACE_HANDLE handle                                      , ACE_Message_Block *mb                                      , JAWS_Event_Completer *completer                                      , void *act                                      )  {    return new JAWS_IO_Reactive_Recv ( handle                                     , mb                                     , completer                                     , ACE_Time_Value::zero                                     , act                                     , ACE_Event_Handler::READ_MASK                                     );  }  static JAWS_IO_Reactive_Recv * make ( ACE_HANDLE handle                                      , ACE_Message_Block *mb                                      , JAWS_Event_Completer *completer                                      , const ACE_Time_Value &tv                                      , void *act                                      )  {    return new JAWS_IO_Reactive_Recv ( handle                                     , mb                                     , completer                                     , tv                                     , act                                     , ACE_Event_Handler::READ_MASK                                     );  }private:  JAWS_IO_Reactive_Recv ( ACE_HANDLE handle                        , ACE_Message_Block *mb                        , JAWS_Event_Completer *completer                        , const ACE_Time_Value &tv                        , void *act                        , ACE_Reactor_Mask mask                        )    : JAWS_IO_Reactive_Handler (handle, completer, tv, act, mask)    , mb_ (mb)  {  }private:  ACE_Message_Block *mb_;};class JAWS_IO_Reactive_Transmit : public JAWS_IO_Reactive_Handler{  friend class JAWS_Reactive_IO;public:  int handle_timeout (const ACE_Time_Value &, const void *);  int handle_output (ACE_HANDLE handle);  int handle_exception (ACE_HANDLE handle);  static JAWS_IO_Reactive_Transmit * make ( ACE_HANDLE handle                                          , ACE_HANDLE source                                          , JAWS_Event_Completer *completer                                          , ACE_Message_Block *header                                          , ACE_Message_Block *trailer                                          , void *act                                          )  {    return new JAWS_IO_Reactive_Transmit ( handle                                         , source                                         , completer                                         , ACE_Time_Value::zero                                         , header                                         , trailer                                         , act                                         , ACE_Event_Handler::WRITE_MASK                                         );  }  static JAWS_IO_Reactive_Transmit * make ( ACE_HANDLE handle                                          , ACE_HANDLE source                                          , JAWS_Event_Completer *completer                                          , const ACE_Time_Value &tv                                          , ACE_Message_Block *header                                          , ACE_Message_Block *trailer                                          , void *act                                          )  {    return new JAWS_IO_Reactive_Transmit ( handle                                         , source                                         , completer                                         , tv                                         , header                                         , trailer                                         , act                                         , ACE_Event_Handler::WRITE_MASK                                         );  }protected:  void close (int result);  int handle_output_header (ACE_HANDLE handle);  int handle_output_source (ACE_HANDLE handle);  int handle_output_trailer (ACE_HANDLE handle);  int handle_output_mb (ACE_HANDLE handle, ACE_Message_Block *&mb);private:  JAWS_IO_Reactive_Transmit ( ACE_HANDLE handle                            , ACE_HANDLE source                            , JAWS_Event_Completer *completer                            , const ACE_Time_Value &tv                            , ACE_Message_Block *header                            , ACE_Message_Block *trailer                            , void *act                            , ACE_Reactor_Mask mask                            )    : JAWS_IO_Reactive_Handler (handle, completer, tv, act, mask)    , source_ (source)    , source_mb_ (8 * 1024)    , source_buf_ (& this->source_mb_)    , header_ (header)    , trailer_ (trailer)  {  }private:  ACE_HANDLE source_;  ACE_Message_Block source_mb_;  ACE_Message_Block *source_buf_;  ACE_Message_Block *header_;  ACE_Message_Block *trailer_;};#endif /* JAWS_REACTIVE_IO_HELPERS_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -