亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? peer.h

?? ACE編程的一本經典BIBLE的源代碼,喜歡網絡編程的別錯過
?? H
字號:
/* -*- C++ -*- */
// Peer.h,v 4.22 2004/09/09 20:41:06 shuston Exp

// ============================================================================
//
// = LIBRARY
//    gateway
//
// = FILENAME
//    Peer.h
//
// = DESCRIPTION
//    These classes process Supplier/Consumer events sent from the
//    gateway (gatewayd) to its various peers (peerd).  The general
//    collaboration works as follows:
//
//    1. <Peer_Acceptor> creates a listener endpoint and waits
//       passively for gatewayd to connect with it.
//
//    2. When a gatewayd connects, <Peer_Acceptor> creates an
//       <Peer_Handler> object that sends/receives events from
//       gatewayd on that connection.
//
//    3. The <Peer_Handler> waits for gatewayd to inform it of its
//       connection ID, which is prepended to all subsequent outgoing
//       events sent from peerd.
//
//    4. Once the connection ID is set, peerd periodically sends events
//       to gatewayd.  Peerd also receives and "processes" events
//       forwarded to it from gatewayd.  In this program, peerd
//       "processes" the events sent to it by writing them to stdout.
//
//    Note that in the current peerd implementation, one Peer process
//    cannot serve as both a Consumer and Supplier of Events.  This is
//    because the gatewayd establishes a separate connection for
//    Suppliers and Consumers and the peerd only maintains a single
//    <Peer_Handler> object to handle this one connection.  Enhancing
//    this implementation to be both a Consumer and Supplier
//    simultaneously is straightforward, however.  In addition,
//    multiple peerd processes can already work together to play these
//    different roles.
//
// = AUTHOR
//    Douglas C. Schmidt
//
// ============================================================================

#ifndef PEER_H
#define PEER_H

#include "ace/Service_Config.h"

#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */

#include "ace/Acceptor.h"
#include "ace/SOCK_Acceptor.h"
#include "ace/SOCK_Connector.h"
#include "ace/Svc_Handler.h"
#include "ace/Connector.h"
#include "ace/Null_Condition.h"
#include "ace/Null_Mutex.h"
#include "Options.h"

ACE_SVC_FACTORY_DECLARE (Peer_Factory)

#if defined ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION_EXPORT
template class ACE_Svc_Export ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH>;
#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION_EXPORT */

class ACE_Svc_Export Peer_Handler : public ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH>
{
  // = TITLE
  //     Handle Peer events arriving from a Gateway.
public:
  // = Initialization and termination methods.
  Peer_Handler (void);
  // Initialize the peer.

  ~Peer_Handler (void);
  // Shutdown the Peer.

  virtual int open (void * = 0);
  // Initialize the handler when called by
  // <ACE_Acceptor::handle_input>.

  virtual int handle_input (ACE_HANDLE);
  // Receive and process peer events.

  virtual int put (ACE_Message_Block *, ACE_Time_Value *tv = 0);
  // Send a event to a gateway (may be queued if necessary due to flow
  // control).

  virtual int handle_output (ACE_HANDLE);
  // Finish sending a event when flow control conditions abate.

  virtual int handle_timeout (const ACE_Time_Value &,
                              const void *arg);
  // Periodically send events via <ACE_Reactor> timer mechanism.

  virtual int handle_close (ACE_HANDLE = ACE_INVALID_HANDLE,
                            ACE_Reactor_Mask = ACE_Event_Handler::ALL_EVENTS_MASK);
  // Perform object termination.

protected:
  typedef ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH> inherited;

  int transmit (ACE_Message_Block *mb,
                size_t n,
                int event_type);
  // Transmit <mb> to the gatewayd.

  virtual int recv (ACE_Message_Block *&mb);
  // Receive an Peer event from gatewayd.

  virtual int send (ACE_Message_Block *mb);
  // Send an Peer event to gatewayd, using <nonblk_put>.

