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