1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
/* -*- C++ -*- */
//=============================================================================
/**
* @file Logging_Handler.h
*
* $Id: Logging_Handler.h 93639 2011-03-24 13:32:13Z johnnyw $
*
* @author Doug Schmidt
*/
//=============================================================================
#ifndef _CLIENT_HANDLER_H
#define _CLIENT_HANDLER_H
#include "ace/Event_Handler.h"
#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */
#include "ace/INET_Addr.h"
#include "ace/SOCK_Stream.h"
#include "ace/os_include/os_netdb.h"
/**
* @class Logging_Handler
*
* @brief Receive client message from the remote clients.
*
* This class demonstrates how to receive messages from remote
* clients using the notification mechanisms in the
* <ACE_Reactor>. In addition, it also illustrates how to
* utilize the <ACE_Reactor> timer mechanisms, as well.
*/
class Logging_Handler : public ACE_Event_Handler
{
public:
Logging_Handler (void);
// = Hooks for opening and closing handlers.
virtual int open (void);
virtual int close (void);
/// Conversion operators.
ACE_SOCK_Stream &peer (void);
protected:
// = Demultiplexing hooks.
virtual ACE_HANDLE get_handle (void) const;
virtual int handle_input (ACE_HANDLE);
virtual int handle_close (ACE_HANDLE = ACE_INVALID_HANDLE,
ACE_Reactor_Mask = ACE_Event_Handler::ALL_EVENTS_MASK);
virtual int handle_timeout (const ACE_Time_Value &tv, const void *arg);
// = Really should be private...
/// Ensure dynamic allocation.
virtual ~Logging_Handler (void);
private:
/// Host we are connected to.
char host_name_[MAXHOSTNAMELEN + 1];
/// Connection with client
ACE_SOCK_Stream cli_stream_;
};
#endif /* _CLIENT_HANDLER_H */
|