summaryrefslogtreecommitdiff
path: root/ACE/examples/C++NPv1/Iterative_Logging_Server.h
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/examples/C++NPv1/Iterative_Logging_Server.h')
-rw-r--r--ACE/examples/C++NPv1/Iterative_Logging_Server.h64
1 files changed, 64 insertions, 0 deletions
diff --git a/ACE/examples/C++NPv1/Iterative_Logging_Server.h b/ACE/examples/C++NPv1/Iterative_Logging_Server.h
new file mode 100644
index 00000000000..f811f98c7ce
--- /dev/null
+++ b/ACE/examples/C++NPv1/Iterative_Logging_Server.h
@@ -0,0 +1,64 @@
+/*
+** $Id$
+**
+** Copyright 2001 Addison Wesley. All Rights Reserved.
+*/
+
+#ifndef _ITERATIVE_LOGGING_SERVER_H
+#define _ITERATIVE_LOGGING_SERVER_H
+
+#include "ace/FILE_IO.h"
+#include "ace/INET_Addr.h"
+#include "ace/Log_Msg.h"
+
+#include "Logging_Handler.h"
+#include "Logging_Server.h"
+
+ACE_BEGIN_VERSIONED_NAMESPACE_DECL
+class ACE_SOCK_Stream;
+ACE_END_VERSIONED_NAMESPACE_DECL
+
+class Iterative_Logging_Server : public Logging_Server
+{
+protected:
+ ACE_FILE_IO log_file_;
+ Logging_Handler logging_handler_;
+
+public:
+ Iterative_Logging_Server () : logging_handler_ (log_file_) {}
+
+ virtual ~Iterative_Logging_Server () { log_file_.close (); }
+
+ Logging_Handler &logging_handler () { return logging_handler_; }
+
+protected:
+ // Override inherited open() from Logging_Server
+ virtual int open (u_short port) {
+ if (make_log_file (log_file_) == -1)
+ ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "make_log_file()"), -1);
+ return Logging_Server::open (port);
+ }
+
+ virtual int handle_connections () {
+ ACE_INET_Addr logging_peer_addr;
+
+ if (acceptor ().accept (logging_handler_.peer (),
+ &logging_peer_addr) == -1)
+ ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "acceptor.accept()"), -1);
+
+ ACE_DEBUG ((LM_DEBUG, "Accepted connection from %s\n",
+ logging_peer_addr.get_host_name ()));
+ return 0;
+ }
+
+ virtual int handle_data (ACE_SOCK_Stream *) {
+ while (logging_handler_.log_record () != -1)
+ continue;
+
+ logging_handler_.close (); // Close the socket handle.
+ return 0;
+ }
+
+};
+
+#endif /* _ITERATIVE_LOGGING_SERVER_H */