Merge pull request #2216 from jwillemsen/jwi-cxxversionchecks
[ACE_TAO.git] / ACE / examples / Service_Configurator / IPC-tests / server / Handle_L_FIFO.inl
blob9fd9052c5704253d99e253c4b2efa1b00d944163
1 /* -*- C++ -*- */
2 #include "ace/Get_Opt.h"
3 #include "ace/Truncate.h"
4 #include "ace/OS_NS_stdio.h"
5 #include "ace/OS_NS_string.h"
6 #include "ace/OS_NS_stropts.h"
7 #include "ace/OS_NS_unistd.h"
9 ACE_INLINE
10 Handle_L_FIFO::Handle_L_FIFO ()
14 ACE_INLINE int
15 Handle_L_FIFO::open (const ACE_TCHAR *rendezvous_fifo)
17   if (this->ACE_FIFO_Recv_Msg::open (rendezvous_fifo) == -1)
18     return -1;
19   else
20     return 0;
23 ACE_INLINE int
24 Handle_L_FIFO::info (ACE_TCHAR **strp, size_t length) const
26   ACE_TCHAR buf[BUFSIZ];
27   const ACE_TCHAR *rendezvous_fifo;
29   this->get_local_addr (rendezvous_fifo);
31   ACE_OS::strcpy (buf, rendezvous_fifo);
32   ACE_OS::strcat (buf, ACE_TEXT(" # tests local ACE_FIFO\n"));
34   if (*strp == 0 && (*strp = ACE_OS::strdup (buf)) == 0)
35     {
36       return -1;
37     }
38   else
39     {
40       ACE_OS::strncpy (*strp, buf, length);
41     }
43   return ACE_Utils::truncate_cast<int> (ACE_OS::strlen (buf));
46 ACE_INLINE int
47 Handle_L_FIFO::init (int argc, ACE_TCHAR *argv[])
49   const ACE_TCHAR *rendezvous_fifo = Handle_L_FIFO::DEFAULT_RENDEZVOUS;
50   ACE_Get_Opt    get_opt (argc, argv, ACE_TEXT("r:"), 0);
52   for (int c; (c = get_opt ()) != -1; )
53     switch (c)
54       {
55       case 'r':
56         rendezvous_fifo = get_opt.opt_arg ();
57         break;
58       default:
59         break;
60       }
62   ACE_OS::unlink (rendezvous_fifo);
63   if (this->open (rendezvous_fifo) == -1)
64     ACE_ERROR_RETURN ((LM_ERROR, ACE_TEXT ("%p\n"), ACE_TEXT ("open")), -1);
65   else if (ACE_Reactor::instance ()->register_handler (this, ACE_Event_Handler::READ_MASK) == -1)
66     ACE_ERROR_RETURN ((LM_ERROR, ACE_TEXT ("%p\n"),
67                        ACE_TEXT ("registering service with ACE_Reactor")),
68                       -1);
69   return 0;
72 ACE_INLINE int
73 Handle_L_FIFO::fini ()
75   return ACE_Reactor::instance ()->remove_handler
76     (this, ACE_Event_Handler::ACCEPT_MASK);
79 ACE_INLINE ACE_HANDLE
80 Handle_L_FIFO::get_handle () const
82   return this->ACE_FIFO::get_handle ();
85 ACE_INLINE int
86 Handle_L_FIFO::handle_input (ACE_HANDLE)
88   char buf[PIPE_BUF];
89   ACE_Str_Buf msg (buf, 0, sizeof buf);
91   /* Accept communication requests */
92   if (this->recv (msg) == -1)
93     return -1;
94   else
96   ACE_OS::write (ACE_STDOUT, (const char *) msg.buf, (int) msg.len);
97   return 0;
100 ACE_INLINE int
101 Handle_L_FIFO::handle_close (ACE_HANDLE, ACE_Reactor_Mask)
103   return this->ACE_FIFO::remove ();