www.pudn.com > ACEProactor.rar > acceptor.h, change:2006-01-23,size:2170b


// Acceptor.h: interface for the Acceptor class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#if !defined(AFX_ACCEPTOR_H__AFC004F9_A5AF_49BA_A20D_AA01E75C78BB__INCLUDED_) 
#define AFX_ACCEPTOR_H__AFC004F9_A5AF_49BA_A20D_AA01E75C78BB__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
 
#include "ace/Signal.h" 
 
#include "ace/Service_Config.h" 
#include "ace/INET_Addr.h" 
#include "ace/SOCK_Connector.h" 
#include "ace/SOCK_Acceptor.h" 
#include "ace/SOCK_Stream.h" 
#include "ace/Object_Manager.h" 
#include "ace/Get_Opt.h" 
 
#include "ace/Proactor.h" 
#include "ace/Asynch_Acceptor.h" 
#include "ace/Asynch_Connector.h" 
#include "ace/Task.h" 
#include "ace/Thread_Semaphore.h" 
#include "ace/OS_NS_signal.h" 
#include "ace/OS_NS_errno.h" 
#include "ace/os_include/netinet/os_tcp.h" 
 
#if defined (ACE_WIN32) && !defined (ACE_HAS_WINCE) 
 
#  include "ace/WIN32_Proactor.h" 
 
#elif defined (ACE_HAS_AIO_CALLS) 
 
#  include "ace/POSIX_Proactor.h" 
#  include "ace/POSIX_CB_Proactor.h" 
#  include "ace/SUN_Proactor.h" 
 
#endif /* defined (ACE_WIN32) && !defined (ACE_HAS_WINCE) */ 
 
// Proactor Type (UNIX only, Win32 ignored) 
 
 
class Receiver; 
const size_t MAX_RECEIVERS = 1000; 
class Acceptor : public ACE_Asynch_Acceptor<Receiver> 
{ 
	friend class Receiver; 
public: 
	int get_number_sessions (void) { return this->sessions_; } 
	size_t get_total_snd (void) { return this->total_snd_; } 
	size_t get_total_rcv (void) { return this->total_rcv_; } 
	long get_total_w   (void) { return this->total_w_; } 
	long get_total_r   (void) { return this->total_r_; } 
	 
	Acceptor (void); 
	virtual ~Acceptor (void); 
	 
	void stop (void); 
	void cancel_all (void); 
	 
	// Virtual from ACE_Asynch_Acceptor 
	Receiver *make_handler (void); 
	 
private: 
	void on_new_receiver (Receiver &rcvr); 
	void on_delete_receiver (Receiver &rcvr); 
	 
	ACE_SYNCH_RECURSIVE_MUTEX lock_; 
	int sessions_; 
	Receiver *list_receivers_[MAX_RECEIVERS]; 
	size_t total_snd_; 
	size_t total_rcv_; 
	long total_w_; 
	long total_r_; 
}; 
#endif // !defined(AFX_ACCEPTOR_H__AFC004F9_A5AF_49BA_A20D_AA01E75C78BB__INCLUDED_)