Main Page   Namespace List   Class Hierarchy   Compound List   File List   Compound Members   File Members  

container_ts.h

00001 #ifndef EDG_WORKLOAD_COMMON_LOGGER_CONTAINER_TS_H
00002 #define EDG_WORKLOAD_COMMON_LOGGER_CONTAINER_TS_H
00003 
00004 #include <boost/thread/tss.hpp>
00005 
00006 #include "common.h"
00007 
00008 COMMON_NAMESPACE_BEGIN {
00009 
00010 namespace logger {
00011 
00012 class DataContainerMulti : public DataContainerImpl {
00013 public:
00014   DataContainerMulti( const char *format );
00015   ~DataContainerMulti( void );
00016 
00017   // Setters
00018   virtual void date( bool d );
00019   virtual void multiline( bool d, const char *prefix );
00020   virtual void next_level( level_t lev );
00021   virtual void time_format( const char *format );
00022   virtual void function( const char *func );
00023   virtual void clear_function( void );
00024 
00025   // Constant extractors
00026   virtual bool date( void ) const;
00027   virtual bool multiline( void ) const;
00028   virtual level_t next_level( void ) const;
00029   virtual const std::string &time_format( void ) const;
00030   virtual const std::string &function( void ) const;
00031   virtual const std::string &multiline_prefix( void ) const;
00032 
00033   // Extractors
00034   virtual bool date( void );
00035   virtual bool multiline( void );
00036   virtual level_t next_level( void );
00037   virtual const std::string &time_format( void );
00038   virtual const std::string &function( void );
00039   virtual const std::string &multiline_prefix( void );
00040 
00041 private:
00042   struct data_s {
00043     data_s( const DataContainerSingle &dcs );
00044 
00045     bool         d_date, d_multiline;
00046     level_t      d_next;
00047     std::string  d_format, d_function, d_multiprefix;
00048   };
00049 
00050   inline void createData( void ) const
00051   { if( this->dcm_data.get() == NULL ) this->dcm_data.reset( new data_s(this->dcm_single) ); return; }
00052 
00053   mutable boost::thread_specific_ptr<data_s>       dcm_data;
00054   DataContainerSingle                              dcm_single;
00055 };
00056 
00057 }; // Namespace logger
00058 
00059 } COMMON_NAMESPACE_END;
00060 
00061 #endif /* EDG_WORKLOAD_COMMON_LOGGER_CONTAINER_TS_H */
00062 
00063 // Local Variables:
00064 // mode: c++
00065 // End:

Generated on Fri May 14 14:18:25 2004 for COMMON API - configuration, jobid, ldif2classadi, logger, process, requestad, socket++i, task, utilities by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002