summaryrefslogtreecommitdiff
path: root/trunk/ACE/examples/Connection/blocking/SPIPE-connector.h
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/ACE/examples/Connection/blocking/SPIPE-connector.h')
-rw-r--r--trunk/ACE/examples/Connection/blocking/SPIPE-connector.h82
1 files changed, 82 insertions, 0 deletions
diff --git a/trunk/ACE/examples/Connection/blocking/SPIPE-connector.h b/trunk/ACE/examples/Connection/blocking/SPIPE-connector.h
new file mode 100644
index 00000000000..66d6ea0d1ed
--- /dev/null
+++ b/trunk/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 */