HDFS-10705: libhdfs++: FileSystem should have a convenience no-args ctor. Contributed by James Clampffer.
This commit is contained in:
parent
4f6cb5d1a1
commit
9d1c902159
|
@ -155,18 +155,25 @@ class FileSystem {
|
||||||
* initializes the RPC connections to the NameNode and returns an
|
* initializes the RPC connections to the NameNode and returns an
|
||||||
* FileSystem object.
|
* FileSystem object.
|
||||||
*
|
*
|
||||||
|
* Note: The FileSystem takes ownership of the IoService passed in the
|
||||||
|
* constructor. The FileSystem destructor will call delete on it.
|
||||||
|
*
|
||||||
* If user_name is blank, the current user will be used for a default.
|
* If user_name is blank, the current user will be used for a default.
|
||||||
**/
|
**/
|
||||||
static FileSystem * New(
|
static FileSystem *New(
|
||||||
IoService *&io_service, const std::string &user_name, const Options &options);
|
IoService *&io_service, const std::string &user_name, const Options &options);
|
||||||
|
|
||||||
virtual void Connect(const std::string &server,
|
/**
|
||||||
const std::string &service,
|
* Returns a new instance with default user and option, with the default IOService.
|
||||||
|
**/
|
||||||
|
static FileSystem *New();
|
||||||
|
|
||||||
|
|
||||||
|
virtual void Connect(const std::string &server, const std::string &service,
|
||||||
const std::function<void(const Status &, FileSystem *)> &handler) = 0;
|
const std::function<void(const Status &, FileSystem *)> &handler) = 0;
|
||||||
|
|
||||||
/* Synchronous call of Connect */
|
/* Synchronous call of Connect */
|
||||||
virtual Status Connect(const std::string &server,
|
virtual Status Connect(const std::string &server, const std::string &service) = 0;
|
||||||
const std::string &service) = 0;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -40,6 +40,9 @@ using ::asio::ip::tcp;
|
||||||
|
|
||||||
static constexpr uint16_t kDefaultPort = 8020;
|
static constexpr uint16_t kDefaultPort = 8020;
|
||||||
|
|
||||||
|
// forward declarations
|
||||||
|
const std::string get_effective_user_name(const std::string &);
|
||||||
|
|
||||||
uint32_t FileSystem::GetDefaultFindMaxDepth() {
|
uint32_t FileSystem::GetDefaultFindMaxDepth() {
|
||||||
return std::numeric_limits<uint32_t>::max();
|
return std::numeric_limits<uint32_t>::max();
|
||||||
}
|
}
|
||||||
|
@ -72,11 +75,21 @@ Status FileSystem::CheckValidReplication(uint16_t replication) {
|
||||||
* FILESYSTEM BASE CLASS
|
* FILESYSTEM BASE CLASS
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
FileSystem * FileSystem::New(
|
FileSystem *FileSystem::New(
|
||||||
IoService *&io_service, const std::string &user_name, const Options &options) {
|
IoService *&io_service, const std::string &user_name, const Options &options) {
|
||||||
return new FileSystemImpl(io_service, user_name, options);
|
return new FileSystemImpl(io_service, user_name, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FileSystem *FileSystem::New() {
|
||||||
|
// No, this pointer won't be leaked. The FileSystem takes ownership.
|
||||||
|
IoService *io_service = IoService::New();
|
||||||
|
if(!io_service)
|
||||||
|
return nullptr;
|
||||||
|
std::string user_name = get_effective_user_name("");
|
||||||
|
Options options;
|
||||||
|
return new FileSystemImpl(io_service, user_name, options);
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* FILESYSTEM IMPLEMENTATION
|
* FILESYSTEM IMPLEMENTATION
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
Loading…
Reference in New Issue