testconns/statdesktop/desktop/source/lib/inc/creporter.h
changeset 4 b8d1455fddc0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/testconns/statdesktop/desktop/source/lib/inc/creporter.h	Mon Oct 04 02:58:21 2010 +0300
@@ -0,0 +1,168 @@
+/*
+* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:     Header file for functions for the Reporter logging mechanism*
+*/
+
+
+
+
+#ifndef CPO_REPORT_HPP
+#define CPO_REPORT_HPP
+
+#include <windows.h>
+#include <stdio.h>
+#include <stdarg.h>
+
+// Comment out this line for release version ...
+// #define RPT_DEBUG_PROG
+
+#define CPO_GARBAGE_CHAR               0xDB    // decimal value ( 3339 )
+#define CPO_TRUE                       1
+#define CPO_FALSE                      0
+#define CPO_BOOL                        unsigned int
+
+#define BITFIELD                       unsigned long
+#define CPO_MAX_FILENAME_LEN           255
+
+// status values
+#define CPO_CLEAR                      0
+#define CPO_CONNECTED                  1  // component currently initiated
+#define CPO_ACTIVATED                  2  // component currently active
+
+
+// Max values for messages
+#define RPT_OPEN_MSG_LEN               2048
+#define RPT_MAX_MSG_LEN                  256
+#define RPT_MAX_PROGRAM_LEN              15
+
+// Max values for message file contents
+#define RPT_MAX_LIST_ENTRIES           1000
+#define RPT_MAX_LINE_LEN                200
+
+// Bit values for the current state 
+#define RPT_CLEAR                         0
+#define RPT_FILE                          4   // Output to file
+#define RPT_STDOUT                        8   // Output to stdout
+#define RPT_STDERR                       16   // Output to stderr
+#define RPT_DEBUG_ON                     32   // Are debug messages processed ?
+#define RPT_OUTPUT_MASK        ( RPT_FILE | \
+                               RPT_STDOUT | \
+                               RPT_STDERR )
+
+// Bit values for the prefix mask
+#define RPT_MSG_ONLY                      1
+#define RPT_MSG_TYPE                      2
+#define RPT_APPNAME                       4
+#define RPT_DATE                          8
+#define RPT_TIME                         16
+#define RPT_ALL            ( RPT_MSG_TYPE | \
+                              RPT_APPNAME | \
+                                 RPT_DATE | \
+                                 RPT_TIME )
+
+// Different kinds of Reporter messages
+#define RPT_DEBUG                       'D'
+#define RPT_INFO                        'I'
+#define RPT_WARN                        'W'
+#define RPT_ERROR                       'E'
+#define RPT_MSG                         'M'
+#define RPT_HEADER                      'H'
+#define RPT_TEXT                        'T'
+
+class Reporter
+{
+public:
+  Reporter ();
+   ~Reporter ();
+    
+  // connection methods
+  CPO_BOOL  init ( const char * appName,
+                             const BITFIELD prefixMask,
+                             const BITFIELD destination );
+  CPO_BOOL  init ( const char * appName,
+                             const BITFIELD prefixMask,
+                             const BITFIELD destination,
+                             const char * path );
+  CPO_BOOL  init ( const char * appName,
+                             const BITFIELD prefixMask,
+                             const BITFIELD destination,
+                             const char * path,
+                             const char * file,
+							 const unsigned long ulOpenAttributes = OPEN_ALWAYS);
+
+  CPO_BOOL  connected ( void );
+  CPO_BOOL  active ( void );
+  void     debugON ( void );
+  void     debugOFF ( void );
+  void     sleep ( void );
+  void     wake ( void );
+  void     load ( const char * filename );
+  void     kill ( void );
+  
+  // display methods
+  void     dash ( void );
+  void     star ( void );
+  void     blank ( void );
+  void     header ( char * message, ... );
+  void     msg ( char * message, ... );
+  void     debug ( char * message, ... );
+  void     info  ( char * message, ... );
+  void     warn  ( char * message, ... );
+  void     error ( char * message, ... );
+  char *   text ( char * message, ... );
+
+  void     header ( int code, ... );
+  void     msg ( int code, ... );
+  void     debug ( int code, ... );
+  void     info  ( int code, ... );
+  void     warn  ( int code, ... );
+  void     error ( int code, ... );
+  char *   text ( int code, ... );
+
+private:
+
+  // variables
+  va_list pCurrent;                               // pointer to arg list
+  BITFIELD state;                                 // current state flags
+  BITFIELD prefix;                                // info to prepend to message
+  HANDLE hFile;		                              // handle to log file
+  char filename [ CPO_MAX_FILENAME_LEN + 1 ];     // name of log file
+  char progname [ RPT_MAX_PROGRAM_LEN + 1 ];      // name of calling process
+  int fileRead;                                   // valid list entries ?
+  char *messageList [ RPT_MAX_LIST_ENTRIES ]; // list of messages
+  char buffer [ RPT_OPEN_MSG_LEN ];               // common temp buffer
+
+  // methods
+  void        prepare ( void );
+  CPO_BOOL     setup ( const char * appName, 
+                       const BITFIELD prefixMask,
+					   const unsigned long ulOpenAttributes = OPEN_ALWAYS );
+  void        actOnCode ( int code, char messType );
+  void        extractName ( char * file, const char * path, 
+                                       const int length );
+  void        generateFilename ( char * validName, 
+                                            const char * appName );
+  int         openFile ( unsigned long ulOpenAttributes = OPEN_ALWAYS );
+  void        closeFile ( void );
+  void        validateText ( char * text, const int length );
+  void        addHeaderInfo ( char * prefixInfo );
+  void        addLogInfo ( char * prefixInfo, const char msgType );
+  void        buildMessage ( const char * message, 
+                                        const char messType );
+  void        writeToStream ( const char * str );
+  void        readMessageFile ( const char * file );
+  void        addMessage ( void );
+};
+
+#endif