X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=folly%2FFile.h;h=26d158e11f9b1fb5dca80ce228f24211077ad05e;hb=d2c8a36b6b96eea44e9e92fa6946d607f8530b07;hp=506181580844857efde6957b1ac102236b18a1f2;hpb=c7854d9267a26d2847a23334377e77f764437e7d;p=folly.git diff --git a/folly/File.h b/folly/File.h index 50618158..26d158e1 100644 --- a/folly/File.h +++ b/folly/File.h @@ -1,5 +1,5 @@ /* - * Copyright 2013 Facebook, Inc. + * Copyright 2016 Facebook, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,13 +14,17 @@ * limitations under the License. */ -#ifndef FOLLY_FILE_H_ -#define FOLLY_FILE_H_ +#pragma once +#include #include #include -#include -#include + +#include + +#include +#include +#include namespace folly { @@ -38,15 +42,15 @@ class File { * Create a File object from an existing file descriptor. * Takes ownership of the file descriptor if ownsFd is true. */ - /* implicit */ File(int fd, - bool ownsFd = false); + explicit File(int fd, bool ownsFd = false); /** * Open and create a file object. Throws on error. */ - /* implicit */ File(const char* name, - int flags = O_RDONLY, - mode_t mode = 0644); + explicit File(const char* name, int flags = O_RDONLY, mode_t mode = 0666); + explicit File( + const std::string& name, int flags = O_RDONLY, mode_t mode = 0666); + explicit File(StringPiece name, int flags = O_RDONLY, mode_t mode = 0666); ~File(); @@ -64,7 +68,7 @@ class File { * Returns 'true' iff the file was successfully opened. */ explicit operator bool() const { - return fd_ >= 0; + return fd_ != -1; } /** @@ -85,9 +89,10 @@ class File { bool closeNoThrow(); /** - * Releases the file descriptor; no longer owned by this File. + * Returns and releases the file descriptor; no longer owned by this File. + * Returns -1 if the File object didn't wrap a file. */ - void release(); + int release() noexcept; /** * Swap this File with another. @@ -95,7 +100,7 @@ class File { void swap(File& other); // movable - File(File&&); + File(File&&) noexcept; File& operator=(File&&); // FLOCK (INTERPROCESS) LOCKS @@ -130,5 +135,3 @@ void swap(File& a, File& b); } // namespace folly - -#endif /* FOLLY_FILE_H_ */