www.pudn.com > server_client.rar > Logging_Server.h, change:2007-10-18,size:1693b


/* 
** Logging_Server.h,v 1.1 2001/09/06 22:40:26 shuston Exp 
** 
** Copyright 2001 Addison Wesley. All Rights Reserved. 
*/ 
 
#ifndef _LOGGING_SERVER_H 
#define _LOGGING_SERVER_H 
 
#include "ace/SOCK_Acceptor.h" 
#include "ace/FILE_Addr.h" 
#include "ace/FILE_Connector.h" 
#include "ace/FILE_IO.h" 
#include "ace/INET_Addr.h" 
#include "ace/SOCK_Stream.h" 
#include "Logging_Server.h" 
#include "ace/OS_NS_string.h" 
#include "ace/os_include/os_netdb.h" 
 
#define MAX_NAME_LENGTH 255 
 
class ACE_SOCK_Stream; 
 
class Logging_Server 
{ 
public: 
  // Template Method that runs logging server's event loop. 
 
	virtual int Logging_Server::run (u_short server_port) 
	{ 
	if (open (server_port) == -1) 
    return -1; 
 
	for (;;) { 
		if (handle_connections () == -1) 
			return -1; 
		if (handle_data () == -1) 
			return -1; 
	} 
	return 0; 
	} 
 
protected: 
  // The following four methods are ``hooks'' that can be 
  // overridden by subclasses. 
 
	virtual int Logging_Server::open (u_short logger_port) 
	{ 
	ACE_INET_Addr server_addr; 
 
	if(server_addr.set (logger_port,(ACE_UINT32) INADDR_ANY)==-1)	return -1;; 
 
	// Start listening, enable reuse of listen address for quick restarts. 
	return acceptor_.open (server_addr, 1); 
	} 
 
  virtual int handle_connections () = 0; 
  virtual int handle_data (ACE_SOCK_Stream * = 0) = 0; 
 
  // The following helper method can be used by the hook methods. 
 
  // Close the socket endpoint. 
  virtual ~Logging_Server () { acceptor_.close (); } 
 
  // Accessor. 
  ACE_SOCK_Acceptor &acceptor () { return acceptor_; } 
 
private: 
  ACE_SOCK_Acceptor acceptor_; // Socket acceptor endpoint. 
}; 
 
#endif /* _LOGGING_SERVER_H */