A platform for high-performance distributed tool and library development written in C++. It can be deployed in two different cluster modes: standalone or distributed. API for v0.5.0, released on June 13, 2018.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
SequenceFile.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * *
3  * Copyright 2018 Rice University *
4  * *
5  * Licensed under the Apache License, Version 2.0 (the "License"); *
6  * you may not use this file except in compliance with the License. *
7  * You may obtain a copy of the License at *
8  * *
9  * http://www.apache.org/licenses/LICENSE-2.0 *
10  * *
11  * Unless required by applicable law or agreed to in writing, software *
12  * distributed under the License is distributed on an "AS IS" BASIS, *
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
14  * See the License for the specific language governing permissions and *
15  * limitations under the License. *
16  * *
17  *****************************************************************************/
18 
19 #ifndef SEQUENCEFILE_H
20 #define SEQUENCEFILE_H
21 
22 #include "PDBFile.h"
23 #include "DataTypes.h"
24 #include <string>
25 #include <memory>
26 #include "PDBLogger.h"
27 
28 using namespace std;
30 typedef shared_ptr<SequenceFile> SequenceFilePtr;
31 
37 public:
38  SequenceFile(NodeID nodeId,
39  DatabaseID dbId,
40  UserTypeID typeId,
41  SetID setId,
42  string path,
43  pdb::PDBLoggerPtr logger,
44  size_t pageSize);
45  ~SequenceFile();
46 
47  bool openAll() override;
48  bool closeAll() override;
49  void clear() override;
50  int appendPage(FilePartitionID partitionId, PDBPagePtr page) override;
51  int appendPage(PDBPagePtr page);
52  int writeMeta() override;
53  int updateMeta() override;
54 
65  size_t loadPage(PageID pageId, char* pageInCache, size_t length);
66 
72  size_t loadPage(FilePartitionID partitionId,
73  unsigned int pageSeqInPartition,
74  char* pageInCache,
75  size_t length) override;
76 
77  unsigned int getAndSetNumFlushedPages() override;
78  unsigned int getNumFlushedPages() override;
79  PageID getLastFlushedPageID() override;
80  PageID getLatestPageID() override;
81  size_t getPageSize() override;
82  size_t getPageSizeInMeta() override;
83 
87  FileType getFileType() override {
89  }
90 
91  DatabaseID getDbId() override {
92  return dbId;
93  }
94 
95  NodeID getNodeId() override {
96  return nodeId;
97  }
98 
99  SetID getSetId() override {
100  return setId;
101  }
102 
103  UserTypeID getTypeId() override {
104  return typeId;
105  }
106 
110  string getPath() {
111  return filePath;
112  }
113 
114 
115 protected:
119  int seekPageSizeInMeta();
120 
124  int seekLastFlushedPageID();
125 
129  int seekPage(PageID pageId);
130 
134  int writeData(void* data, size_t length);
135 
139  int seekEnd();
140 
141 private:
146  FILE* file;
147  string filePath;
149  unsigned int numFlushedPages;
150  size_t pageSize = 0;
151  size_t metaSize;
153 };
154 
155 #endif /* SEQUENCEFILE_H */
unsigned int SetID
Definition: DataTypes.h:31
UserTypeID typeId
Definition: SequenceFile.h:144
shared_ptr< PDBPage > PDBPagePtr
Definition: PDBPage.h:32
pdb::PDBLoggerPtr logger
Definition: SequenceFile.h:152
NodeID getNodeId() override
Definition: SequenceFile.h:95
FileType
Definition: DataTypes.h:72
unsigned int numFlushedPages
Definition: SequenceFile.h:149
unsigned int NodeID
Definition: DataTypes.h:27
size_t metaSize
Definition: SequenceFile.h:151
unsigned int DatabaseID
Definition: DataTypes.h:29
DatabaseID getDbId() override
Definition: SequenceFile.h:91
unsigned int PageID
Definition: DataTypes.h:26
DatabaseID dbId
Definition: SequenceFile.h:143
SetID getSetId() override
Definition: SequenceFile.h:99
PageID lastFlushedId
Definition: SequenceFile.h:148
FileType getFileType() override
Definition: SequenceFile.h:87
string filePath
Definition: SequenceFile.h:147
std::shared_ptr< PDBLogger > PDBLoggerPtr
Definition: PDBLogger.h:40
string getPath()
Definition: SequenceFile.h:110
UserTypeID getTypeId() override
Definition: SequenceFile.h:103
unsigned int FilePartitionID
Definition: DataTypes.h:32
shared_ptr< SequenceFile > SequenceFilePtr
Definition: SequenceFile.h:29
unsigned int UserTypeID
Definition: DataTypes.h:25