1 /*
2  * Net2FileSystem.h
3  *
4  * This source file is part of the FoundationDB open source project
5  *
6  * Copyright 2013-2018 Apple Inc. and the FoundationDB project authors
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *     http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  */
20 
21 #ifndef FLOW_NET2FILESYSTEM_H
22 #define FLOW_NET2FILESYSTEM_H
23 #pragma once
24 
25 #include "fdbrpc/IAsyncFile.h"
26 
27 class Net2FileSystem : public IAsyncFileSystem {
28 public:
29 	// Opens a file for asynchronous I/O
30 	virtual Future< Reference<class IAsyncFile> > open( std::string filename, int64_t flags, int64_t mode );
31 
32 	// Deletes the given file.  If mustBeDurable, returns only when the file is guaranteed to be deleted even after a power failure.
33 	virtual Future< Void > deleteFile( std::string filename, bool mustBeDurable );
34 
35 	// Returns the time of the last modification of the file.
36 	virtual Future< std::time_t > lastWriteTime( std::string filename );
37 
38 	//void init();
39 
40 	Net2FileSystem(double ioTimeout=0.0, std::string fileSystemPath = "");
41 
~Net2FileSystem()42 	virtual ~Net2FileSystem() {}
43 
44 	static void newFileSystem(double ioTimeout=0.0, std::string fileSystemPath = "");
45 
46 #ifdef __linux__
47 	dev_t fileSystemDeviceId;
48 	bool checkFileSystem;
49 #endif
50 };
51 
52 #endif
53