diff options
author | Parth Chandra <parthc@apache.org> | 2017-06-07 11:09:10 -0700 |
---|---|---|
committer | Parth Chandra <parthc@apache.org> | 2017-10-11 19:27:47 -0700 |
commit | ac3f0ce2683906db908d861e3f93700d8ac0f6d6 (patch) | |
tree | a4cdb95451c761021fb0b9b8a8384d485376fcb6 /contrib/native/client/src/clientlib | |
parent | a62f96d944c7bb63d2bfdaec10ff571153b071c9 (diff) |
DRILL-5431: SSL Support (C++) - Refactoring of C++ client.
Move classes out of drillclient to their own files
Fix build on MacOS to suppress warnings from boost code
Refactoring of user properties to use a map
Diffstat (limited to 'contrib/native/client/src/clientlib')
10 files changed, 278 insertions, 188 deletions
diff --git a/contrib/native/client/src/clientlib/CMakeLists.txt b/contrib/native/client/src/clientlib/CMakeLists.txt index 343bb4d8c..6124fc898 100644 --- a/contrib/native/client/src/clientlib/CMakeLists.txt +++ b/contrib/native/client/src/clientlib/CMakeLists.txt @@ -20,14 +20,17 @@ set (CLIENTLIB_SRC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/decimalUtils.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/drillConfig.cpp ${CMAKE_CURRENT_SOURCE_DIR}/drillClient.cpp ${CMAKE_CURRENT_SOURCE_DIR}/drillClientImpl.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/drillError.cpp ${CMAKE_CURRENT_SOURCE_DIR}/fieldmeta.cpp ${CMAKE_CURRENT_SOURCE_DIR}/metadata.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/recordBatch.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/rpcMessage.cpp ${CMAKE_CURRENT_SOURCE_DIR}/errmsgs.cpp ${CMAKE_CURRENT_SOURCE_DIR}/logger.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/recordBatch.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/rpcMessage.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/userProperties.cpp ${CMAKE_CURRENT_SOURCE_DIR}/utils.cpp ${CMAKE_CURRENT_SOURCE_DIR}/saslAuthenticatorImpl.cpp ${CMAKE_CURRENT_SOURCE_DIR}/zookeeperClient.cpp) diff --git a/contrib/native/client/src/clientlib/drillClient.cpp b/contrib/native/client/src/clientlib/drillClient.cpp index 8eb909b49..429a17886 100644 --- a/contrib/native/client/src/clientlib/drillClient.cpp +++ b/contrib/native/client/src/clientlib/drillClient.cpp @@ -17,25 +17,19 @@ */ #include <stdlib.h> -#include <boost/assign.hpp> #include "drill/common.hpp" #include "drill/drillClient.hpp" #include "drill/fieldmeta.hpp" #include "drill/recordBatch.hpp" +#include "drill/userProperties.hpp" #include "drillClientImpl.hpp" +#include "env.h" #include "errmsgs.hpp" #include "logger.hpp" #include "Types.pb.h" namespace Drill{ -DrillClientError* DrillClientError::getErrorObject(const exec::shared::DrillPBError& e){ - std::string s=Drill::getMessage(ERR_QRY_FAILURE, e.message().c_str()); - DrillClientError* err=NULL; - err=new DrillClientError(QRY_FAILURE, QRY_ERROR_START+QRY_FAILURE, s); - return err; -} - DrillClientInitializer::DrillClientInitializer(){ GOOGLE_PROTOBUF_VERIFY_VERSION; srand(time(NULL)); @@ -45,151 +39,6 @@ DrillClientInitializer::~DrillClientInitializer(){ google::protobuf::ShutdownProtobufLibrary(); } -// Initialize static member of DrillClientConfig -logLevel_t DrillClientConfig::s_logLevel=LOG_ERROR; -const char* DrillClientConfig::s_saslPluginPath = NULL; -uint64_t DrillClientConfig::s_bufferLimit=MAX_MEM_ALLOC_SIZE; -int32_t DrillClientConfig::s_socketTimeout=0; -int32_t DrillClientConfig::s_handshakeTimeout=5; -int32_t DrillClientConfig::s_queryTimeout=180; -int32_t DrillClientConfig::s_heartbeatFrequency=15; // 15 seconds -std::string DrillClientConfig::s_clientName(DRILL_CONNECTOR_NAME); -std::string DrillClientConfig::s_applicationName; - -boost::mutex DrillClientConfig::s_mutex; - -DrillClientConfig::DrillClientConfig(){ - // Do not initialize logging. The Logger object is static and may - // not have been initialized yet - //initLogging(NULL); -} - -DrillClientConfig::~DrillClientConfig(){ -} - -void DrillClientConfig::initLogging(const char* path){ - getLogger().init(path); -} - -void DrillClientConfig::setLogLevel(logLevel_t l){ - boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); - s_logLevel=l; - getLogger().m_level=l; - //boost::log::core::get()->set_filter(boost::log::trivial::severity >= s_logLevel); -} - -void DrillClientConfig::setSaslPluginPath(const char *path){ - boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); - s_saslPluginPath = path; -} - -const char* DrillClientConfig::getSaslPluginPath(){ - boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); - return s_saslPluginPath; -} - -void DrillClientConfig::setBufferLimit(uint64_t l){ - boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); - s_bufferLimit=l; -} - -uint64_t DrillClientConfig::getBufferLimit(){ - boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); - return s_bufferLimit; -} - -void DrillClientConfig::setSocketTimeout(int32_t t){ - boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); - s_socketTimeout=t; -} - -void DrillClientConfig::setHandshakeTimeout(int32_t t){ - if (t > 0) { - boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); - s_handshakeTimeout = t; - } -} - -void DrillClientConfig::setQueryTimeout(int32_t t){ - if (t>0){ - boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); - s_queryTimeout=t; - } -} - -void DrillClientConfig::setHeartbeatFrequency(int32_t t){ - if (t>=0){ - boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); - s_heartbeatFrequency=t; - } -} - -int32_t DrillClientConfig::getSocketTimeout(){ - boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); - return s_socketTimeout; -} - -int32_t DrillClientConfig::getHandshakeTimeout(){ - boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); - return s_handshakeTimeout; -} - -int32_t DrillClientConfig::getQueryTimeout(){ - boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); - return s_queryTimeout; -} - -int32_t DrillClientConfig::getHeartbeatFrequency(){ - boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); - return s_heartbeatFrequency; -} - -logLevel_t DrillClientConfig::getLogLevel(){ - boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); - return s_logLevel; -} - -const std::string& DrillClientConfig::getClientName() { - boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); - return s_clientName; -} - -void DrillClientConfig::setClientName(const std::string& name) { - boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); - s_clientName = name; -} - -const std::string& DrillClientConfig::getApplicationName() { - boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); - return s_applicationName; -} - -void DrillClientConfig::setApplicationName(const std::string& name) { - boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); - s_applicationName = name; -} - -//Using boost assign to initialize maps. -const std::map<std::string, uint32_t> DrillUserProperties::USER_PROPERTIES=boost::assign::map_list_of - ( USERPROP_USERNAME, USERPROP_FLAGS_SERVERPROP|USERPROP_FLAGS_USERNAME|USERPROP_FLAGS_STRING ) - ( USERPROP_PASSWORD, USERPROP_FLAGS_SERVERPROP|USERPROP_FLAGS_PASSWORD) - ( USERPROP_SCHEMA, USERPROP_FLAGS_SERVERPROP|USERPROP_FLAGS_STRING) - ( USERPROP_IMPERSONATION_TARGET, USERPROP_FLAGS_SERVERPROP|USERPROP_FLAGS_STRING) - ( USERPROP_AUTH_MECHANISM, USERPROP_FLAGS_STRING) - ( USERPROP_SERVICE_NAME, USERPROP_FLAGS_STRING) - ( USERPROP_SERVICE_HOST, USERPROP_FLAGS_STRING) - ( USERPROP_USESSL, USERPROP_FLAGS_BOOLEAN|USERPROP_FLAGS_SSLPROP) - ( USERPROP_FILEPATH, USERPROP_FLAGS_STRING|USERPROP_FLAGS_SSLPROP|USERPROP_FLAGS_FILEPATH) - ( USERPROP_FILENAME, USERPROP_FLAGS_STRING|USERPROP_FLAGS_SSLPROP|USERPROP_FLAGS_FILENAME) - ( USERPROP_SASL_ENCRYPT, USERPROP_FLAGS_STRING) -; - -bool DrillUserProperties::validate(std::string& err){ - bool ret=true; - //We can add additional validation for any params here - return ret; -} - RecordIterator::~RecordIterator(){ if(m_pColDefs!=NULL){ for(std::vector<Drill::FieldMetadata*>::iterator it=m_pColDefs->begin(); diff --git a/contrib/native/client/src/clientlib/drillClientImpl.cpp b/contrib/native/client/src/clientlib/drillClientImpl.cpp index 1ccc29fb4..39ac847c6 100644 --- a/contrib/native/client/src/clientlib/drillClientImpl.cpp +++ b/contrib/native/client/src/clientlib/drillClientImpl.cpp @@ -536,19 +536,9 @@ bool DrillClientImpl::clientNeedsEncryption(const DrillUserProperties* userPrope return needsEncryption; } - // Loop through the property to find USERPROP_SASL_ENCRYPT and it's value - for (size_t i = 0; i < userProperties->size(); i++) { - const std::string key = userProperties->keyAt(i); - std::string value = userProperties->valueAt(i); - - if(USERPROP_SASL_ENCRYPT == key) { - boost::algorithm::to_lower(value); - - if(0 == value.compare("true")) { - needsEncryption = true; - } - } - } + std::string val; + needsEncryption = userProperties->isPropSet(USERPROP_SASL_ENCRYPT) && + boost::iequals(userProperties->getProp(USERPROP_SASL_ENCRYPT, val), "true") ; return needsEncryption; } @@ -581,33 +571,33 @@ connectionStatus_t DrillClientImpl::validateHandshake(DrillUserProperties* prope exec::user::UserProperties* userProperties = u2b.mutable_properties(); std::map<char,int>::iterator it; - for(size_t i=0; i<properties->size(); i++){ - std::map<std::string,uint32_t>::const_iterator it=DrillUserProperties::USER_PROPERTIES.find(properties->keyAt(i)); + for (std::map<std::string,std::string>::const_iterator propIter=properties->begin(); propIter!=properties->end(); ++propIter){ + std::string currKey=propIter->first; + std::string currVal=propIter->second; + std::map<std::string,uint32_t>::const_iterator it=DrillUserProperties::USER_PROPERTIES.find(currKey); if(it==DrillUserProperties::USER_PROPERTIES.end()){ - DRILL_MT_LOG(DRILL_LOG(LOG_INFO) << "Connection property ("<< properties->keyAt(i) + DRILL_MT_LOG(DRILL_LOG(LOG_INFO) << "Connection property ("<< currKey << ") is unknown" << std::endl;) - exec::user::Property* connProp = userProperties->add_properties(); - connProp->set_key(properties->keyAt(i)); - connProp->set_value(properties->valueAt(i)); - + connProp->set_key(currKey); + connProp->set_value(currVal); continue; } if(IS_BITSET((*it).second,USERPROP_FLAGS_SERVERPROP)){ exec::user::Property* connProp = userProperties->add_properties(); - connProp->set_key(properties->keyAt(i)); - connProp->set_value(properties->valueAt(i)); + connProp->set_key(currKey); + connProp->set_value(currVal); //Username(but not the password) also needs to be set in UserCredentials if(IS_BITSET((*it).second,USERPROP_FLAGS_USERNAME)){ exec::shared::UserCredentials* creds = u2b.mutable_credentials(); - username=properties->valueAt(i); + username=currVal; creds->set_user_name(username); //u2b.set_credentials(&creds); } if(IS_BITSET((*it).second,USERPROP_FLAGS_PASSWORD)){ - DRILL_MT_LOG(DRILL_LOG(LOG_INFO) << properties->keyAt(i) << ": ********** " << std::endl;) + DRILL_MT_LOG(DRILL_LOG(LOG_INFO) << currKey << ": ********** " << std::endl;) }else{ - DRILL_MT_LOG(DRILL_LOG(LOG_INFO) << properties->keyAt(i) << ":" << properties->valueAt(i) << std::endl;) + DRILL_MT_LOG(DRILL_LOG(LOG_INFO) << currKey << ":" << currVal << std::endl;) } }// Server properties } @@ -2725,10 +2715,13 @@ connectionStatus_t PooledDrillClientImpl::validateHandshake(DrillUserProperties* // Keep a copy of the user properties if(props!=NULL){ m_pUserProperties = boost::shared_ptr<DrillUserProperties>(new DrillUserProperties); - for(size_t i=0; i<props->size(); i++){ + //for(size_t i=0; i<props->size(); i++){ + for(std::map<std::string, std::string>::const_iterator propIter = props->begin(); propIter != props->end(); ++propIter){ + std::string currKey=propIter->first; + std::string currVal=propIter->second; m_pUserProperties->setProperty( - props->keyAt(i), - props->valueAt(i) + currKey, + currVal ); } } diff --git a/contrib/native/client/src/clientlib/drillClientImpl.hpp b/contrib/native/client/src/clientlib/drillClientImpl.hpp index efa4e6641..dacc2c30a 100644 --- a/contrib/native/client/src/clientlib/drillClientImpl.hpp +++ b/contrib/native/client/src/clientlib/drillClientImpl.hpp @@ -41,8 +41,9 @@ #include <boost/asio/deadline_timer.hpp> #include <boost/function.hpp> #include <boost/thread.hpp> - #include "drill/drillClient.hpp" +#include "drill/drillConfig.hpp" +#include "drill/drillError.hpp" #include "drill/preparedStatement.hpp" #include "collectionsImpl.hpp" #include "metadata.hpp" diff --git a/contrib/native/client/src/clientlib/drillConfig.cpp b/contrib/native/client/src/clientlib/drillConfig.cpp new file mode 100644 index 000000000..abaa79aff --- /dev/null +++ b/contrib/native/client/src/clientlib/drillConfig.cpp @@ -0,0 +1,151 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#include "drill/common.hpp" +#include "drill/drillConfig.hpp" +#include "env.h" +#include "logger.hpp" + +namespace Drill{ + +// Initialize static member of DrillClientConfig +logLevel_t DrillClientConfig::s_logLevel=LOG_ERROR; +uint64_t DrillClientConfig::s_bufferLimit=MAX_MEM_ALLOC_SIZE; +int32_t DrillClientConfig::s_socketTimeout=0; +int32_t DrillClientConfig::s_handshakeTimeout=5; +int32_t DrillClientConfig::s_queryTimeout=180; +int32_t DrillClientConfig::s_heartbeatFrequency=15; // 15 seconds +const char* DrillClientConfig::s_saslPluginPath = NULL; +std::string DrillClientConfig::s_clientName(DRILL_CONNECTOR_NAME); +std::string DrillClientConfig::s_applicationName; + + +boost::mutex DrillClientConfig::s_mutex; + +DrillClientConfig::DrillClientConfig(){ + // Do not initialize logging. The Logger object is static and may + // not have been initialized yet + //initLogging(NULL); +} + +DrillClientConfig::~DrillClientConfig(){ +} + +void DrillClientConfig::initLogging(const char* path){ + getLogger().init(path); +} + +void DrillClientConfig::setLogLevel(logLevel_t l){ + boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); + s_logLevel=l; + getLogger().m_level=l; +} + +void DrillClientConfig::setBufferLimit(uint64_t l){ + boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); + s_bufferLimit=l; +} + +uint64_t DrillClientConfig::getBufferLimit(){ + boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); + return s_bufferLimit; +} + +void DrillClientConfig::setSocketTimeout(int32_t t){ + boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); + s_socketTimeout=t; +} + +void DrillClientConfig::setHandshakeTimeout(int32_t t){ + if (t > 0) { + boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); + s_handshakeTimeout = t; + } +} + +void DrillClientConfig::setQueryTimeout(int32_t t){ + if (t>0){ + boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); + s_queryTimeout=t; + } +} + +void DrillClientConfig::setHeartbeatFrequency(int32_t t){ + if (t>0){ + boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); + s_heartbeatFrequency=t; + } +} + +int32_t DrillClientConfig::getSocketTimeout(){ + boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); + return s_socketTimeout; +} + +int32_t DrillClientConfig::getHandshakeTimeout(){ + boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); + return s_handshakeTimeout; +} + +int32_t DrillClientConfig::getQueryTimeout(){ + boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); + return s_queryTimeout; +} + +int32_t DrillClientConfig::getHeartbeatFrequency(){ + boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); + return s_heartbeatFrequency; +} + +logLevel_t DrillClientConfig::getLogLevel(){ + boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); + return s_logLevel; +} + +void DrillClientConfig::setSaslPluginPath(const char *path){ + boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); + s_saslPluginPath = path; +} + +const char* DrillClientConfig::getSaslPluginPath(){ + boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); + return s_saslPluginPath; +} + +const std::string& DrillClientConfig::getClientName() { + boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); + return s_clientName; +} + +void DrillClientConfig::setClientName(const std::string& name) { + boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); + s_clientName = name; +} + +const std::string& DrillClientConfig::getApplicationName() { + boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); + return s_applicationName; +} + +void DrillClientConfig::setApplicationName(const std::string& name) { + boost::lock_guard<boost::mutex> configLock(DrillClientConfig::s_mutex); + s_applicationName = name; +} + +} // namespace Drill diff --git a/contrib/native/client/src/clientlib/drillError.cpp b/contrib/native/client/src/clientlib/drillError.cpp new file mode 100644 index 000000000..046eb5330 --- /dev/null +++ b/contrib/native/client/src/clientlib/drillError.cpp @@ -0,0 +1,41 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#include "drill/drillError.hpp" +#include "errmsgs.hpp" +#include "logger.hpp" +#include "UserBitShared.pb.h" + +namespace exec{ + namespace shared{ + class DrillPBError; + }; +}; + +namespace Drill{ + +DrillClientError* DrillClientError::getErrorObject(const exec::shared::DrillPBError& e){ + std::string s=Drill::getMessage(ERR_QRY_FAILURE, e.message().c_str()); + DrillClientError* err=NULL; + err=new DrillClientError(QRY_FAILURE, QRY_ERROR_START+QRY_FAILURE, s); + return err; +} + + +} // namespace Drill diff --git a/contrib/native/client/src/clientlib/saslAuthenticatorImpl.cpp b/contrib/native/client/src/clientlib/saslAuthenticatorImpl.cpp index c5dc3aced..78f99b619 100644 --- a/contrib/native/client/src/clientlib/saslAuthenticatorImpl.cpp +++ b/contrib/native/client/src/clientlib/saslAuthenticatorImpl.cpp @@ -20,6 +20,7 @@ #include <algorithm> #include <boost/algorithm/string.hpp> #include <boost/assign.hpp> +#include "drill/userProperties.hpp" #include "saslAuthenticatorImpl.hpp" #include "drillClientImpl.hpp" @@ -123,10 +124,11 @@ int SaslAuthenticatorImpl::init(const std::vector<std::string>& mechanisms, exec std::string authMechanismToUse; std::string serviceName; std::string serviceHost; - for (size_t i = 0; i < m_pUserProperties->size(); i++) { - const std::string key = m_pUserProperties->keyAt(i); - const std::string value = m_pUserProperties->valueAt(i); - + for (std::map<std::string, std::string>::const_iterator it=m_pUserProperties->begin(); + it!=m_pUserProperties->end(); + ++it){ + const std::string key = it->first; + const std::string value = it->second; if (USERPROP_SERVICE_HOST == key) { serviceHost = value; } else if (USERPROP_SERVICE_NAME == key) { diff --git a/contrib/native/client/src/clientlib/userProperties.cpp b/contrib/native/client/src/clientlib/userProperties.cpp new file mode 100644 index 000000000..07497ef55 --- /dev/null +++ b/contrib/native/client/src/clientlib/userProperties.cpp @@ -0,0 +1,44 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <boost/assign.hpp> +#include "drill/userProperties.hpp" + +namespace Drill{ + +//Using boost assign to initialize maps. +const std::map<std::string, uint32_t> DrillUserProperties::USER_PROPERTIES=boost::assign::map_list_of + ( USERPROP_USERNAME, USERPROP_FLAGS_SERVERPROP|USERPROP_FLAGS_USERNAME|USERPROP_FLAGS_STRING ) + ( USERPROP_PASSWORD, USERPROP_FLAGS_SERVERPROP|USERPROP_FLAGS_PASSWORD) + ( USERPROP_SCHEMA, USERPROP_FLAGS_SERVERPROP|USERPROP_FLAGS_STRING) + ( USERPROP_IMPERSONATION_TARGET, USERPROP_FLAGS_SERVERPROP|USERPROP_FLAGS_STRING) + ( USERPROP_AUTH_MECHANISM, USERPROP_FLAGS_STRING) + ( USERPROP_SERVICE_NAME, USERPROP_FLAGS_STRING) + ( USERPROP_SERVICE_HOST, USERPROP_FLAGS_STRING) + ( USERPROP_USESSL, USERPROP_FLAGS_BOOLEAN|USERPROP_FLAGS_SSLPROP) + ( USERPROP_CERTFILEPATH, USERPROP_FLAGS_STRING|USERPROP_FLAGS_SSLPROP|USERPROP_FLAGS_FILEPATH) + ( USERPROP_SASL_ENCRYPT, USERPROP_FLAGS_STRING) +; + +bool DrillUserProperties::validate(std::string& err){ + bool ret=true; + //We can add additional validation for any params here + return ret; +} + +} // namespace Drill diff --git a/contrib/native/client/src/clientlib/utils.cpp b/contrib/native/client/src/clientlib/utils.cpp index 11aa2c272..137be6521 100644 --- a/contrib/native/client/src/clientlib/utils.cpp +++ b/contrib/native/client/src/clientlib/utils.cpp @@ -21,6 +21,7 @@ #include "utils.hpp" #include "logger.hpp" #include "drill/common.hpp" +#include "drill/drillConfig.hpp" #if defined _WIN32 || defined _WIN64 //Windows header files redefine 'max' diff --git a/contrib/native/client/src/clientlib/zookeeperClient.cpp b/contrib/native/client/src/clientlib/zookeeperClient.cpp index 535bebcad..cd2ac0055 100644 --- a/contrib/native/client/src/clientlib/zookeeperClient.cpp +++ b/contrib/native/client/src/clientlib/zookeeperClient.cpp @@ -18,6 +18,7 @@ #include <boost/bind.hpp> #include <drill/drillClient.hpp> +#include <drill/drillConfig.hpp> #include "zookeeperClient.hpp" #include "errmsgs.hpp" @@ -158,6 +159,10 @@ int ZookeeperClient::getEndPoint(const std::string& drillbit, exec::DrillbitEndp drillServiceInstance.ParseFromArray(buffer, buffer_len); endpoint=drillServiceInstance.endpoint(); + if(p_zh!=NULL && m_state==ZOO_CONNECTED_STATE){ + DRILL_LOG(LOG_TRACE) << drillServiceInstance.DebugString() << std::endl; + } + return 0; } |