CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Utils.h
Go to the documentation of this file.
1 // $Id: Utils.h,v 1.15 2011/03/31 13:04:20 mommsen Exp $
3 
4 #ifndef EventFilter_StorageManager_Utils_h
5 #define EventFilter_StorageManager_Utils_h
6 
7 #include <string>
8 #include <vector>
9 
10 #include "xcept/Exception.h"
11 #include "xdaq/ApplicationDescriptor.h"
12 #include "xdata/String.h"
13 #include "xdata/Vector.h"
14 
15 #include "boost/date_time/gregorian/gregorian_types.hpp"
16 #include "boost/date_time/posix_time/posix_time_types.hpp"
17 #include "boost/thread/thread.hpp"
18 
19 
20 namespace stor {
21 
22  namespace utils {
23 
35  typedef boost::posix_time::ptime TimePoint_t;
36 
41  typedef boost::posix_time::time_duration Duration_t;
42 
47  Duration_t secondsToDuration(double const& seconds);
48 
53  double durationToSeconds(Duration_t const&);
54 
58  long secondsSinceEpoch(TimePoint_t const&);
59 
64 
70  void sleep(Duration_t);
71 
75  void sleepUntil(TimePoint_t);
76 
82  std::string timeStamp(TimePoint_t);
83 
87  std::string timeStampUTC(TimePoint_t);
88 
93  std::string asctimeUTC(TimePoint_t);
94 
99  std::string dateStamp(TimePoint_t);
100 
104  std::string getIdentifier(xdaq::ApplicationDescriptor*);
105 
109  void checkDirectory(const std::string&);
110 
114  void getStdVector(xdata::Vector<xdata::String>&, std::vector<std::string>&);
115  void getXdataVector(const std::vector<std::string>&, xdata::Vector<xdata::String>&);
116 
120  template<typename T, class Comp = std::less<T> >
121  struct ptrComp
122  {
123  bool operator()( T const* const lhs, T const* const rhs ) const
124  {
125  return comp( *lhs, *rhs );
126  }
127  bool operator()( boost::shared_ptr<T> const& lhs, boost::shared_ptr<T> const& rhs ) const
128  {
129  return comp( *lhs, *rhs );
130  }
131  private:
132  Comp comp;
133  };
134 
135 
137  // inline most commonly used methods //
139 
140  inline Duration_t secondsToDuration(double const& seconds)
141  {
142  const unsigned int fullSeconds = static_cast<unsigned int>(seconds);
143  return boost::posix_time::seconds(fullSeconds)
144  + boost::posix_time::millisec(static_cast<unsigned int>((seconds - fullSeconds)*1000) );
145  }
146 
147  inline double durationToSeconds(Duration_t const& duration)
148  {
149  return static_cast<double>(duration.total_milliseconds()) / 1000;
150  }
151 
153  {
154  const static boost::posix_time::ptime epoch(boost::gregorian::date(1970,1,1));
155  return (timestamp - epoch).total_seconds();
156  }
157 
159  {
160  return boost::posix_time::ptime(boost::posix_time::microsec_clock::universal_time());
161  }
162 
163  inline void sleep(Duration_t interval)
164  {
165  boost::this_thread::sleep(interval);
166  }
167 
168  inline void sleepUntil(TimePoint_t theTime)
169  {
170  boost::this_thread::sleep(theTime);
171  }
172 
173  } // namespace utils
174 
175 } // namespace stor
176 
177 #endif // EventFilter_StorageManager_Utils_h
178 
179 
TimePoint_t getCurrentTime()
Definition: Utils.h:158
double seconds()
bool operator()(boost::shared_ptr< T > const &lhs, boost::shared_ptr< T > const &rhs) const
Definition: Utils.h:127
tuple interval
Definition: MergeJob_cfg.py:20
std::string timeStampUTC(TimePoint_t)
Definition: Utils.cc:38
std::string dateStamp(TimePoint_t)
Definition: Utils.cc:60
void sleepUntil(TimePoint_t)
Definition: Utils.h:168
Duration_t secondsToDuration(double const &seconds)
Definition: Utils.h:140
bool operator()(T const *const lhs, T const *const rhs) const
Definition: Utils.h:123
void sleep(Duration_t)
Definition: Utils.h:163
long secondsSinceEpoch(TimePoint_t const &)
Definition: Utils.h:152
boost::posix_time::time_duration Duration_t
Definition: Utils.h:41
std::string asctimeUTC(TimePoint_t)
Definition: Utils.cc:49
void getStdVector(xdata::Vector< xdata::String > &, std::vector< std::string > &)
Definition: Utils.cc:105
boost::posix_time::ptime TimePoint_t
Definition: Utils.h:35
void checkDirectory(const std::string &)
Definition: Utils.cc:80
std::string getIdentifier(xdaq::ApplicationDescriptor *)
Definition: Utils.cc:72
void getXdataVector(const std::vector< std::string > &, xdata::Vector< xdata::String > &)
Definition: Utils.cc:119
double durationToSeconds(Duration_t const &)
Definition: Utils.h:147
long double T
std::string timeStamp(TimePoint_t)
Definition: Utils.cc:23