diff options
Diffstat (limited to 'ACE/examples/Connection/blocking/SPIPE-connector.h')
-rw-r--r-- | ACE/examples/Connection/blocking/SPIPE-connector.h | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/ACE/examples/Connection/blocking/SPIPE-connector.h b/ACE/examples/Connection/blocking/SPIPE-connector.h new file mode 100644 index 00000000000..66d6ea0d1ed --- /dev/null +++ b/ACE/examples/Connection/blocking/SPIPE-connector.h @@ -0,0 +1,82 @@ +/* -*- C++ -*- */ +// $Id$ + +#ifndef SP_CONNECTOR_H +#define SP_CONNECTOR_H + +#include "ace/Svc_Handler.h" +#include "ace/Service_Config.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "ace/SPIPE_Stream.h" +#include "ace/Connector.h" +#include "ace/SPIPE_Connector.h" +#include "ace/Sig_Adapter.h" + +class Peer_Handler : public ACE_Svc_Handler<ACE_SPIPE_STREAM, ACE_NULL_SYNCH> +{ +public: + // = Initialization + + Peer_Handler (int iterations = 0); + // <iterations> is the number of buffers to send. If <iterations> + // == 0, then read from stdin. + + ~Peer_Handler (void); + + virtual int open (void * = 0); + // Activate the handler when connection is established. + + // = Demultiplexing hooks. + virtual int handle_input (ACE_HANDLE); + virtual int handle_close (ACE_HANDLE handle = ACE_INVALID_HANDLE, + ACE_Reactor_Mask mask = ACE_Event_Handler::ALL_EVENTS_MASK); + + virtual ACE_HANDLE get_handle (void) const; + +private: + void display_menu (void); + + int iterations_; + // No. of buffers to send. +}; + +class IPC_Client : public ACE_Connector<Peer_Handler, ACE_SPIPE_CONNECTOR> +{ +public: + // Initialization + IPC_Client (void); + ~IPC_Client (void); + + // = Dynamic linking hooks. + virtual int init (int argc, ACE_TCHAR *argv[]); + // Initialize the IPC client. + + virtual int fini (void); + // Destroy the IPC client. + + virtual int svc (void); + // Run the svc. + + virtual int handle_close (ACE_HANDLE, ACE_Reactor_Mask); + // Report connection errors. + +private: + int parse_args (int argc, ACE_TCHAR *argv[]); + // Parse command-line arguments. + + int iterations_; + // Number of times to send a buffer. + + ACE_TCHAR rendezvous_[MAXPATHLEN + 1]; + // Meeting place for pipe. + + ACE_Sig_Adapter done_handler_; + // Keeps track of when we shut down due to receipt of the SIGINT + // signal. +}; + +#endif /* SP_CONNECTOR_H */ |