From e9ed4ddcd7c51b4b22d1bc909c566b4467c2a3d4 Mon Sep 17 00:00:00 2001 From: amichelo <andrea.michelotti@lnf.infn.it> Date: Wed, 15 Nov 2017 12:27:01 +0100 Subject: [PATCH] fixed compilation errors introduced by last merge --- CMakeLists.txt | 2 +- ChaosWANProxy/api/AbstractApi.cpp | 6 +- chaos/common/data/CDataWrapper.cpp | 282 +++++++++++++++-------------- chaos/common/data/CDataWrapper.h | 5 +- chaosframework.files | 53 ++++++ chaosframework.includes | 1 + 6 files changed, 205 insertions(+), 144 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 58b9e5657..b5a3b88b0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -86,7 +86,7 @@ ENDIF() SET( ${PROJECT_NAME}_MAJOR_VERSION 0 ) SET( ${PROJECT_NAME}_MINOR_VERSION 1 ) SET( ${PROJECT_NAME}_PATCH_LEVEL 0 ) - +# ADD_DEFINITIONS(-Wno-ignored-attributes) INCLUDE_DIRECTORIES(. ../ ../../ ${CMAKE_INSTALL_PREFIX}/include) LINK_DIRECTORIES(${CMAKE_INSTALL_PREFIX}/lib) diff --git a/ChaosWANProxy/api/AbstractApi.cpp b/ChaosWANProxy/api/AbstractApi.cpp index 03b2caf7b..d69d9a41e 100644 --- a/ChaosWANProxy/api/AbstractApi.cpp +++ b/ChaosWANProxy/api/AbstractApi.cpp @@ -20,7 +20,7 @@ */ #include "AbstractApi.h" #include <boost/lexical_cast.hpp> -#include <chaos/common/bson/util/base64.h> +#include <chaos/common/additional_lib/base64.h> using namespace chaos::wan_proxy::api; AbstractApi::AbstractApi(const std::string& name, @@ -48,7 +48,7 @@ int AbstractApi::setValueFromString(chaos::common::data::CDataWrapper& dataset, dataset.addStringValue(attribute_name.c_str(), value); }else if(type.compare("binary") == 0) { - std::string decoded_binary = bson::base64::decode(value); + std::string decoded_binary = base64_decode(value); dataset.addBinaryValue(attribute_name.c_str(), decoded_binary.c_str(), (uint32_t)decoded_binary.size()); @@ -59,4 +59,4 @@ int AbstractApi::setValueFromString(chaos::common::data::CDataWrapper& dataset, return -1; } return err; -} \ No newline at end of file +} diff --git a/chaos/common/data/CDataWrapper.cpp b/chaos/common/data/CDataWrapper.cpp index 67694eb2e..63543c888 100644 --- a/chaos/common/data/CDataWrapper.cpp +++ b/chaos/common/data/CDataWrapper.cpp @@ -36,36 +36,36 @@ using namespace chaos::common::data; #define ACCESS_BSON(x) static_cast<bson_t*>(x.get()) #define ENSURE_ARRAY(x) \ -if(x.get() == NULL) {array_index = 0; x = ALLOCATE_BSONT(bson_new());} + if(x.get() == NULL) {array_index = 0; x = ALLOCATE_BSONT(bson_new());} #define FIND_AND_CHECK(k,c)\ -bson_iter_t element_found;\ -bson_iter_init(&element_found, ACCESS_BSON(bson));\ -if(bson_iter_find_case(&element_found, key.c_str()) && c(&element_found)) + bson_iter_t element_found;\ + bson_iter_init(&element_found, ACCESS_BSON(bson));\ + if(bson_iter_find_case(&element_found, key.c_str()) && c(&element_found)) static void bsonDeallocator(bson_t* bson) {if(bson){bson_destroy(bson);}} #pragma mark CDataWrapper CDataWrapper::CDataWrapper(): -bson(ALLOCATE_BSONT(bson_new())), -array_index(0){ + bson(ALLOCATE_BSONT(bson_new())), + array_index(0){ CHAOS_ASSERT(bson); } CDataWrapper::CDataWrapper(const bson_t *copy_bson): -bson(ALLOCATE_BSONT(bson_copy(copy_bson))), -array_index(0){} + bson(ALLOCATE_BSONT(bson_copy(copy_bson))), + array_index(0){} CDataWrapper::CDataWrapper(const char* mem_ser, uint32_t mem_size): -bson(ALLOCATE_BSONT(bson_new_from_data((const uint8_t*)mem_ser, - mem_size))), -array_index(0){ + bson(ALLOCATE_BSONT(bson_new_from_data((const uint8_t*)mem_ser, + mem_size))), + array_index(0){ CHAOS_ASSERT(bson); } CDataWrapper::CDataWrapper(const char* mem_ser): -array_index(0) { + array_index(0) { uint32_t size = BSON_UINT32_FROM_LE(*reinterpret_cast<const uint32_t *>(mem_ser)); bson = ALLOCATE_BSONT(bson_new_from_data((const uint8_t*)mem_ser, size)); @@ -73,7 +73,7 @@ array_index(0) { } CDataWrapper::CDataWrapper(const std::string& json_document): -array_index(0) { + array_index(0) { bson_error_t err; bson = ALLOCATE_BSONT(bson_new_from_json((const uint8_t*)json_document.c_str(), json_document.size(), @@ -370,30 +370,30 @@ void CDataWrapper::addVariantValue(const std::string& key, const CDataVariant& variant_value) { //create variant using the typed data switch (variant_value.getType()) { - case DataType::TYPE_BOOLEAN: - addBoolValue(key, variant_value.asBool()); - break; - case DataType::TYPE_INT32: - addInt32Value(key, variant_value.asInt32()); - break; - case DataType::TYPE_INT64: - addInt64Value(key, variant_value.asInt64()); - break; - case DataType::TYPE_DOUBLE: - addDoubleValue(key, variant_value.asDouble()); - break; - case DataType::TYPE_CLUSTER:{ - addJsonValue(key,variant_value.asString()); - break; - } - case DataType::TYPE_STRING: - addStringValue(key, variant_value.asString()); - break; - case DataType::TYPE_BYTEARRAY: - addBinaryValue(key, - variant_value.asCDataBuffer()->getBuffer(), - variant_value.asCDataBuffer()->getBufferSize()); - break; + case DataType::TYPE_BOOLEAN: + addBoolValue(key, variant_value.asBool()); + break; + case DataType::TYPE_INT32: + addInt32Value(key, variant_value.asInt32()); + break; + case DataType::TYPE_INT64: + addInt64Value(key, variant_value.asInt64()); + break; + case DataType::TYPE_DOUBLE: + addDoubleValue(key, variant_value.asDouble()); + break; + case DataType::TYPE_CLUSTER:{ + addJsonValue(key,variant_value.asString()); + break; + } + case DataType::TYPE_STRING: + addStringValue(key, variant_value.asString()); + break; + case DataType::TYPE_BYTEARRAY: + addBinaryValue(key, + variant_value.asCDataBuffer()->getBuffer(), + variant_value.asCDataBuffer()->getBufferSize()); + break; } } @@ -457,30 +457,30 @@ uint32_t CDataWrapper::getValueSize(const std::string& key) const{ if(bson_iter_find_case(&it, key.c_str()) == false) return 0; const bson_value_t *v = bson_iter_value(&it); switch(v->value_type) { - case BSON_TYPE_INT64: - return sizeof(int64_t); - case BSON_TYPE_INT32: - return sizeof(int32_t); - case BSON_TYPE_BOOL: - return sizeof(bool); - case BSON_TYPE_DOUBLE: - return sizeof(double); - case BSON_TYPE_UTF8: - return v->value.v_utf8.len; - case BSON_TYPE_BINARY: - return v->value.v_binary.data_len; - case BSON_TYPE_ARRAY:{ - uint32_t array_len = 0; - const uint8_t *array = NULL; - bson_iter_array(&it, &array_len, &array); - return array_len; - } - case BSON_TYPE_DOCUMENT:{ - return v->value.v_doc.data_len; - } - default: - return 0; - break; + case BSON_TYPE_INT64: + return sizeof(int64_t); + case BSON_TYPE_INT32: + return sizeof(int32_t); + case BSON_TYPE_BOOL: + return sizeof(bool); + case BSON_TYPE_DOUBLE: + return sizeof(double); + case BSON_TYPE_UTF8: + return v->value.v_utf8.len; + case BSON_TYPE_BINARY: + return v->value.v_binary.data_len; + case BSON_TYPE_ARRAY:{ + uint32_t array_len = 0; + const uint8_t *array = NULL; + bson_iter_array(&it, &array_len, &array); + return array_len; + } + case BSON_TYPE_DOCUMENT:{ + return v->value.v_doc.data_len; + } + default: + return 0; + break; } return 0; } @@ -492,30 +492,30 @@ const char * CDataWrapper::getRawValuePtr(const std::string& key) const{ if(bson_iter_find_case(&it, key.c_str()) == false) return 0; const bson_value_t *v = bson_iter_value(&it); switch(v->value_type) { - case BSON_TYPE_INT64: - return reinterpret_cast<const char*>(&v->value.v_int64); - case BSON_TYPE_INT32: - return reinterpret_cast<const char*>(&v->value.v_int32); - case BSON_TYPE_BOOL: - return reinterpret_cast<const char*>(&v->value.v_bool); - case BSON_TYPE_DOUBLE: - return reinterpret_cast<const char*>(&v->value.v_double); - case BSON_TYPE_UTF8: - return static_cast<const char*>(v->value.v_utf8.str); - case BSON_TYPE_BINARY: - return reinterpret_cast<const char*>(v->value.v_binary.data); - case BSON_TYPE_ARRAY:{ - uint32_t array_len = 0; - const uint8_t *array = NULL; - bson_iter_array(&it, &array_len, &array); - return reinterpret_cast<const char*>(array); - } - case BSON_TYPE_DOCUMENT:{ - return reinterpret_cast<const char*>(v->value.v_doc.data); - } - default: - return NULL; - break; + case BSON_TYPE_INT64: + return reinterpret_cast<const char*>(&v->value.v_int64); + case BSON_TYPE_INT32: + return reinterpret_cast<const char*>(&v->value.v_int32); + case BSON_TYPE_BOOL: + return reinterpret_cast<const char*>(&v->value.v_bool); + case BSON_TYPE_DOUBLE: + return reinterpret_cast<const char*>(&v->value.v_double); + case BSON_TYPE_UTF8: + return static_cast<const char*>(v->value.v_utf8.str); + case BSON_TYPE_BINARY: + return reinterpret_cast<const char*>(v->value.v_binary.data); + case BSON_TYPE_ARRAY:{ + uint32_t array_len = 0; + const uint8_t *array = NULL; + bson_iter_array(&it, &array_len, &array); + return reinterpret_cast<const char*>(array); + } + case BSON_TYPE_DOCUMENT:{ + return reinterpret_cast<const char*>(v->value.v_doc.data); + } + default: + return NULL; + break; } } @@ -678,27 +678,27 @@ CDataVariant CDataWrapper::getVariantValue(const std::string& key) const{ //create variant using the typed data switch (getValueType(key)) { - case CDataWrapperTypeBool: - return CDataVariant(getBoolValue(key)); - break; - case CDataWrapperTypeInt32: - return CDataVariant(getInt32Value(key)); - break; - case CDataWrapperTypeInt64: - return CDataVariant(getInt64Value(key)); - break; - case CDataWrapperTypeDouble: - return CDataVariant(getDoubleValue(key)); - break; - case CDataWrapperTypeString: - return CDataVariant(getStringValue(key)); - break; - case CDataWrapperTypeBinary: - return CDataVariant(getBinaryValueAsCDataBuffer(key).release()); - break; - default: - return CDataVariant(); - break; + case CDataWrapperTypeBool: + return CDataVariant(getBoolValue(key)); + break; + case CDataWrapperTypeInt32: + return CDataVariant(getInt32Value(key)); + break; + case CDataWrapperTypeInt64: + return CDataVariant(getInt64Value(key)); + break; + case CDataWrapperTypeDouble: + return CDataVariant(getDoubleValue(key)); + break; + case CDataWrapperTypeString: + return CDataVariant(getStringValue(key)); + break; + case CDataWrapperTypeBinary: + return CDataVariant(getBinaryValueAsCDataBuffer(key).release()); + break; + default: + return CDataVariant(); + break; } } @@ -791,36 +791,36 @@ CDataWrapperType CDataWrapper::getValueType(const std::string& key) const{ bson_iter_init(&it, ACCESS_BSON(bson)); if(bson_iter_find_case(&it, key.c_str()) == false) return result; switch(bson_iter_type(&it)) { - case BSON_TYPE_ARRAY: - result = CDataWrapperTypeVector; - break; - case BSON_TYPE_DOCUMENT: - result = CDataWrapperTypeObject; - break; - case BSON_TYPE_BINARY: - result = CDataWrapperTypeBinary; - break; - case BSON_TYPE_UTF8: - result = CDataWrapperTypeString; - break; - case BSON_TYPE_DOUBLE: - result = CDataWrapperTypeDouble; - break; - case BSON_TYPE_INT32: - result = CDataWrapperTypeInt32; - break; - case BSON_TYPE_INT64: - result = CDataWrapperTypeInt64; - break; - case BSON_TYPE_BOOL: - result = CDataWrapperTypeBool; - break; - case BSON_TYPE_NULL: - result = CDataWrapperTypeNULL; - break; - default: - break; - + case BSON_TYPE_ARRAY: + result = CDataWrapperTypeVector; + break; + case BSON_TYPE_DOCUMENT: + result = CDataWrapperTypeObject; + break; + case BSON_TYPE_BINARY: + result = CDataWrapperTypeBinary; + break; + case BSON_TYPE_UTF8: + result = CDataWrapperTypeString; + break; + case BSON_TYPE_DOUBLE: + result = CDataWrapperTypeDouble; + break; + case BSON_TYPE_INT32: + result = CDataWrapperTypeInt32; + break; + case BSON_TYPE_INT64: + result = CDataWrapperTypeInt64; + break; + case BSON_TYPE_BOOL: + result = CDataWrapperTypeBool; + break; + case BSON_TYPE_NULL: + result = CDataWrapperTypeNULL; + break; + default: + break; + } return result; } @@ -832,11 +832,11 @@ bool CDataWrapper::isEmpty() const { #pragma mark CMultiTypeDataArrayWrapper CMultiTypeDataArrayWrapper::CMultiTypeDataArrayWrapper(const ChaosBsonShrdPtr& _document_shrd_ptr, const std::string& key): -document_shrd_ptr(_document_shrd_ptr) { + document_shrd_ptr(_document_shrd_ptr) { bson_iter_t element_found; bson_iter_init(&element_found, ACCESS_BSON(_document_shrd_ptr)); if(bson_iter_find_case(&element_found, key.c_str())&& - BSON_ITER_HOLDS_ARRAY(&element_found)) { + BSON_ITER_HOLDS_ARRAY(&element_found)) { uint32_t array_len; const uint8_t *array; bson_iter_array(&element_found, @@ -865,6 +865,12 @@ CMultiTypeDataArrayWrapper::~CMultiTypeDataArrayWrapper() { } } +std::string CMultiTypeDataArrayWrapper::getJSONString() { + size_t str_size; + char * str_c = bson_as_extended_json(static_cast<const bson_t*>(&array_doc),&str_size); + return std::string(str_c,str_size); +} + string CMultiTypeDataArrayWrapper::getStringElementAtIndex(const int pos) const{ CHAOS_ASSERT(values[pos].value_type == BSON_TYPE_UTF8); return std::string(values[pos].value.v_utf8.str, values[pos].value.v_utf8.len); diff --git a/chaos/common/data/CDataWrapper.h b/chaos/common/data/CDataWrapper.h index a91b0a5e2..fb1f27390 100644 --- a/chaos/common/data/CDataWrapper.h +++ b/chaos/common/data/CDataWrapper.h @@ -20,7 +20,7 @@ #ifndef CDataWrapper_H #define CDataWrapper_H -#pragma GCC diagnostic ignored "-Wignored-attributes" +//#pragma GCC diagnostic ignored "-Wignored-attributes" #include <chaos/common/bson/bson.h> #include <chaos/common/chaos_types.h> @@ -366,7 +366,8 @@ namespace chaos { int32_t getInt32ElementAtIndex(const int) const; int64_t getint64ElementAtIndex(const int) const; CDataWrapper* getCDataWrapperElementAtIndex(const int) const; - + std::string getJSONString() ; + bool isStringElementAtIndex(const int) const; bool isDoubleElementAtIndex(const int) const; bool isInt32ElementAtIndex(const int) const; diff --git a/chaosframework.files b/chaosframework.files index d86e2f582..34be4e98b 100644 --- a/chaosframework.files +++ b/chaosframework.files @@ -799,6 +799,7 @@ chaos/common/action/DomainActions.cpp chaos/common/action/DomainActions.h chaos/common/action/EventAction.cpp chaos/common/action/EventAction.h +chaos/common/additional_lib/base64.h chaos/common/additional_lib/mongoose.c chaos/common/additional_lib/mongoose.h chaos/common/additional_lib/sqlite3.c @@ -1832,6 +1833,58 @@ chaos_micro_unit_toolkit/data/DataPack.cpp chaos_micro_unit_toolkit/data/DataPack.h chaos_micro_unit_toolkit/external_lib/base64.cpp chaos_micro_unit_toolkit/external_lib/base64.h +chaos_micro_unit_toolkit/external_lib/bson/bson/b64_ntop.h +chaos_micro_unit_toolkit/external_lib/bson/bson/b64_pton.h +chaos_micro_unit_toolkit/external_lib/bson/bson/bcon.c +chaos_micro_unit_toolkit/external_lib/bson/bson/bcon.h +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-atomic.c +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-atomic.h +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-clock.c +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-clock.h +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-compat.h +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-config.h +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-context-private.h +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-context.c +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-context.h +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-decimal128.c +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-decimal128.h +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-endian.h +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-error.c +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-error.h +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-iso8601-private.h +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-iso8601.c +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-iter.c +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-iter.h +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-json.c +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-json.h +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-keys.c +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-keys.h +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-macros.h +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-md5.c +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-md5.h +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-memory.c +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-memory.h +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-oid.c +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-oid.h +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-private.h +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-reader.c +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-reader.h +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-stdint-win32.h +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-stdint.h +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-string.c +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-string.h +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-thread-private.h +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-timegm-private.h +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-timegm.c +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-types.h +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-utf8.c +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-utf8.h +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-value.c +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-value.h +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-writer.c +chaos_micro_unit_toolkit/external_lib/bson/bson/bson-writer.h +chaos_micro_unit_toolkit/external_lib/bson/bson/bson.c +chaos_micro_unit_toolkit/external_lib/bson/bson/bson.h chaos_micro_unit_toolkit/external_lib/json.h chaos_micro_unit_toolkit/external_lib/jsoncpp.cpp chaos_micro_unit_toolkit/external_lib/mongoose.c diff --git a/chaosframework.includes b/chaosframework.includes index 334eeb178..da630ff0f 100644 --- a/chaosframework.includes +++ b/chaosframework.includes @@ -585,3 +585,4 @@ usr/local/tutorials/proof usr/local/tutorials/quadp usr/local/tutorials/roostats usr/local/tutorials/tree +chaos_micro_unit_toolkit/external_lib/bson/bson -- GitLab