OmniSciDB  340b00dbf6
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
File.h
Go to the documentation of this file.
1 /*
2  * Copyright 2017 MapD Technologies, Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
23 #pragma once
24 
25 #define MAPD_FILE_EXT ".mapd"
26 #define MAX_FILE_N_PAGES 256
27 #define MAX_FILE_N_METADATA_PAGES 4096
28 
29 #include <cstdint>
30 #include <cstdio>
31 #include <iostream>
32 #include <string>
33 
34 #include "Shared/types.h"
35 
36 namespace File_Namespace {
37 
38 FILE* create(const std::string& basePath,
39  const int fileId,
40  const size_t pageSize,
41  const size_t npages);
42 
43 FILE* create(const std::string& fullPath, const size_t requestedFileSize);
44 
51 FILE* open(int fileId);
52 
53 FILE* open(const std::string& path);
54 
60 void close(FILE* f);
61 
69 bool removeFile(const std::string basePath, const std::string filename);
70 
81 size_t read(FILE* f, const size_t offset, const size_t size, int8_t* buf);
82 
93 size_t write(FILE* f, const size_t offset, const size_t size, int8_t* buf);
94 
104 size_t append(FILE* f, const size_t size, int8_t* buf);
105 
116 size_t readPage(FILE* f, const size_t pageSize, const size_t pageNum, int8_t* buf);
117 
128 size_t writePage(FILE* f, const size_t pageSize, const size_t pageNum, int8_t* buf);
129 
139 size_t appendPage(FILE* f, const size_t pageSize, int8_t* buf);
140 
146 size_t fileSize(FILE* f);
147 
152 void renameForDelete(const std::string directoryName);
153 
154 } // namespace File_Namespace
size_t appendPage(FILE *f, const size_t pageSize, int8_t *buf)
Appends a page from buf to the file.
Definition: File.cpp:171
std::string filename(char const *path)
Definition: Logger.cpp:62
size_t writePage(FILE *f, const size_t pageSize, const size_t pageNum, int8_t *buf)
Writes a page from buf to the file.
Definition: File.cpp:158
FILE * create(const std::string &basePath, const int fileId, const size_t pageSize, const size_t numPages)
Definition: File.cpp:40
size_t read(FILE *f, const size_t offset, const size_t size, int8_t *buf)
Reads the specified number of bytes from the offset position in file f into buf.
Definition: File.cpp:118
size_t append(FILE *f, const size_t size, int8_t *buf)
Appends the specified number of bytes to the end of the file f from buf.
Definition: File.cpp:141
size_t readPage(FILE *f, const size_t pageSize, const size_t pageNum, int8_t *buf)
Reads the specified page from the file f into buf.
Definition: File.cpp:145
size_t fileSize(FILE *f)
Returns the size of the specified file.
Definition: File.cpp:176
FILE * open(int fileId)
Opens/creates the file with the given id; returns NULL on error.
Definition: File.cpp:88
size_t write(FILE *f, const size_t offset, const size_t size, int8_t *buf)
Writes the specified number of bytes to the offset position in file f from buf.
Definition: File.cpp:126
void close(FILE *f)
Closes the file pointed to by the FILE pointer.
Definition: File.cpp:107
bool removeFile(const std::string basePath, const std::string filename)
Deletes the file pointed to by the FILE pointer.
Definition: File.cpp:113
void renameForDelete(const std::string directoryName)
Renames a directory to DELETE_ME_&lt;EPOCH&gt;_&lt;oldname&gt;.
Definition: File.cpp:188