rocksdb/thrift/lib/cpp/transport/HDFS.h

62 lines
1.3 KiB
C
Raw Normal View History

// Copyright (c) 2009- Facebook
// Distributed under the Thrift Software License
//
// See accompanying file LICENSE or visit the Thrift site at:
// http://developers.facebook.com/thrift/
#ifndef _THRIFT_TRANSPORT_HDFS_H
#define _THRIFT_TRANSPORT_HDFS_H
#include <string>
#include <boost/shared_ptr.hpp>
/**
* Dead-simple wrappers around hdfs and hdfsFile descriptors.
* The wrappers take responsibility of descriptor allocation/release in ctor/dtor.
*
* @author Li Zhang <lzhang@facebook.com>
*/
class HDFS {
public:
HDFS();
HDFS(const std::string& host, uint16_t port);
bool disconnect();
~HDFS();
void* getHandle() const {
return hdfs_;
}
bool isConnected() const {
return hdfs_ != NULL;
}
protected:
void* hdfs_;
};
class HDFSFile {
public:
enum AccessPolicy {
OPEN_FOR_READ = 0,
CREATE_FOR_WRITE = 1,
OPEN_FOR_APPEND = 2,
};
HDFSFile(boost::shared_ptr<HDFS> hdfs, const std::string& path, AccessPolicy ap,
int bufferSize = 0, short replication = 0, int32_t blocksize = 0);
bool close();
void* getHandle() const {
return file_;
}
boost::shared_ptr<HDFS> getFS() const {
return hdfs_;
}
bool isOpen() const {
return file_ != NULL;
}
~HDFSFile();
protected:
boost::shared_ptr<HDFS> hdfs_;
void* file_;
};
#endif