  virtual int nonblk_put (ACE_Message_Block *mb);
  // Perform a non-blocking <put>, which tries to send an event to the
  // gatewayd, but only if it isn't flow controlled.

  int subscribe (void);
  // Register Consumer subscriptions with the gateway.

  // = Event/state/action handlers.
  int transmit_stdin (void);
  // Receive a event from stdin and send it to the gateway.

  int await_connection_id (void);
  // Action that receives the route id.

  int await_events (void);
  // Action that receives events.

  int (Peer_Handler::*do_action_)(void);
  // Pointer-to-member-function for the current action to run in this
  // state.  This points to one of the preceding 3 methods.

  CONNECTION_ID connection_id_;
  // Connection ID of the peer, which is obtained from the gatewayd.

  ACE_Message_Block *msg_frag_;
  // Keep track of event fragments that arrive in non-blocking recv's
  // from the gatewayd.

  size_t total_bytes_;
  // The total number of bytes sent/received to the gatewayd thus far.

  int first_time_;
  // Used to call register_stdin_handle only once.  Otherwise, thread
  // leak will occur on Win32.
};

#if defined ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION_EXPORT
template class ACE_Svc_Export ACE_Acceptor<Peer_Handler, ACE_SOCK_ACCEPTOR>;
#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION_EXPORT */

class ACE_Svc_Export Peer_Acceptor : public ACE_Acceptor<Peer_Handler, ACE_SOCK_ACCEPTOR>
{
  // = TITLE
  //     Passively accept connections from gatewayd and dynamically
  //     create a new <Peer_Handler> object to communicate with the
  //     gatewayd.
public:
  // = Initialization and termination methods.
  Peer_Acceptor (void);
  // Default initialization.

  int start (u_short);
  //  the <Peer_Acceptor>.

  int close (void);
  // Terminate the <Peer_Acceptor>.

  virtual int make_svc_handler (Peer_Handler *&);
  // Factory method that creates a <Peer_Handler> just once.

private:
  int open_acceptor (u_short port);
  // Factor out common code for initializing the <Peer_Acceptor>.

  Peer_Handler *peer_handler_;
  // Pointer to <Peer_Handler> allocated just once.

  ACE_INET_Addr addr_;
  // Our acceptor addr.

  typedef ACE_Acceptor<Peer_Handler, ACE_SOCK_ACCEPTOR> inherited;
};

#if defined ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION_EXPORT
template class ACE_Svc_Export ACE_Connector<Peer_Handler, ACE_SOCK_CONNECTOR>;
#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION_EXPORT */

class ACE_Svc_Export Peer_Connector : public ACE_Connector<Peer_Handler, ACE_SOCK_CONNECTOR>
{
  // = TITLE
  //     Actively establish connections with gatewayd and dynamically
  //     create a new <Peer_Handler> object to communicate with the
  //     gatewayd.
public:
  // = Initialization method.
  int open (ACE_Reactor * = 0, int = 0);
  // Initialize the <Peer_Connector>.  NOTE:  the arguments are
  // ignored.  They are only provided to avoid a compiler warning
  // about hiding the virtual function ACE_Connector<Peer_Handler,
  // ACE_SOCK_CONNECTOR>::open(ACE_Reactor*, int).

private:
  int open_connector (Peer_Handler *&ph, u_short port);
  // Factor out common code for initializing the <Peer_Connector>.

  Peer_Handler *consumer_peer_handler_;
  // Consumer <Peer_Handler> that is connected to a gatewayd.

  Peer_Handler *supplier_peer_handler_;
  // Supplier <Peer_Handler> that is connected to a gatewayd.
};

class ACE_Svc_Export Peer_Factory : public ACE_Service_Object
{
  // = TITLE
  //     A factory class that actively and/or passively establishes
  //     connections with the gatewayd.
public:
  // = Dynamic initialization and termination hooks from <ACE_Service_Object>.

