summaryrefslogtreecommitdiff
path: root/ACE/examples/APG/Streams/RecordingDevice_Text.h
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/examples/APG/Streams/RecordingDevice_Text.h')
-rw-r--r--ACE/examples/APG/Streams/RecordingDevice_Text.h84
1 files changed, 84 insertions, 0 deletions
diff --git a/ACE/examples/APG/Streams/RecordingDevice_Text.h b/ACE/examples/APG/Streams/RecordingDevice_Text.h
new file mode 100644
index 00000000000..a49f400d922
--- /dev/null
+++ b/ACE/examples/APG/Streams/RecordingDevice_Text.h
@@ -0,0 +1,84 @@
+/* -*- C++ -*- */
+/*
+ * $Id$
+ *
+ * A RecordingDevice that listens to a socket and collects text.
+ */
+
+#ifndef RECORDING_DEVICE_TEXT_H
+#define RECORDING_DEVICE_TEXT_H
+
+#include "ace/FILE_IO.h"
+#include "ace/FILE_Connector.h"
+#include "ace/SOCK_Stream.h"
+#include "ace/SOCK_Acceptor.h"
+
+#include "CommandStream.h"
+#include "MessageInfo.h"
+#include "RecordingDevice.h"
+
+class TextListenerAcceptor :
+ public ACE_Event_Handler,
+ public RecordingDevice
+{
+public:
+ TextListenerAcceptor ();
+
+ // ACE_Event_Handler interface
+
+ int open (ACE_INET_Addr &addr);
+
+ ACE_HANDLE get_handle (void) const;
+
+ int handle_input (ACE_HANDLE);
+
+ int accept (ACE_SOCK_Stream &peer);
+
+ // RecordingDevice interface
+
+ // Open a listening socket on the port specified by argv.
+ int init (int argc, ACE_TCHAR *argv[]);
+
+ ACE_Event_Handler *get_handler (void) const;
+
+ virtual RecordingDevice *wait_for_activity (void);
+
+ virtual int answer_call (void);
+
+ virtual CallerId *retrieve_callerId (void);
+
+ virtual int play_message (ACE_FILE_Addr &addr);
+
+ virtual MessageType *record_message (ACE_FILE_Addr &addr);
+
+private:
+ ACE_SOCK_Acceptor acceptor_;
+};
+
+// Listing 01 code/ch18
+class TextListener : public RecordingDevice
+{
+public:
+ TextListener (TextListenerAcceptor *acceptor);
+
+ virtual const ACE_TCHAR *get_name (void) const;
+
+ int answer_call (void);
+
+ CallerId *retrieve_callerId (void);
+
+ int play_message (ACE_FILE_Addr &addr);
+
+ MessageType *record_message (ACE_FILE_Addr &addr);
+
+ virtual void release (void);
+ // Listing 01
+ // Listing 02 code/ch18
+private:
+ CommandStream *command_stream_;
+ TextListenerAcceptor *acceptor_;
+ ACE_SOCK_Stream peer_;
+};
+// Listing 02
+
+#endif /* RECORDING_DEVICE_TEXT_H */