BdsApi  3.0.12
This is the Blacknest BDS API.
BdsDataFile.h
Go to the documentation of this file.
1 /*******************************************************************************
2  * BdsDataFile.h Data File Access
3  * T.Barnaby, BEAM Ltd, 2008-06-24
4  *******************************************************************************
5  */
6 #ifndef BdsDataFile_H
7 #define BdsDataFile_H
8 
9 #include <BString.h>
10 #include <BFile.h>
11 #include <BdsLib.h>
12 #include <BdsD.h>
13 
14 namespace Bds {
15 
17 class DataBlockPos {
18 public:
20  int operator<(const DataBlockPos& b) const { return startTime < b.startTime; }
25  int ref;
27 };
28 
31 public:
32  DataFileOptions(int options = 0){ ooptionList = options; }
33  operator int (){ return ooptionList; }
34  DataFileOptions& operator|=(int o){ ooptionList |= o; return *this; }
35 
38 };
39 
41 class DataFile {
42 public:
44  enum Features { FeatureNone = 0x00, FeatureCanWrite = 0x01, FeatureCanRead = 0x02 };
47 
48  DataFile();
49  virtual ~DataFile();
50 
51  virtual void init();
52  virtual BError open(BString fileName, BString mode);
53  virtual BError close();
54 
55  virtual BError setFormat(BString format);
56  virtual BString getFileName();
57  virtual DataOrder getDataOrder();
58  virtual int getFeatures();
59  virtual BString getFixesInfo();
60 
61  // Write routines
62  virtual BError setInfo(const DataInfo& dataInfo, const ChannelInfos& channelInfos, WriteOptionsList options = WriteOptionNone);
63  virtual BError start(BUInt channel, BUInt segment);
64  virtual BError writeData(const DataBlock& data);
65  virtual BError end();
66  virtual BError flush();
67 
68  // Read routines
69  virtual BError fileNameProcess();
70  virtual BError getFormat(BString& format);
71  virtual BError getInfo(DataInfo& dataInfo, DataFileOptions options, BList<DataError>& errors);
72  virtual BError seekBlock(BUInt32 channel, BUInt segment, BTimeStamp time, BUInt32& blockNumber, BUInt64& sampleNumber, DataBlock& data);
73  virtual BError readData(BUInt32 channel, BUInt segment, BUInt32 blockNumber, DataBlock& dataBlock);
74 
75  virtual BError getMetaData(ChannelInfos& channelInfos, BUInt32 options, BList<DataError>& errors);
76 
77  // Misc functions
78  void dataErrorFixup(const DataInfo& dataInfo, BList<DataError>& errors);
80  int duplicateCheck(const DataBlock& data1, const DataBlock& data2, BUInt channel = 0);
82  static DataFormats getFormats();
83 
84 protected:
90 };
91 
92 }
93 #endif
BUInt32 BUInt
uint32_t BUInt32
int64_t BInt64
uint64_t BUInt64
BOAP data class definitions for: Bds.
General BdsLib API functions.
This class provides metadata information on a set of channels.
Definition: BdsD.h:556
This defines the position of a data block in a file. It is used by the BDS data converters to order b...
Definition: BdsDataFile.h:17
int ref
Definition: BdsDataFile.h:25
BTimeStamp endTime
Definition: BdsDataFile.h:22
BUInt numSamples
Definition: BdsDataFile.h:26
int operator<(const DataBlockPos &b) const
Definition: BdsDataFile.h:20
BUInt order
Definition: BdsDataFile.h:24
BTimeStamp startTime
Definition: BdsDataFile.h:21
DataBlockPos(BTimeStamp startTime=0, BTimeStamp endTime=0, BUInt64 position=0, BUInt order=0, int ref=0, BUInt numSamples=0)
Definition: BdsDataFile.h:19
BUInt64 position
Definition: BdsDataFile.h:23
This class provides the actual seismic data values contained within a single data block.
Definition: BdsD.h:699
This defines a list of BDS data converter options.
Definition: BdsDataFile.h:30
int ooptionList
Definition: BdsDataFile.h:36
DataFileOptions(int options=0)
Definition: BdsDataFile.h:32
BArray< BUInt > oignoreBlockList
Definition: BdsDataFile.h:37
DataFileOptions & operator|=(int o)
Definition: BdsDataFile.h:34
This class defines the interface for generic data file access that all of the BDS data converters sha...
Definition: BdsDataFile.h:41
int duplicateCheck(const DataBlock &data1, const DataBlock &data2, BUInt channel=0)
Check if blocks are duplicates.
Definition: BdsDataFile.cpp:202
virtual BError getInfo(DataInfo &dataInfo, DataFileOptions options, BList< DataError > &errors)
Get info on data.
Definition: BdsDataFile.cpp:102
virtual BError getFormat(BString &format)
Get sub-format.
Definition: BdsDataFile.cpp:94
DataFile()
Definition: BdsDataFile.cpp:10
BString ofileName
Definition: BdsDataFile.h:85
virtual BError writeData(const DataBlock &data)
Write a block of data.
Definition: BdsDataFile.cpp:72
BInt64 timeCompare(BTimeStamp t1, BTimeStamp t2, BUInt diff)
Compare timestamps with a margin.
Definition: BdsDataFile.cpp:193
virtual ~DataFile()
Definition: BdsDataFile.cpp:13
Features
Definition: BdsDataFile.h:44
@ FeatureCanWrite
Definition: BdsDataFile.h:44
@ FeatureCanRead
Definition: BdsDataFile.h:44
@ FeatureNone
Definition: BdsDataFile.h:44
DataOrder
Definition: BdsDataFile.h:43
@ DataOrderAll
Definition: BdsDataFile.h:43
@ DataOrderChannel
Definition: BdsDataFile.h:43
@ DataOrderSample
Definition: BdsDataFile.h:43
@ DataOrderUnknown
Definition: BdsDataFile.h:43
void dataErrorFixup(const DataInfo &dataInfo, BList< DataError > &errors)
Fixup data errors, mainly start/end times to be within data.
Definition: BdsDataFile.cpp:184
WriteOptionsList
Definition: BdsDataFile.h:45
@ WriteOptionSensorData
Definition: BdsDataFile.h:45
@ WriteOptionNone
Definition: BdsDataFile.h:45
@ WriteOptionNoMetadata
Definition: BdsDataFile.h:45
virtual BString getFileName()
Return the file name.
Definition: BdsDataFile.cpp:34
virtual BError seekBlock(BUInt32 channel, BUInt segment, BTimeStamp time, BUInt32 &blockNumber, BUInt64 &sampleNumber, DataBlock &data)
Find requested block on given channel given a time.
Definition: BdsDataFile.cpp:110
virtual BError open(BString fileName, BString mode)
Open the file for read or write.
Definition: BdsDataFile.cpp:20
virtual BError close()
Close the file.
Definition: BdsDataFile.cpp:26
virtual int getFeatures()
Get bitmask of supported features.
Definition: BdsDataFile.cpp:42
virtual BError getMetaData(ChannelInfos &channelInfos, BUInt32 options, BList< DataError > &errors)
Return all known MetaData in the file.
Definition: BdsDataFile.cpp:126
virtual BError setInfo(const DataInfo &dataInfo, const ChannelInfos &channelInfos, WriteOptionsList options=WriteOptionNone)
Set information on data for write.
Definition: BdsDataFile.cpp:58
virtual BError flush()
Flush data to disk.
Definition: BdsDataFile.cpp:86
virtual BError fileNameProcess()
Parse the file name for a date/time.
Definition: BdsDataFile.cpp:132
BString oformat
Definition: BdsDataFile.h:89
virtual BError start(BUInt channel, BUInt segment)
Start writing next segment of data.
Definition: BdsDataFile.cpp:66
virtual BError setFormat(BString format)
Set the sub-format.
Definition: BdsDataFile.cpp:50
ReadOptionsList
Definition: BdsDataFile.h:46
@ ReadOptionValidate
Definition: BdsDataFile.h:46
@ ReadOptionReorder
Definition: BdsDataFile.h:46
@ ReadOptionDeleteDuplicates
Definition: BdsDataFile.h:46
@ ReadOptionPrintBlocks
Definition: BdsDataFile.h:46
@ ReadOptionFileNameProcess
Definition: BdsDataFile.h:46
@ ReadOptionFixCorruptions
Definition: BdsDataFile.h:46
@ ReadOptionInfoExtra
Definition: BdsDataFile.h:46
@ ReadOptionFixSampleRate
Definition: BdsDataFile.h:46
@ ReadOptionIgnoreSamplerate
Definition: BdsDataFile.h:46
@ ReadOptionNone
Definition: BdsDataFile.h:46
BFile ofile
Definition: BdsDataFile.h:88
virtual BError readData(BUInt32 channel, BUInt segment, BUInt32 blockNumber, DataBlock &dataBlock)
Read a block.
Definition: BdsDataFile.cpp:118
BString omode
Definition: BdsDataFile.h:86
virtual BString getFixesInfo()
Get readable list of fixes that can be applied to faulty data files.
Definition: BdsDataFile.cpp:46
static DataFormats getFormats()
Get list of supported formats.
Definition: BdsDataFile.cpp:246
BTimeStamp ofileNameTime
Definition: BdsDataFile.h:87
BUInt64 getFilePosition()
Definition: BdsDataFile.cpp:242
virtual DataOrder getDataOrder()
Get the expected order of writing data, by sample or by channel.
Definition: BdsDataFile.cpp:38
virtual void init()
Initialise.
Definition: BdsDataFile.cpp:17
virtual BError end()
End write segment.
Definition: BdsDataFile.cpp:80
This class defines information on a set of data.
Definition: BdsD.h:632
Definition: BdsC.cc:8