Fix IAsyncFileSystem method signatures

This commit is contained in:
sfc-gh-tclinkenbeard 2020-12-28 00:43:47 -04:00
parent 8dc39f4d8f
commit 86c7c1e946
8 changed files with 24 additions and 30 deletions

View File

@ -239,7 +239,7 @@ public:
// However, we could have unfinished version in the buffer when EOF is true, // However, we could have unfinished version in the buffer when EOF is true,
// which means we should look for data in the next file. The caller // which means we should look for data in the next file. The caller
// should call getUnfinishedBuffer() to get these left data. // should call getUnfinishedBuffer() to get these left data.
bool finished() { return (eof && keyValues.empty()) || (leftover && !keyValues.empty()); } bool finished() const { return (eof && keyValues.empty()) || (leftover && !keyValues.empty()); }
std::vector<VersionedKVPart>&& getUnfinishedBuffer() && { return std::move(keyValues); } std::vector<VersionedKVPart>&& getUnfinishedBuffer() && { return std::move(keyValues); }

View File

@ -30,7 +30,7 @@ namespace {
class BackupFile : public IBackupFile, ReferenceCounted<BackupFile> { class BackupFile : public IBackupFile, ReferenceCounted<BackupFile> {
public: public:
BackupFile(std::string fileName, Reference<IAsyncFile> file, std::string finalFullPath) BackupFile(const std::string& fileName, Reference<IAsyncFile> file, const std::string& finalFullPath)
: IBackupFile(fileName), m_file(file), m_finalFullPath(finalFullPath) {} : IBackupFile(fileName), m_file(file), m_finalFullPath(finalFullPath) {}
Future<Void> append(const void* data, int len) { Future<Void> append(const void* data, int len) {

View File

@ -108,7 +108,7 @@ ACTOR static Future<Void> incrementalDeleteHelper( std::string filename, bool mu
return Void(); return Void();
} }
Future<Void> IAsyncFileSystem::incrementalDeleteFile( std::string filename, bool mustBeDurable ) { Future<Void> IAsyncFileSystem::incrementalDeleteFile(const std::string& filename, bool mustBeDurable) {
return uncancellable(incrementalDeleteHelper( return uncancellable(incrementalDeleteHelper(
filename, filename,
mustBeDurable, mustBeDurable,

View File

@ -88,17 +88,17 @@ typedef void (*runCycleFuncPtr)();
class IAsyncFileSystem { class IAsyncFileSystem {
public: public:
// Opens a file for asynchronous I/O // Opens a file for asynchronous I/O
virtual Future< Reference<class IAsyncFile> > open( std::string filename, int64_t flags, int64_t mode ) = 0; virtual Future<Reference<class IAsyncFile>> open(const std::string& filename, int64_t flags, int64_t mode) = 0;
// Deletes the given file. If mustBeDurable, returns only when the file is guaranteed to be deleted even after a power failure. // Deletes the given file. If mustBeDurable, returns only when the file is guaranteed to be deleted even after a power failure.
virtual Future< Void > deleteFile( std::string filename, bool mustBeDurable ) = 0; virtual Future<Void> deleteFile(const std::string& filename, bool mustBeDurable) = 0;
// Unlinks a file and then deletes it slowly by truncating the file repeatedly. // Unlinks a file and then deletes it slowly by truncating the file repeatedly.
// If mustBeDurable, returns only when the file is guaranteed to be deleted even after a power failure. // If mustBeDurable, returns only when the file is guaranteed to be deleted even after a power failure.
virtual Future<Void> incrementalDeleteFile( std::string filename, bool mustBeDurable ); virtual Future<Void> incrementalDeleteFile(const std::string& filename, bool mustBeDurable);
// Returns the time of the last modification of the file. // Returns the time of the last modification of the file.
virtual Future<std::time_t> lastWriteTime( std::string filename ) = 0; virtual Future<std::time_t> lastWriteTime(const std::string& filename) = 0;
static IAsyncFileSystem* filesystem() { return filesystem(g_network); } static IAsyncFileSystem* filesystem() { return filesystem(g_network); }
static runCycleFuncPtr runCycleFunc() { return reinterpret_cast<runCycleFuncPtr>(reinterpret_cast<flowGlobalType>(g_network->global(INetwork::enRunCycleFunc))); } static runCycleFuncPtr runCycleFunc() { return reinterpret_cast<runCycleFuncPtr>(reinterpret_cast<flowGlobalType>(g_network->global(INetwork::enRunCycleFunc))); }

View File

@ -40,8 +40,7 @@
#include "fdbrpc/AsyncFileWriteChecker.h" #include "fdbrpc/AsyncFileWriteChecker.h"
// Opens a file for asynchronous I/O // Opens a file for asynchronous I/O
Future< Reference<class IAsyncFile> > Net2FileSystem::open( std::string filename, int64_t flags, int64_t mode ) Future<Reference<class IAsyncFile>> Net2FileSystem::open(const std::string& filename, int64_t flags, int64_t mode) {
{
#ifdef __linux__ #ifdef __linux__
if (checkFileSystem) { if (checkFileSystem) {
dev_t fileDeviceId = getDeviceId(filename); dev_t fileDeviceId = getDeviceId(filename);
@ -75,22 +74,19 @@ Future< Reference<class IAsyncFile> > Net2FileSystem::open( std::string filename
} }
// Deletes the given file. If mustBeDurable, returns only when the file is guaranteed to be deleted even after a power failure. // Deletes the given file. If mustBeDurable, returns only when the file is guaranteed to be deleted even after a power failure.
Future< Void > Net2FileSystem::deleteFile( std::string filename, bool mustBeDurable ) Future<Void> Net2FileSystem::deleteFile(const std::string& filename, bool mustBeDurable) {
{
return Net2AsyncFile::deleteFile(filename, mustBeDurable); return Net2AsyncFile::deleteFile(filename, mustBeDurable);
} }
Future< std::time_t > Net2FileSystem::lastWriteTime( std::string filename ) { Future<std::time_t> Net2FileSystem::lastWriteTime(const std::string& filename) {
return Net2AsyncFile::lastWriteTime( filename ); return Net2AsyncFile::lastWriteTime( filename );
} }
void Net2FileSystem::newFileSystem(double ioTimeout, std::string fileSystemPath) void Net2FileSystem::newFileSystem(double ioTimeout, const std::string& fileSystemPath) {
{
g_network->setGlobal(INetwork::enFileSystem, (flowGlobalType) new Net2FileSystem(ioTimeout, fileSystemPath)); g_network->setGlobal(INetwork::enFileSystem, (flowGlobalType) new Net2FileSystem(ioTimeout, fileSystemPath));
} }
Net2FileSystem::Net2FileSystem(double ioTimeout, std::string fileSystemPath) Net2FileSystem::Net2FileSystem(double ioTimeout, const std::string& fileSystemPath) {
{
Net2AsyncFile::init(); Net2AsyncFile::init();
#ifdef __linux__ #ifdef __linux__
if (!FLOW_KNOBS->DISABLE_POSIX_KERNEL_AIO) if (!FLOW_KNOBS->DISABLE_POSIX_KERNEL_AIO)

View File

@ -24,25 +24,25 @@
#include "fdbrpc/IAsyncFile.h" #include "fdbrpc/IAsyncFile.h"
class Net2FileSystem : public IAsyncFileSystem { class Net2FileSystem final : public IAsyncFileSystem {
public: public:
// Opens a file for asynchronous I/O // Opens a file for asynchronous I/O
virtual Future< Reference<class IAsyncFile> > open( std::string filename, int64_t flags, int64_t mode ); Future<Reference<class IAsyncFile>> open(const std::string& filename, int64_t flags, int64_t mode) override;
// Deletes the given file. If mustBeDurable, returns only when the file is guaranteed to be deleted even after a power failure. // Deletes the given file. If mustBeDurable, returns only when the file is guaranteed to be deleted even after a power failure.
virtual Future< Void > deleteFile( std::string filename, bool mustBeDurable ); Future<Void> deleteFile(const std::string& filename, bool mustBeDurable) override;
// Returns the time of the last modification of the file. // Returns the time of the last modification of the file.
virtual Future< std::time_t > lastWriteTime( std::string filename ); Future<std::time_t> lastWriteTime(const std::string& filename) override;
//void init(); //void init();
static void stop(); static void stop();
Net2FileSystem(double ioTimeout=0.0, std::string fileSystemPath = ""); Net2FileSystem(double ioTimeout = 0.0, const std::string& fileSystemPath = "");
virtual ~Net2FileSystem() {} virtual ~Net2FileSystem() {}
static void newFileSystem(double ioTimeout=0.0, std::string fileSystemPath = ""); static void newFileSystem(double ioTimeout = 0.0, const std::string& fileSystemPath = "");
#ifdef __linux__ #ifdef __linux__
dev_t fileSystemDeviceId; dev_t fileSystemDeviceId;

View File

@ -2027,8 +2027,7 @@ int sf_open( const char* filename, int flags, int convFlags, int mode ) {
#endif #endif
// Opens a file for asynchronous I/O // Opens a file for asynchronous I/O
Future< Reference<class IAsyncFile> > Sim2FileSystem::open( std::string filename, int64_t flags, int64_t mode ) Future<Reference<class IAsyncFile>> Sim2FileSystem::open(const std::string& filename, int64_t flags, int64_t mode) {
{
ASSERT( (flags & IAsyncFile::OPEN_ATOMIC_WRITE_AND_CREATE) || ASSERT( (flags & IAsyncFile::OPEN_ATOMIC_WRITE_AND_CREATE) ||
!(flags & IAsyncFile::OPEN_CREATE) || !(flags & IAsyncFile::OPEN_CREATE) ||
StringRef(filename).endsWith(LiteralStringRef(".fdb-lock")) ); // We don't use "ordinary" non-atomic file creation right now except for folder locking, and we don't have code to simulate its unsafeness. StringRef(filename).endsWith(LiteralStringRef(".fdb-lock")) ); // We don't use "ordinary" non-atomic file creation right now except for folder locking, and we don't have code to simulate its unsafeness.
@ -2065,12 +2064,11 @@ Future< Reference<class IAsyncFile> > Sim2FileSystem::open( std::string filename
} }
// Deletes the given file. If mustBeDurable, returns only when the file is guaranteed to be deleted even after a power failure. // Deletes the given file. If mustBeDurable, returns only when the file is guaranteed to be deleted even after a power failure.
Future< Void > Sim2FileSystem::deleteFile( std::string filename, bool mustBeDurable ) Future<Void> Sim2FileSystem::deleteFile(const std::string& filename, bool mustBeDurable) {
{
return Sim2::deleteFileImpl(&g_sim2, filename, mustBeDurable); return Sim2::deleteFileImpl(&g_sim2, filename, mustBeDurable);
} }
Future< std::time_t > Sim2FileSystem::lastWriteTime( std::string filename ) { Future<std::time_t> Sim2FileSystem::lastWriteTime(const std::string& filename) {
// TODO: update this map upon file writes. // TODO: update this map upon file writes.
static std::map<std::string, double> fileWrites; static std::map<std::string, double> fileWrites;
if (BUGGIFY && deterministicRandom()->random01() < 0.01) { if (BUGGIFY && deterministicRandom()->random01() < 0.01) {

View File

@ -383,12 +383,12 @@ extern Future<Void> waitUntilDiskReady(Reference<DiskParameters> parameters, int
class Sim2FileSystem : public IAsyncFileSystem { class Sim2FileSystem : public IAsyncFileSystem {
public: public:
// Opens a file for asynchronous I/O // Opens a file for asynchronous I/O
virtual Future< Reference<class IAsyncFile> > open( std::string filename, int64_t flags, int64_t mode ); Future<Reference<class IAsyncFile>> open(const std::string& filename, int64_t flags, int64_t mode) override;
// Deletes the given file. If mustBeDurable, returns only when the file is guaranteed to be deleted even after a power failure. // Deletes the given file. If mustBeDurable, returns only when the file is guaranteed to be deleted even after a power failure.
virtual Future< Void > deleteFile( std::string filename, bool mustBeDurable ); Future<Void> deleteFile(const std::string& filename, bool mustBeDurable) override;
virtual Future< std::time_t > lastWriteTime( std::string filename ); Future<std::time_t> lastWriteTime(const std::string& filename) override;
Sim2FileSystem() {} Sim2FileSystem() {}