summaryrefslogtreecommitdiff
path: root/ACE/ace/Service_Manager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/ace/Service_Manager.cpp')
-rw-r--r--ACE/ace/Service_Manager.cpp123
1 files changed, 85 insertions, 38 deletions
diff --git a/ACE/ace/Service_Manager.cpp b/ACE/ace/Service_Manager.cpp
index eb89108e7c6..5561ee6ad44 100644
--- a/ACE/ace/Service_Manager.cpp
+++ b/ACE/ace/Service_Manager.cpp
@@ -65,7 +65,10 @@ ACE_Service_Manager::open (const ACE_INET_Addr &sia)
// Reuse the listening address, even if it's already in use!
if (this->acceptor_.open (sia, 1) == -1)
- return -1;
+ {
+ return -1;
+ }
+
return 0;
}
@@ -77,17 +80,25 @@ ACE_Service_Manager::info (ACE_TCHAR **strp, size_t length) const
ACE_TCHAR buf[BUFSIZ];
if (this->acceptor_.get_local_addr (sa) == -1)
- return -1;
+ {
+ return -1;
+ }
ACE_OS::sprintf (buf,
ACE_TEXT ("%d/%s %s"),
sa.get_port_number (),
ACE_TEXT ("tcp"),
ACE_TEXT ("# lists all services in the daemon\n"));
+
if (*strp == 0 && (*strp = ACE_OS::strdup (buf)) == 0)
- return -1;
+ {
+ return -1;
+ }
else
- ACE_OS::strsncpy (*strp, buf, length);
+ {
+ ACE_OS::strsncpy (*strp, buf, length);
+ }
+
return static_cast<int> (ACE_OS::strlen (buf));
}
@@ -119,15 +130,20 @@ ACE_Service_Manager::init (int argc, ACE_TCHAR *argv[])
if (this->get_handle () == ACE_INVALID_HANDLE &&
this->open (local_addr) == -1)
- ACE_ERROR_RETURN ((LM_ERROR,
- ACE_TEXT ("%p\n"),
- ACE_TEXT ("open")), -1);
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("%p\n"),
+ ACE_TEXT ("open")), -1);
+ }
else if (ACE_Reactor::instance ()->register_handler
(this,
ACE_Event_Handler::ACCEPT_MASK) == -1)
- ACE_ERROR_RETURN ((LM_ERROR,
- ACE_TEXT ("registering service with ACE_Reactor\n")),
- -1);
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("registering service with ACE_Reactor\n")),
+ -1);
+ }
+
return 0;
}
@@ -144,15 +160,18 @@ ACE_Service_Manager::fini (void)
ACE_TRACE ("ACE_Service_Manager::fini");
int retv = 0;
+
if (this->get_handle () != ACE_INVALID_HANDLE)
{
- retv = ACE_Reactor::instance ()->remove_handler
- (this,
- ACE_Event_Handler::ACCEPT_MASK |
- ACE_Event_Handler::DONT_CALL);
+ retv =
+ ACE_Reactor::instance ()->remove_handler (
+ this,
+ ACE_Event_Handler::ACCEPT_MASK | ACE_Event_Handler::DONT_CALL);
+
this->handle_close (ACE_INVALID_HANDLE,
ACE_Event_Handler::NULL_MASK);
}
+
return retv;
}
@@ -197,19 +216,24 @@ ACE_Service_Manager::list_services (void)
len += sr->type ()->info (&p, sizeof buf - len);
if (this->debug_)
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("len = %d, info = %s%s"),
- len,
- buf,
- buf[len - 1] == '\n' ? ACE_TEXT ("") : ACE_TEXT ("\n")));
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("len = %d, info = %s%s"),
+ len,
+ buf,
+ buf[len - 1] == '\n' ? ACE_TEXT ("") : ACE_TEXT ("\n")));
+ }
if (len > 0)
{
ssize_t n = this->client_stream_.send_n (buf, len);
+
if (n <= 0 && errno != EPIPE)
- ACE_ERROR ((LM_ERROR,
- ACE_TEXT ("%p\n"),
- ACE_TEXT ("send_n")));
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("%p\n"),
+ ACE_TEXT ("send_n")));
+ }
}
}
@@ -251,16 +275,22 @@ ACE_Service_Manager::process_request (ACE_TCHAR *request)
for (p = request;
(*p != '\0') && (*p != '\r') && (*p != '\n');
p++)
- continue;
+ {
+ continue;
+ }
*p = '\0';
if (ACE_OS::strcmp (request, ACE_TEXT ("help")) == 0)
- // Return a list of the configured services.
- this->list_services ();
+ {
+ // Return a list of the configured services.
+ this->list_services ();
+ }
else if (ACE_OS::strcmp (request, ACE_TEXT ("reconfigure") )== 0)
- // Trigger a reconfiguration by re-reading the local <svc.conf> file.
- this->reconfigure_services ();
+ {
+ // Trigger a reconfiguration by re-reading the local <svc.conf> file.
+ this->reconfigure_services ();
+ }
else
{
// Just process a single request passed in via the socket
@@ -294,7 +324,9 @@ ACE_Service_Manager::handle_input (ACE_HANDLE)
1, // restart
reset_new_handle // reset new handler
) == -1)
- return -1;
+ {
+ return -1;
+ }
if (this->debug_)
{
@@ -302,8 +334,11 @@ ACE_Service_Manager::handle_input (ACE_HANDLE)
ACE_TEXT ("client_stream fd = %d\n"),
this->client_stream_.get_handle ()));
ACE_INET_Addr sa;
+
if (this->client_stream_.get_remote_addr (sa) == -1)
- return -1;
+ {
+ return -1;
+ }
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("accepted from host %C at port %d\n"),
@@ -326,12 +361,16 @@ ACE_Service_Manager::handle_input (ACE_HANDLE)
// contains an incomplete string.
int error;
+
do
{
result = client_stream_.recv (offset, remaining);
error = errno;
+
if (result == 0 && error != EWOULDBLOCK)
- remaining = 0;
+ {
+ remaining = 0;
+ }
if (result >= 0)
{
@@ -348,18 +387,23 @@ ACE_Service_Manager::handle_input (ACE_HANDLE)
if (ACE_OS::strchr (request, '\r') != 0
|| ACE_OS::strchr (request, '\n') != 0)
- remaining = 0;
+ {
+ remaining = 0;
+ }
}
}
- while (result == -1 && error == EWOULDBLOCK || remaining > 0);
+ while ((result == -1 && error == EWOULDBLOCK) || remaining > 0);
switch (result)
{
case -1:
if (this->debug_)
- ACE_DEBUG ((LM_ERROR,
- ACE_TEXT ("%p\n"),
- ACE_TEXT ("recv")));
+ {
+ ACE_DEBUG ((LM_ERROR,
+ ACE_TEXT ("%p\n"),
+ ACE_TEXT ("recv")));
+ }
+
break;
case 0:
return 0;
@@ -381,9 +425,12 @@ ACE_Service_Manager::handle_input (ACE_HANDLE)
}
if (this->client_stream_.close () == -1 && this->debug_)
- ACE_DEBUG ((LM_ERROR,
- ACE_TEXT ("%p\n"),
- ACE_TEXT ("close")));
+ {
+ ACE_DEBUG ((LM_ERROR,
+ ACE_TEXT ("%p\n"),
+ ACE_TEXT ("close")));
+ }
+
return 0;
}