source: trunk/FACT++/src/DimWriteStatistics.h@ 11812

Last change on this file since 11812 was 11534, checked in by tbretz, 13 years ago
Changed GetFileSizeOnDisk to be static so it can be accessed from the outside.
File size: 2.4 KB
Line 
1#ifndef FACT_DimWriteStatistics
2#define FACT_DimWriteStatistics
3
4#include <set>
5#include <string>
6
7// Keep these two together! Otheriwse it won't compile
8#include <boost/bind.hpp>
9#if BOOST_VERSION < 104400
10#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4))
11#undef BOOST_HAS_RVALUE_REFS
12#endif
13#endif
14#include <boost/thread.hpp>
15
16#include "MessageImp.h"
17#include "DimDescriptionService.h"
18
19class DimWriteStatistics
20{
21public:
22 struct Stats
23 {
24 uint64_t freeSpace;
25 uint64_t sizeWritten;
26 uint64_t rateWritten;
27 uint64_t timeElapsed;
28
29 Stats() : freeSpace(0), sizeWritten(0), rateWritten(0), timeElapsed(0) { }
30 };
31
32private:
33 MessageImp &fLog;
34
35 DimDescribedService fDimService;
36
37 std::string fCurrentFolder; /// Current folder being watched for free space
38 uint16_t fUpdateInterval; /// Duration, in millisecond between two service updates. 0 means no more updates
39 size_t fBaseSize; /// Total base size of all opened files
40 std::set<std::string> fOpenedFiles; /// List of all opened files. set is used to easily check for entries
41
42 /// Bool indicating if debug information should be printed
43 bool fDebug;
44
45 /// The data structure holding the stat data
46 Stats fStats;
47
48 /// The boost thread used to update the service
49 boost::thread fThread;
50
51 ///Main loop
52 void UpdateService();
53
54 ///Returns the free space on the disk of the folder being watched (fCurrentFolder)
55 int64_t GetFreeSpace();
56
57 ///Returns the size on disk of a given file
58 int64_t GetFileSizeOnDisk(const std::string& file) { return GetFileSizeOnDisk(file, fLog); }
59
60 int Write(const Time &t, const std::string &txt, int qos);
61
62public:
63 ///Constructor
64 DimWriteStatistics(const std::string& serverName, MessageImp &log);
65
66 ///Default destructor
67 ~DimWriteStatistics();
68
69 ///Configures that current folder where files are written to
70 bool SetCurrentFolder(const std::string& folder);
71
72 bool FileOpened(const std::string& fileName);
73
74 void SetDebugMode(bool);
75 void SetUpdateInterval(const int16_t millisec);
76
77 const Stats &GetTotalSizeWritten() const { return fStats; }
78 uint16_t GetUpdateInterval() const { return fUpdateInterval; }
79
80 ///Returns the size on disk of a given file
81 static int64_t GetFileSizeOnDisk(const std::string& file, MessageImp &imp);
82};
83
84#endif
Note: See TracBrowser for help on using the repository browser.