BOSS 7.1.2
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 raw_ifstream(const std::vector<std::string>& fnames);
36 virtual ~raw_ifstream();
37
38 private :
39
40 void init_fstream();
41
42 raw_ifstream(); //stop default
43
44
45 private :
46
47 bool m_isOpen;
48
49 FileStartRecord m_fileStartRecord;
50 FileNameStrings m_fileNameStrings;
51 RunParametersRecord m_runParametersRecord;
52
53 std::vector<std::string> m_fnames;
54 std::vector<std::string>::iterator m_curFile;
55
56 static int _nHandler;
57 static raw_ifstream* _instance;
58 static pthread_mutex_t _pthread_lock;
59};
60
61#endif
#define private
static void unlock()
static void lock()
static void release()
static raw_ifstream * instance(const std::vector< std::string > &fnames)
virtual ~raw_ifstream()
uint32_t runNo()
std::string currentFile() const