  virtual int init (int argc, ACE_TCHAR *argv[]);
  // Initialize the acceptor and connector.

  virtual int fini (void);
  // Perform termination activities.

  virtual int info (ACE_TCHAR **, size_t) const;
  // Return info about this service.

  virtual int handle_signal (int signum, siginfo_t *, ucontext_t *);
  // Handle various signals (e.g., SIGPIPE, SIGINT, and SIGQUIT).

private:
  Peer_Acceptor consumer_acceptor_;
  // Pointer to an instance of our <Peer_Acceptor> that's used to
  // accept connections and create Consumers.

  Peer_Acceptor supplier_acceptor_;
  // Pointer to an instance of our <Peer_Acceptor> that's used to
  // accept connections and create Suppliers.

  Peer_Connector connector_;
  // An instance of our <Peer_Connector>.  Note that one
  // <Peer_Connector> is used to establish <Peer_Handler>s for both
  // Consumers and Suppliers.
};

#endif /* PEER_H */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品全国免费观看高清| 国产专区综合网| 国内精品免费**视频| jvid福利写真一区二区三区| 欧美老女人在线| 欧美高清在线一区| 国内偷窥港台综合视频在线播放| 在线一区二区三区做爰视频网站| 国产午夜精品一区二区三区视频| 性欧美疯狂xxxxbbbb| 97成人超碰视| 亚洲国产精品av| 精油按摩中文字幕久久| 91麻豆精品国产| 亚洲欧美成人一区二区三区| 成人免费看片app下载| 久久久www成人免费毛片麻豆| 日本网站在线观看一区二区三区| 在线亚洲免费视频| 中文字幕在线免费不卡| 成人免费精品视频| 国产精品你懂的在线| 国产福利精品导航| 久久久久久久久久久99999| 九九精品视频在线看| 日韩欧美国产一区二区在线播放| 日本成人在线不卡视频| 欧美久久久久久久久久| 日韩中文字幕1| 欧美一区二区三区系列电影| 午夜不卡av免费| 欧美肥大bbwbbw高潮| 丝袜亚洲另类欧美| 欧美精品123区| 蜜桃一区二区三区四区| 日韩手机在线导航| 久久精品国产久精国产| 精品久久久久久久久久久久久久久久久 | 亚洲国产精品激情在线观看| 精品亚洲成a人在线观看| 精品三级在线观看| 国产精品亚洲综合一区在线观看| 国产欧美日韩卡一| 99re免费视频精品全部| 亚洲欧洲中文日韩久久av乱码| 色妞www精品视频| 天天影视涩香欲综合网| 日韩欧美成人一区| 成人午夜精品在线| 亚洲欧美激情插| 337p亚洲精品色噜噜噜| 狠狠色狠狠色综合| 综合久久久久久| 欧美精品粉嫩高潮一区二区| 精品一区二区三区日韩| 国产女人18水真多18精品一级做| 99国产精品久久久久久久久久久 | 欧美丝袜自拍制服另类| 日韩精品一区第一页| 国产亚洲欧美色| 色婷婷精品大视频在线蜜桃视频 | 91精品国产美女浴室洗澡无遮挡| 久久精品国产亚洲一区二区三区| 国产精品久久精品日日| 欧美色窝79yyyycom| 精品在线观看免费| 一区二区三区在线高清| 日韩欧美一级在线播放| 成人白浆超碰人人人人| 亚洲成精国产精品女| 国产人成亚洲第一网站在线播放| 欧洲精品视频在线观看| 国产美女精品在线| 婷婷成人激情在线网| 欧美激情资源网| 在线播放欧美女士性生活| 成人免费视频app| 免费欧美高清视频| 一区二区三区欧美| 久久久久久久久久久久久女国产乱| 欧美在线观看视频在线| 国产成人亚洲精品狼色在线| 日韩专区在线视频| 亚洲图片激情小说| 久久久久久久久岛国免费| 欧美精品乱码久久久久久| av在线一区二区| 国产精品888| 久久成人免费电影| 午夜欧美2019年伦理| 国产精品丝袜久久久久久app| 日韩欧美久久久| 欧美性色黄大片| 色噜噜狠狠色综合中国| 成人av午夜影院| 国产精品 日产精品 欧美精品| 免费观看91视频大全| 天天av天天翘天天综合网| 亚洲欧美视频在线观看视频| 国产精品进线69影院| 国产欧美一区二区精品仙草咪 | 在线免费观看日本欧美| aa级大片欧美| 不卡av免费在线观看| 国产福利一区在线| 国产一区二区三区免费看| 麻豆91精品视频| 蜜桃av噜噜一区| 久久99久久精品| 国产一区日韩二区欧美三区| 九九九精品视频| 久久99精品久久久久久久久久久久 | 欧美一区二区三区公司| 4hu四虎永久在线影院成人| 欧美日韩国产在线播放网站| 色欲综合视频天天天| 日本黄色一区二区| 在线视频一区二区免费| 欧美色男人天堂| 91精品国产91久久久久久一区二区 | 香蕉乱码成人久久天堂爱免费| 一级特黄大欧美久久久| 亚洲最大成人网4388xx| 婷婷中文字幕一区三区| 日韩成人免费在线| 精品亚洲国产成人av制服丝袜| 国产美女精品在线| 不卡电影一区二区三区| 在线视频国内一区二区| 正在播放亚洲一区| 精品日本一线二线三线不卡| 久久精品人人做人人爽人人| 国产精品女主播在线观看| 亚洲人精品一区| 天天操天天色综合| 国产精品一区二区久久不卡| jlzzjlzz国产精品久久| 色网站国产精品| 91精品国产综合久久精品| 精品国产麻豆免费人成网站| 欧美激情一区三区| 亚洲一二三区在线观看| 毛片不卡一区二区| av资源站一区| 91精品久久久久久蜜臀| 国产亚洲欧洲997久久综合| 亚洲免费色视频| 久久精品国产精品亚洲精品| 成人午夜在线视频| 欧美精品xxxxbbbb| 中文字幕成人在线观看| 午夜欧美电影在线观看| 国产精品99久久久久久有的能看| 色综合久久88色综合天天免费| 在线成人av网站| 亚洲欧美在线高清| 久久精品国产亚洲aⅴ| 色婷婷av一区| 久久精品在线观看| 天天影视涩香欲综合网| 韩国av一区二区三区四区| 欧美亚洲日本一区| 国产精品三级视频| 日本sm残虐另类| 色哟哟亚洲精品| 国产三级久久久| 蜜臀av一区二区| 日本道精品一区二区三区| 久久天堂av综合合色蜜桃网| 亚洲精品伦理在线| 国产成人在线观看| 欧美成人一区二区三区片免费| 伊人夜夜躁av伊人久久| 国产激情视频一区二区三区欧美| 欧美喷水一区二区| 曰韩精品一区二区| 成人av片在线观看| 国产午夜精品久久久久久久| 日韩福利电影在线| 欧美综合天天夜夜久久| 中文字幕亚洲在| 国产999精品久久久久久绿帽| 日韩精品自拍偷拍| 日本午夜一本久久久综合| 欧美日韩一本到| 亚洲最大的成人av| 91精品91久久久中77777| 国产精品国产三级国产aⅴ中文| 国产一区二区三区国产| 日韩欧美国产综合| 老司机精品视频导航| 欧美一区二区二区| 日韩成人av影视| 欧美一区二区三区日韩视频| 婷婷国产在线综合| 欧美色图在线观看| 三级亚洲高清视频| 91精品国产综合久久久久久漫画 | 中文字幕亚洲在| 99久久国产综合精品女不卡|