6 #include <boost/thread/mutex.hpp>
13 #include "gpudb/Avro.hpp"
21 class GPUdb :
private boost::noncopyable
44 avro::ExecutorPtr executor;
49 static inline std::string
getApiVersion() {
return GPUdb::API_VERSION; }
51 GPUdb(
const std::string& url,
const Options& options = Options());
52 GPUdb(
const std::vector<std::string>& urls,
const Options& options = Options());
53 std::string
getUrl()
const;
60 template<
typename TRequest,
typename TResponse> TResponse&
submitRequest(
const std::string& endpoint,
const TRequest& request, TResponse& response,
const bool enableCompression =
false)
const
62 std::vector<uint8_t> requestBytes;
63 avro::encode(requestBytes, request);
65 submitRequestRaw(endpoint, requestBytes, gpudbResponse, enableCompression);
66 avro::decode(response, gpudbResponse.
data);
72 void addKnownType(
const std::string& typeId,
const avro::DecoderPtr& decoder);
79 template<
typename T>
void addKnownType(
const std::string& typeId,
const std::string& schemaString)
81 addKnownType(typeId, avro::createDecoder<T>(schemaString));
84 template<
typename T>
void addKnownType(
const std::string& typeId, const ::avro::ValidSchema& schema)
107 static const std::string API_VERSION;
112 struct ConnectionToken
114 ConnectionToken(
const std::string& url);
115 bool operator == (
const ConnectionToken &rhs)
const;
116 bool operator != (
const ConnectionToken &rhs)
const;
128 struct ConnectionTokenManager
133 void initialize(
const std::vector<ConnectionToken>& tokens);
138 ConnectionToken getCurrentToken()
const;
145 ConnectionToken getNextToken();
148 std::size_t currentIndex;
149 std::vector<ConnectionToken> tokens;
150 mutable boost::mutex tokensMutex;
153 void initializeConnectionTokens(
154 const std::vector<std::string>& urls);
157 mutable ConnectionTokenManager tokenManager;
159 std::string username;
160 std::string password;
161 std::string authorization;
164 avro::ExecutorPtr executor;
165 mutable std::map<std::string, avro::DecoderPtr> knownTypes;
166 mutable boost::mutex knownTypesMutex;
168 void submitRequestRaw(
const std::string& endpoint,
const std::vector<uint8_t>& request, GpudbResponse& response,
const bool enableCompression)
const;
169 avro::DecoderPtr getDecoder(
const std::string& typeId)
const;
170 void setDecoderIfMissing(
const std::string& typeId,
const std::string& label,
const std::string& schemaString,
const std::map<std::string, std::vector<std::string> >& properties)
const;
void addKnownType(const std::string &typeId, const avro::DecoderPtr &decoder)
void addKnownTypeFromTable(const std::string &tableName, const ::avro::ValidSchema &schema)
void addKnownType(const std::string &typeId)
void addKnownTypeFromTable(const std::string &tableName)
avro::ExecutorPtr getExecutor() const
std::string getUsername() const
std::string getPassword() const
Options & setUsername(const std::string &value)
GPUdb(const std::string &url, const Options &options=Options())
size_t getThreadCount() const
A set of output parameters forendpoint /gpudbresponse}.
void addKnownTypeFromTable(const std::string &tableName, const avro::DecoderPtr &decoder)
TResponse & submitRequest(const std::string &endpoint, const TRequest &request, TResponse &response, const bool enableCompression=false) const
void addKnownType(const std::string &typeId, const ::avro::ValidSchema &schema)
size_t getThreadCount() const
std::string getPassword() const
static std::string getApiVersion()
Options & setExecutor(const avro::ExecutorPtr value)
std::string getUsername() const
static const int64_t END_OF_SET
avro::ExecutorPtr getExecutor() const
Options & setThreadCount(const size_t value)
void addKnownTypeFromTable(const std::string &tableName, const std::string &schemaString)
bool getUseSnappy() const
std::string getUrl() const
Options & setUseSnappy(const bool value)
Options & setPassword(const std::string &value)
void addKnownType(const std::string &typeId, const std::string &schemaString)
bool getUseSnappy() const
std::vector< uint8_t > data