summaryrefslogtreecommitdiff
path: root/ACE/examples/Service_Configurator/IPC-tests/server/Handle_L_Pipe.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/examples/Service_Configurator/IPC-tests/server/Handle_L_Pipe.cpp')
-rw-r--r--ACE/examples/Service_Configurator/IPC-tests/server/Handle_L_Pipe.cpp64
1 files changed, 64 insertions, 0 deletions
diff --git a/ACE/examples/Service_Configurator/IPC-tests/server/Handle_L_Pipe.cpp b/ACE/examples/Service_Configurator/IPC-tests/server/Handle_L_Pipe.cpp
new file mode 100644
index 00000000000..fe4de260bff
--- /dev/null
+++ b/ACE/examples/Service_Configurator/IPC-tests/server/Handle_L_Pipe.cpp
@@ -0,0 +1,64 @@
+// $Id$
+
+#include "Handle_L_Pipe.h"
+#include "ace/OS_NS_ctype.h"
+#include "ace/OS_NS_unistd.h"
+
+#if !defined (ACE_LACKS_UNIX_DOMAIN_SOCKETS)
+
+// Uppercase N bytes of S.
+
+char *
+Handle_L_Pipe::upper_case (char s[], int n)
+{
+ while (--n >= 0)
+ if (ACE_OS::ace_islower (s[n]))
+ s[n] = ACE_OS::ace_toupper (s[n]);
+
+ return s;
+}
+
+int
+Handle_L_Pipe::handle_input (ACE_HANDLE)
+{
+ ACE_LSOCK_Stream new_local_stream;
+ int n;
+ ACE_HANDLE fd1 = ACE_INVALID_HANDLE;
+ ACE_HANDLE fd2 = ACE_INVALID_HANDLE;
+ char buf[BUFSIZ];
+
+ if (this->accept (new_local_stream) == -1)
+ return -1;
+
+ if (new_local_stream.recv_handle (fd1) == -1
+ || new_local_stream.recv_handle (fd2) == -1)
+ return -1;
+ else
+ ACE_DEBUG ((LM_INFO,
+ ACE_TEXT ("received file descriptors %d and %d\n"),
+ fd1,
+ fd2));
+
+ if ((n = ACE_OS::read (fd1, buf, sizeof buf)) == -1)
+ return -1;
+ else if (ACE_OS::write (fd2, this->upper_case (buf, n), n) == -1)
+ return -1;
+ if (ACE_OS::close (fd1) == -1
+ || ACE_OS::close (fd2) == -1)
+ return -1;
+ if (new_local_stream.close () == -1)
+ return -1;
+
+ return 0;
+}
+
+const ACE_TCHAR *Handle_L_Pipe::DEFAULT_RENDEZVOUS = ACE_TEXT ("/tmp/foo_pipe");
+
+#if !defined (__ACE_INLINE__)
+#include "Handle_L_Pipe.inl"
+#endif /* __ACE_INLINE__ */
+
+Handle_L_Pipe local_pipe;
+ACE_Service_Object_Type lp (&local_pipe, ACE_TEXT ("Local_Pipe"));
+
+#endif /* ACE_LACKS_UNIX_DOMAIN_SOCKETS */