summaryrefslogtreecommitdiff
path: root/ACE/ace/Log_Record.h
diff options
context:
space:
mode:
authorWilliam R. Otte <wotte@dre.vanderbilt.edu>2006-07-24 15:50:30 +0000
committerWilliam R. Otte <wotte@dre.vanderbilt.edu>2006-07-24 15:50:30 +0000
commitc44379cc7d9c7aa113989237ab0f56db12aa5219 (patch)
tree66a84b20d47f2269d8bdc6e0323f338763424d3a /ACE/ace/Log_Record.h
parent3aff90f4a822fcf5d902bbfbcc9fa931d6191a8c (diff)
downloadATCD-c44379cc7d9c7aa113989237ab0f56db12aa5219.tar.gz
Repo restructuring
Diffstat (limited to 'ACE/ace/Log_Record.h')
-rw-r--r--ACE/ace/Log_Record.h212
1 files changed, 212 insertions, 0 deletions
diff --git a/ACE/ace/Log_Record.h b/ACE/ace/Log_Record.h
new file mode 100644
index 00000000000..8c2e964a92e
--- /dev/null
+++ b/ACE/ace/Log_Record.h
@@ -0,0 +1,212 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Log_Record.h
+ *
+ * $Id$
+ *
+ * @author Douglas C. Schmidt <schmidt@cs.wustl.edu>
+ */
+//=============================================================================
+
+// These need to go outside of the #ifdef to avoid problems with
+// circular dependencies...
+
+#include "ace/Log_Priority.h"
+
+#ifndef ACE_LOG_RECORD_H
+#define ACE_LOG_RECORD_H
+#include /**/ "ace/pre.h"
+
+#include "ace/ACE_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "ace/Default_Constants.h"
+#include "ace/Basic_Types.h"
+#include "ace/iosfwd.h"
+
+ACE_BEGIN_VERSIONED_NAMESPACE_DECL
+
+class ACE_Time_Value;
+
+/// Defines the structure of an ACE logging record.
+class ACE_Export ACE_Log_Record
+{
+public:
+ enum
+ {
+ /// Maximum size of a logging message.
+ MAXLOGMSGLEN = ACE_MAXLOGMSGLEN+1,
+
+ /// Most restrictive alignment.
+ ALIGN_WORDB = 8,
+
+ /// Size used by verbose mode.
+ /// 20 (date) + 15 (host_name) + 10 (pid) + 10 (type)
+ /// + 4 (@) ... + ? (progname)
+ VERBOSE_LEN = 128,
+
+ /// Maximum size of a logging message with the verbose headers
+ MAXVERBOSELOGMSGLEN = VERBOSE_LEN + MAXLOGMSGLEN
+ };
+
+ // = Initialization
+ /**
+ * Create a <Log_Record> and set its priority, time stamp, and
+ * process id.
+ */
+ ACE_Log_Record (void);
+ ACE_Log_Record (ACE_Log_Priority lp,
+ long time_stamp,
+ long pid);
+ ACE_Log_Record (ACE_Log_Priority lp,
+ const ACE_Time_Value &time_stamp,
+ long pid);
+
+ /// Default dtor.
+ ~ACE_Log_Record (void);
+
+
+ /// Write the contents of the logging record to the appropriate
+ /// <FILE> iff the corresponding type is enabled.
+ int print (const ACE_TCHAR host_name[],
+ u_long verbose_flag,
+#if !defined (ACE_HAS_WINCE)
+ FILE *fp = stderr);
+#else
+ FILE *fp);
+#endif /* ACE_HAS_WINCE */
+
+#if !defined (ACE_LACKS_IOSTREAM_TOTALLY)
+ /// Write the contents of the logging record to the appropriate
+ /// <ostream> iff the corresponding type is enabled.
+ int print (const ACE_TCHAR host_name[],
+ u_long verbose_flag,
+ ACE_OSTREAM_TYPE &stream);
+#endif /* ! ACE_LACKS_IOSTREAM_TOTALLY */
+
+ int format_msg (const ACE_TCHAR host_name[],
+ u_long verbose_flag,
+ ACE_TCHAR *verbose_msg);
+
+ /**
+ * Returns a character array with the string form of the
+ * <ACE_Log_Priority> parameter. This is used for the verbose
+ * printing format.
+ */
+ static const ACE_TCHAR *priority_name (ACE_Log_Priority p);
+
+ // IMPORTANT: <name> must be a statically allocated const ACE_TCHAR*
+ static void priority_name (ACE_Log_Priority p,
+ const ACE_TCHAR *name);
+
+ // = Marshall/demarshall
+ /// Encode the <Log_Record> for transmission on the network.
+ void encode (void);
+
+ /// Decode the <Log_Record> received from the network.
+ void decode (void);
+
+ // = Set/get methods
+
+ /// Get the type of the <Log_Record>.
+ ACE_UINT32 type (void) const;
+
+ /// Set the type of the <Log_Record>.
+ void type (ACE_UINT32);
+
+ /**
+ * Get the priority of the <Log_Record> <type_>. This is computed
+ * as the base 2 logarithm of <type_> (which must be a power of 2,
+ * as defined by the enums in <ACE_Log_Priority>).
+ */
+ u_long priority (void) const;
+
+ /// Set the priority of the <Log_Record> <type_> (which must be a
+ /// power of 2, as defined by the enums in <ACE_Log_Priority>).
+ void priority (u_long num);
+
+ /// Get the length of the <Log_Record>.
+ long length (void) const;
+
+ /// Set the length of the <Log_Record>.
+ void length (long);
+
+ /// Get the time stamp of the <Log_Record>.
+ ACE_Time_Value time_stamp (void) const;
+
+ /// Set the time stamp of the <Log_Record>.
+ void time_stamp (const ACE_Time_Value &ts);
+
+ /// Get the process id of the <Log_Record>.
+ long pid (void) const;
+
+ /// Set the process id of the <Log_Record>.
+ void pid (long);
+
+ /// Get the message data of the <Log_Record>.
+ const ACE_TCHAR *msg_data (void) const;
+
+ /// Set the message data pointer
+ void set_msg_data_ptr (ACE_TCHAR *data);
+
+ /// Set the message data of the <Log_Record>.
+ void msg_data (const ACE_TCHAR *data);
+
+ /// Get the size of the message data of the <Log_Record>, including
+ /// a byte for the NUL.
+ size_t msg_data_len (void) const;
+
+ /// Dump the state of an object.
+ void dump (void) const;
+
+ /// Declare the dynamic allocation hooks.
+ ACE_ALLOC_HOOK_DECLARE;
+
+private:
+ /// Round up to the alignment restrictions.
+ void round_up (void);
+
+ /**
+ * Total length of the logging record in bytes. This field *must*
+ * come first in order for various IPC framing mechanisms to work
+ * correctly. In addition, the field must be an ACE_INT32 in order
+ * to be passed portably across platforms.
+ */
+ ACE_INT32 length_;
+
+ /// Type of logging record.
+ ACE_UINT32 type_;
+
+ /// Time that the logging record was generated.
+ ACE_UINT32 secs_;
+ ACE_UINT32 usecs_;
+
+ /// Id of process that generated the logging record.
+ ACE_UINT32 pid_;
+
+ /// Logging record data
+ ACE_TCHAR *msg_data_; // Add one for NUL-terminator.
+
+};
+
+// Forward decls.
+class ACE_InputCDR;
+class ACE_OutputCDR;
+
+// iostream operators for ACE_Log_Record.
+ACE_Export int operator>> (ACE_InputCDR &cdr, ACE_Log_Record &log_record);
+ACE_Export int operator<< (ACE_OutputCDR &cdr, const ACE_Log_Record &log_record);
+
+ACE_END_VERSIONED_NAMESPACE_DECL
+
+#if defined (__ACE_INLINE__)
+#include "ace/Log_Record.inl"
+#endif /* __ACE_INLINE__ */
+
+#include /**/ "ace/post.h"
+#endif /* ACE_LOG_RECORD_H */