summaryrefslogtreecommitdiff
path: root/ACE/examples/APG/Logging/Callback-3.h
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/examples/APG/Logging/Callback-3.h')
-rw-r--r--ACE/examples/APG/Logging/Callback-3.h67
1 files changed, 67 insertions, 0 deletions
diff --git a/ACE/examples/APG/Logging/Callback-3.h b/ACE/examples/APG/Logging/Callback-3.h
new file mode 100644
index 00000000000..0d468547d2e
--- /dev/null
+++ b/ACE/examples/APG/Logging/Callback-3.h
@@ -0,0 +1,67 @@
+// $Id$
+
+#ifndef APG_CALLBACK3_H
+#define APG_CALLBACK3_H
+
+#include "ace/streams.h"
+#include "ace/CDR_Stream.h"
+#include "ace/Log_Msg.h"
+#include "ace/Log_Msg_Callback.h"
+#include "ace/Log_Record.h"
+#include "ace/SOCK_Stream.h"
+#include "ace/SOCK_Connector.h"
+#include "ace/INET_Addr.h"
+
+#define LOGGER_PORT 20009
+
+class Callback : public ACE_Log_Msg_Callback
+{
+public:
+ Callback ()
+ {
+ this->logger_ = new ACE_SOCK_Stream;
+ ACE_SOCK_Connector connector;
+ ACE_INET_Addr addr (LOGGER_PORT, ACE_DEFAULT_SERVER_HOST);
+
+ if (connector.connect (*(this->logger_), addr) == -1)
+ {
+ delete this->logger_;
+ this->logger_ = 0;
+ }
+ }
+
+ virtual ~Callback ()
+ {
+ if (this->logger_)
+ {
+ this->logger_->close ();
+ }
+ delete this->logger_;
+ }
+
+ void log (ACE_Log_Record &log_record)
+ {
+ if (!this->logger_)
+ {
+# if defined (ACE_LACKS_IOSTREAM_TOTALLY)
+ log_record.print (ACE_TEXT (""), ACE_Log_Msg::VERBOSE, stderr);
+# else
+ log_record.print(ACE_TEXT (""), ACE_Log_Msg::VERBOSE, cerr);
+# endif /* ACE_LACKS_IOSTREAM_TOTALLY */
+ return;
+ }
+
+ ACE_OutputCDR cdr;
+ cdr << log_record;
+ if (this->logger_->send_n (cdr.begin ()) == -1)
+ {
+ delete this->logger_;
+ this->logger_ = 0;
+ }
+ }
+
+private:
+ ACE_SOCK_Stream *logger_;
+};
+
+#endif /* APG_CALLBACK3_H */