• Classes
  • Modules
  • Namespaces
  • Files
  • Related Pages
  • File List
  • File Members

loggingLoggingTSSStorage.h

Go to the documentation of this file.
00001 #ifndef logging_logging_tssstorage_H
00002 #define logging_logging_tssstorage_H
00003 
00004 /*******************************************************************************
00005 *    ALMA - Atacama Large Millimiter Array
00006 *    (c) European Southern Observatory, 2002
00007 *    Copyright by ESO (in the framework of the ALMA collaboration)
00008 *    and Cosylab 2002, All rights reserved
00009 *
00010 *    This library is free software; you can redistribute it and/or
00011 *    modify it under the terms of the GNU Lesser General Public
00012 *    License as published by the Free Software Foundation; either
00013 *    version 2.1 of the License, or (at your option) any later version.
00014 *
00015 *    This library is distributed in the hope that it will be useful,
00016 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
00017 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00018 *    Lesser General Public License for more details.
00019 *
00020 *    You should have received a copy of the GNU Lesser General Public
00021 *    License along with this library; if not, write to the Free Software
00022 *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
00023 *
00024 * "@(#) $Id: loggingLoggingTSSStorage.h,v 1.9 2008/08/05 15:46:07 bjeram Exp $"
00025 *
00026 * who       when        what
00027 * --------  ----------  ----------------------------------------------
00028 * almamgr   2000-12-03  created
00029 */
00030 
00031 #ifndef __cplusplus
00032 #error This is a C++ include file and cannot be used from plain C
00033 #endif
00034 
00035 #include <ace/Hash_Map_Manager.h>
00036 #include <ace/Task.h>
00037 
00038 class LoggingTSSStorage
00039 {
00040   public:
00041     LoggingTSSStorage() : m_threadName(0),
00042     tmpStr((size_t)512)
00043         {
00044             m_ldata.open(3);
00045             m_attributes.open(3);
00046             clear();
00047         }
00048 
00049     ~LoggingTSSStorage()
00050         {
00051             if (m_threadName)
00052                 {
00053                 delete[] m_threadName;
00054                 m_threadName = 0;
00055                 }
00056             m_ldata.close();
00057             m_attributes.close();
00058         }
00059 
00060     void clear()
00061         {
00062             m_logEntryType = 0;
00063             m_routine = 0;
00064             m_file = 0;
00065             m_line = 0UL;
00066             sourceObject_m = 0;
00067             audience_m = 0;
00068             array_m = 0;
00069             antenna_m = 0;
00070             m_lflags = 0;
00071             m_stackId = 0;
00072             m_stackLevel = 0;
00073             m_context = 0;
00074             m_uri = 0;
00075             m_logId = 0;
00076             m_host = 0;
00077             m_privateFlags = 0;
00078             logLevelLocalType_m = 6;
00079             logLevelRemoteType_m = 6;
00080             m_ldata.unbind_all();
00081             m_attributes.unbind_all();
00082         }
00083 
00084     void resetAttributes() { m_attributes.unbind_all(); };
00085 
00086     const ACE_TCHAR * routine() { return m_routine; };
00087     void routine(const ACE_TCHAR * routine) { m_routine=routine; };
00088 
00089     const ACE_TCHAR * file() { return m_file; };
00090     void file(const ACE_TCHAR * fileName) { m_file=fileName; };
00091 
00092     const unsigned long line() { return m_line; };
00093     void line(unsigned long lineNumber) { m_line=lineNumber; };
00094 
00095     const ACE_TCHAR *
00096     sourceObject() { return sourceObject_m; };
00097 
00098     void
00099     sourceObject(const ACE_TCHAR * soName) { sourceObject_m = soName; };
00100 
00101     const ACE_TCHAR *
00102     audience() { return audience_m; };
00103 
00104     void
00105     audience(const ACE_TCHAR * soName) { audience_m = soName; };
00106 
00107     const ACE_TCHAR *
00108     array() { return array_m; };
00109 
00110     void
00111     array(const ACE_TCHAR * soName) { array_m = soName; };
00112 
00113     const ACE_TCHAR *
00114     antenna() { return antenna_m; };
00115 
00116     void
00117     antenna(const ACE_TCHAR * soName) { antenna_m = soName; };
00118 
00119     unsigned int flags() { return m_lflags; };
00120     void flags(unsigned int flags) { m_lflags=flags; };
00121 
00122     const ACE_TCHAR * threadName() { return m_threadName; };
00123     void threadName(const ACE_TCHAR * name)
00124         {
00125             if (m_threadName)
00126                 {
00127                 delete[] m_threadName;
00128                 m_threadName = 0;
00129                 }
00130 
00131             if (name)
00132                 {
00133                 m_threadName = new ACE_TCHAR[ACE_OS::strlen(name)+1];
00134                 ACE_OS::strcpy(m_threadName, name);
00135                 }
00136         };
00137 
00138     const ACE_TCHAR * logEntryType() { return m_logEntryType; };
00139     void logEntryType(const ACE_TCHAR * logEntryType) { m_logEntryType=logEntryType; };
00140 
00141     const ACE_TCHAR * context() { return m_context; };
00142     void context(const ACE_TCHAR * context) { m_context=context; };
00143 
00144     int stackLevel() { return m_stackLevel; };
00145     void stackLevel(int stackLevel) { m_stackLevel=stackLevel; };
00146 
00147     const ACE_TCHAR * stackId() { return m_stackId; };
00148     void stackId(const ACE_TCHAR * stackId) { m_stackId=stackId; };
00149 
00150     const ACE_TCHAR * logId() { return m_logId; };
00151     void logId(const ACE_TCHAR * logId) { m_logId=logId; };
00152 
00153     const ACE_TCHAR * uri() { return m_uri; };
00154     void uri(const ACE_TCHAR * uri) { m_uri=uri; };
00155 
00156     const ACE_TCHAR * host() { return m_host; };
00157     void host(const ACE_TCHAR * host) { m_host=host; };
00158 
00159     int privateFlags() { return m_privateFlags; };
00160     void privateFlags(int privateFlags) { m_privateFlags=privateFlags; };
00161 
00162     int logLevelLocalType() { return logLevelLocalType_m; };
00163     void logLevelLocalType(int logLevelLocalType) { logLevelLocalType_m=logLevelLocalType; };
00164 
00165     int logLevelRemoteType() { return logLevelRemoteType_m; };
00166     void logLevelRemoteType(int logLevelRemoteType) { logLevelRemoteType_m=logLevelRemoteType; };
00167     typedef ACE_Hash_Map_Manager <ACE_CString, ACE_CString, ACE_Thread_Mutex> HASH_MAP;
00168     typedef ACE_Hash_Map_Iterator <ACE_CString, ACE_CString, ACE_Thread_Mutex> HASH_MAP_ITER;
00169     typedef ACE_Hash_Map_Entry <ACE_CString, ACE_CString> HASH_MAP_ENTRY;
00170 
00171     void addAttribute(const ACE_TCHAR * name,  const ACE_TCHAR * value)
00172         {
00173             m_attributes.bind(name, value);
00174         };
00175 
00176     void addData(const ACE_TCHAR * name,  const ACE_TCHAR * value)
00177         {
00178             m_ldata.bind(name, value);
00179         };
00180 
00181     HASH_MAP_ITER getAttributes() {
00182         return HASH_MAP_ITER(m_attributes);
00183     };
00184 
00185     HASH_MAP_ITER getData() {
00186         return HASH_MAP_ITER(m_ldata);
00187     };
00188 
00189     ACE_CString& getTmpStr(){
00190                 return tmpStr;
00191     }
00192   private:
00193 
00194     ACE_TCHAR * m_threadName;           // deep copy
00195 
00196     const ACE_TCHAR * m_logEntryType;
00197     const ACE_TCHAR * m_routine;
00198     const ACE_TCHAR * m_file;
00199     unsigned long m_line;
00200     const ACE_TCHAR * sourceObject_m;
00201     const ACE_TCHAR * audience_m;
00202     const ACE_TCHAR * array_m;
00203     const ACE_TCHAR * antenna_m;
00204     unsigned int m_lflags;
00205     const ACE_TCHAR * m_stackId;
00206     int m_stackLevel;
00207     const ACE_TCHAR * m_context;
00208     const ACE_TCHAR * m_logId;
00209     const ACE_TCHAR * m_uri;
00210     const ACE_TCHAR * m_host;
00211 
00212     // used internally by logger
00213     // bit 0 (LSB) = prohibit stdout
00214     // bit 1       = prohibit remote
00215     int m_privateFlags;
00216     int logLevelLocalType_m;
00217     int logLevelRemoteType_m;
00218 
00219     LoggingTSSStorage::HASH_MAP m_ldata;
00220     LoggingTSSStorage::HASH_MAP m_attributes;
00221     // temporary string that can be used to create log message on the fly.
00222     ACE_CString tmpStr;
00223 };
00224 
00225 
00226 #endif 

Generated on Thu Jan 12 2012 23:13:51 for ACS-10.0 C++ API by  doxygen 1.7.0