BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
Event/RawFile/include/RawFile/raw_ifstream.h
Go to the documentation of this file.
1#ifndef BESIII_RAW_IFSTREAM_H
2#define BESIII_RAW_IFSTREAM_H
3
4#include "RawFile/RawFileUtil.h"
5#include <assert.h>
6#include <fstream>
7#include <pthread.h>
8#include <stdint.h>
9#include <string>
10#include <vector>
11
12class raw_ifstream : virtual public std::ifstream {
13public:
14 static raw_ifstream* instance( const std::vector<std::string>& fnames );
15 static void release();
16
17 static void lock() {
18 int lstat = pthread_mutex_lock( &_pthread_lock );
19 assert( lstat == 0 );
20 };
21 static void unlock() {
22 int lstat = pthread_mutex_unlock( &_pthread_lock );
23 assert( lstat == 0 );
24 };
25
26 std::string currentFile() const { return *m_curFile; }
27
28 void next_file();
29
30 uint32_t runNo();
31
32 raw_ifstream( const std::vector<std::string>& fnames );
33 virtual ~raw_ifstream();
34
35 FileStartRecord& fileStartRecord() { return m_fileStartRecord; }
36 FileNameStrings& fileNameStrings() { return m_fileNameStrings; }
37 RunParametersRecord& runParametersRecord() { return m_runParametersRecord; }
38
39private:
40 void init_fstream();
41
42 raw_ifstream(); // stop default
43
44private:
45 bool m_isOpen;
46
47 FileStartRecord m_fileStartRecord;
48 FileNameStrings m_fileNameStrings;
49 RunParametersRecord m_runParametersRecord;
50
51 std::vector<std::string> m_fnames;
52 std::vector<std::string>::iterator m_curFile;
53
54 static int _nHandler;
55 static raw_ifstream* _instance;
56 static pthread_mutex_t _pthread_lock;
57};
58
59#endif
raw_ifstream(const std::vector< std::string > &fnames)
static void release()
static raw_ifstream * instance(const std::vector< std::string > &fnames)
virtual ~raw_ifstream()
uint32_t runNo()
RunParametersRecord & runParametersRecord()