Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

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 Apr 30 02:30:51 2009 for ACS C++ API by doxygen 1.3.8