diff --git a/ChaosMetadataService/object_storage/influxDB/InfluxDB.cpp b/ChaosMetadataService/object_storage/influxDB/InfluxDB.cpp index 9967b6ecf4152e19ee7f9a041c6737c0c6eec9df..4b1b5bc9e4754642bed1823659d95a18936ee2a3 100644 --- a/ChaosMetadataService/object_storage/influxDB/InfluxDB.cpp +++ b/ChaosMetadataService/object_storage/influxDB/InfluxDB.cpp @@ -138,6 +138,8 @@ int InfluxDB::pushObject(const std::string& key, break; case DataType::TYPE_INT32: case DataType::TYPE_INT64: + case DataType::TYPE_UINT64: + measurements << c << *i << "=" << stored_object.getStringValue(*i)<<'i'; nmeas++; first++; diff --git a/TestFramework/data/TestCDataWrapper.cpp b/TestFramework/data/TestCDataWrapper.cpp index 48e6450fe26b3d7521e095afad0ae7ff5cc4379f..08a5a58501270929e32e7566cb20ba820e3774a5 100644 --- a/TestFramework/data/TestCDataWrapper.cpp +++ b/TestFramework/data/TestCDataWrapper.cpp @@ -322,8 +322,8 @@ TEST(CDataWrapperTest, VectorDouble) { TEST(CDataWrapperTest, U64) { CDataWrapper data; - data.append("U64max",numeric_limits<uint64_t>::max()); - data.append("U64min",numeric_limits<uint64_t>::min()); + data.addUInt64Value("U64max",numeric_limits<uint64_t>::max()); + data.addUInt64Value("U64min",numeric_limits<uint64_t>::min()); uint64_t max=data.getUInt64Value("U64max"); uint64_t min=data.getUInt64Value("U64min"); diff --git a/chaos/common/data/CDataVariant.cpp b/chaos/common/data/CDataVariant.cpp index 5c85ebbae8785f31a6aaddced6a2be669c062f88..0deb772b9bacf834f90acceb1dae69b25cba8ae9 100644 --- a/chaos/common/data/CDataVariant.cpp +++ b/chaos/common/data/CDataVariant.cpp @@ -159,7 +159,7 @@ type(DataType::TYPE_INT64), _internal_variant(int64_value) { } CDataVariant::CDataVariant(uint64_t int64_value): -type(DataType::TYPE_INT64), +type(DataType::TYPE_UINT64), _internal_variant(int64_value) { } CDataVariant::CDataVariant(double double_value): @@ -224,6 +224,10 @@ type(_type){ _internal_variant = *static_cast<const int64_t*>(_value_pointer); break; } + case DataType::TYPE_UINT64:{ + _internal_variant = *static_cast<const uint64_t*>(_value_pointer); + break; + } case DataType::TYPE_DOUBLE:{ _internal_variant = *static_cast<const double*>(_value_pointer); break; diff --git a/chaos/common/data/CDataWrapper.cpp b/chaos/common/data/CDataWrapper.cpp index bb0ff470875b66287a2b3e5bbeaaa746c41581b8..f1dddbdd4f81a177fa70260e3d3065f63de5f994 100644 --- a/chaos/common/data/CDataWrapper.cpp +++ b/chaos/common/data/CDataWrapper.cpp @@ -229,7 +229,7 @@ void CDataWrapper::appendInt64ToArray(int64_t value) { } //append a strin gto an open array -void CDataWrapper::appendInt64ToArray(uint64_t value) { +void CDataWrapper::appendUInt64ToArray(uint64_t value) { ENSURE_ARRAY(bson_tmp_array); bson_append_timestamp(ACCESS_BSON(bson_tmp_array), ChaosToString(array_index++).c_str(), @@ -538,9 +538,6 @@ void CDataWrapper::append(const std::string& key,int32_t val){ void CDataWrapper::append(const std::string& key,int64_t val){ addInt64Value(key, val); } -void CDataWrapper::append(const std::string& key,uint64_t val){ - addUInt64Value(key, val); -} void CDataWrapper::append(const std::string& key,double val){ addDoubleValue(key, val); @@ -1337,13 +1334,13 @@ int CDataWrapper::setAsString(const std::string& key,const std::string& sval){ setBson(&it,tmp); } break; - case BSON_TYPE_TIMESTAMP:{ + /* case BSON_TYPE_TIMESTAMP:{ CDataVariant val(sval); uint64_t tmp=val.asUInt64(); setBson(&it,tmp); } - break; + break;*/ case BSON_TYPE_DOUBLE:{ CDataVariant val(sval); @@ -1392,15 +1389,6 @@ int CDataWrapper::setBson( const bson_iter_t *v ,const int64_t& val){ return -1; } -int CDataWrapper::setBson( const bson_iter_t *v ,const uint64_t& val){ - if(ITER_TYPE(v)==BSON_TYPE_TIMESTAMP){ - - memcpy((void*)(v->raw + v->d1), (void*)&val,sizeof(uint64_t)); - return sizeof(int64_t); - } - return -1; -} - int CDataWrapper::setBson(const bson_iter_t *v ,const int32_t& val){ if(ITER_TYPE(v)==BSON_TYPE_INT32){ memcpy((void*)(v->raw + v->d1),(void*)&val ,sizeof(int32_t)); diff --git a/chaos/common/data/CDataWrapper.h b/chaos/common/data/CDataWrapper.h index e892abaa7ba7a27d05012ac11b90c617222a3853..766c9e228f8995ee1b8b790cfc46d004ca795a66 100644 --- a/chaos/common/data/CDataWrapper.h +++ b/chaos/common/data/CDataWrapper.h @@ -90,7 +90,7 @@ namespace chaos { int array_index; ChaosBsonShrdPtr bson_tmp_array; explicit CDataWrapper(const std::string& json_document); - int setBson(const bson_iter_t * ,const uint64_t& val); + // int setBson(const bson_iter_t * ,const uint64_t& val); int setBson(const bson_iter_t * ,const int64_t& val); int setBson(const bson_iter_t *v ,const int32_t& val); int setBson(const bson_iter_t * ,const double& val); @@ -145,7 +145,7 @@ namespace chaos { void appendStringToArray(const string &value); void appendInt32ToArray(int32_t value); void appendInt64ToArray(int64_t value); - void appendInt64ToArray(uint64_t value); + void appendUInt64ToArray(uint64_t value); void appendDoubleToArray(double value); void appendBooleanToArray(bool value); @@ -163,7 +163,6 @@ namespace chaos { void addInt32Value(const std::string&, int32_t); void append(const std::string& key,int32_t val); void append(const std::string& key,int64_t val); - void append(const std::string& key,uint64_t val); void append(const std::string& key,double val); void append(const std::string& key,bool val); diff --git a/chaos/common/data/CUSchemaDB.cpp b/chaos/common/data/CUSchemaDB.cpp index cc39d9dd14387a35b29a4f712c56562031b57e9d..1469c0e32a8a19e98379160783ab364c4643759a 100644 --- a/chaos/common/data/CUSchemaDB.cpp +++ b/chaos/common/data/CUSchemaDB.cpp @@ -250,6 +250,8 @@ void CUSchemaDB::addAttributeToDataSet(const std::string& node_uid, typeMaxDimension = sizeof(int32_t); break; case DataType::TYPE_INT64: + case DataType::TYPE_UINT64: + typeMaxDimension = sizeof(int64_t); break; case DataType::TYPE_CLUSTER: diff --git a/chaos/common/data/cache/AttributeCache.cpp b/chaos/common/data/cache/AttributeCache.cpp index 2375a41bd9928c0a5698ba5243b85c80bbdecb4d..0fc708b47c5f9784b59077aae4fa26a7e3e6c02e 100644 --- a/chaos/common/data/cache/AttributeCache.cpp +++ b/chaos/common/data/cache/AttributeCache.cpp @@ -70,6 +70,8 @@ void AttributeCache::addAttribute(const string& name, size = sizeof(int32_t); break; case chaos::DataType::TYPE_INT64: + case chaos::DataType::TYPE_UINT64: + size = sizeof(int64_t); break; @@ -110,6 +112,8 @@ void AttributeCache::addAttribute(const std::string& name, size = sizeof(int32_t); break; case chaos::DataType::TYPE_INT64: + case chaos::DataType::TYPE_UINT64: + size = sizeof(int64_t); break; case chaos::DataType::TYPE_STRING: diff --git a/chaos/common/data/cache/AttributeValue.cpp b/chaos/common/data/cache/AttributeValue.cpp index 01fa37485e9b6923b557eacaef5c042dcb426a72..c99c07495977aeea8ac25fafd168256bdfde9742 100644 --- a/chaos/common/data/cache/AttributeValue.cpp +++ b/chaos/common/data/cache/AttributeValue.cpp @@ -132,6 +132,20 @@ bool AttributeValue::setValue(const void* value_ptr, break; } + case DataType::TYPE_UINT64: { + uint64_t i64v = *(uint64_t*)value_ptr; + if(old_value.i64data!=i64v){ + *(uint64_t*)value_buffer=i64v; + tag_has_changed =true; + old_value.i64data=i64v; + }else { + tag_has_changed =false; + + } + //copy string to buffer + + break; + } case DataType::TYPE_DOUBLE: { double dv = *(double*)value_ptr; if(old_value.ddata!=dv){ @@ -276,6 +290,25 @@ bool AttributeValue::setValue(const CDataVariant& attribute_value, sizeof(int64_t));*/ break; } + case DataType::TYPE_UINT64: { + if(!grow(sizeof(int64_t))) return false; + uint64_t i64v = attribute_value.asUInt64(); + old_value.i64data=*(uint64_t*)value_buffer; + + *(uint64_t*)value_buffer=i64v; + + if(old_value.i64data!=i64v){ + tag_has_changed =true; + }else { + tag_has_changed =false; + + } + //copy string to buffer + /*std::memcpy(value_buffer, + &i64v, + sizeof(int64_t));*/ + break; + } case DataType::TYPE_DOUBLE: { if(!grow(sizeof(double))) return false; double dv = attribute_value.asDouble(); @@ -497,6 +530,9 @@ std::string AttributeValue::toString() { case chaos::DataType::TYPE_INT64:{ return ChaosToString(*getValuePtr<int64_t>()); } + case chaos::DataType::TYPE_UINT64:{ + return ChaosToString(*getValuePtr<uint64_t>()); + } default: break; @@ -535,6 +571,9 @@ std::string AttributeValue::toString(int double_precision) { case chaos::DataType::TYPE_INT64:{ return ChaosToString(*getValuePtr<int64_t>()); } + case chaos::DataType::TYPE_UINT64:{ + return ChaosToString(*getValuePtr<uint64_t>()); + } default: break; diff --git a/chaos/common/rpc/psm/PSMClient.cpp b/chaos/common/rpc/psm/PSMClient.cpp index 8211c465c247e66b445f754e2bdbf679494dbd67..5a8faa0f35c2d143326822054d7a03cf709ee7ff 100644 --- a/chaos/common/rpc/psm/PSMClient.cpp +++ b/chaos/common/rpc/psm/PSMClient.cpp @@ -143,7 +143,7 @@ bool PSMClient::submitMessage(NFISharedPtr forwardInfo, forwardInfo->message->addInt64Value(RPC_TS_KEY, chaos::common::utility::TimingUtil::getTimeStamp()); std::string key=forwardInfo->destinationAddr; - PSMC_LDBG<<seq_id<<"] Reqid:"<<forwardInfo->sender_request_id<<" "<<forwardInfo->sender_node_id<<" Sends message to:"<<forwardInfo->destinationAddr<<" size:"<<forwardInfo->message->getBSONRawSize(); + PSMC_LDBG<<seq_id<<"] Reqid:"<<forwardInfo->sender_request_id<<" "<<forwardInfo->sender_node_id<<" Sends message to:"<<forwardInfo->destinationAddr<<" size:"<<forwardInfo->message->getBSONRawSize();//<<":"<<forwardInfo->message->getJSONString(); prod->pushMsgAsync(*forwardInfo->message.get(),key); } catch(CException& ex){ diff --git a/chaos/cu_toolkit/control_manager/handler/AbstractAttributeHandler.h b/chaos/cu_toolkit/control_manager/handler/AbstractAttributeHandler.h index e2c308a7ef2b93b8d40d0eff493dd485faf549d9..fd9e5cc05dfeea13fbfbe246c1ee879ae5b632d4 100644 --- a/chaos/cu_toolkit/control_manager/handler/AbstractAttributeHandler.h +++ b/chaos/cu_toolkit/control_manager/handler/AbstractAttributeHandler.h @@ -60,6 +60,8 @@ namespace chaos { if(range_info.valueType == chaos::DataType::TYPE_INT32 || range_info.valueType == chaos::DataType::TYPE_INT64 || + range_info.valueType == chaos::DataType::TYPE_UINT64 || + range_info.valueType == chaos::DataType::TYPE_DOUBLE) { min = boost::lexical_cast<T>(range_info.minRange); max = boost::lexical_cast<T>(range_info.maxRange); diff --git a/chaos_micro_unit_toolkit/data/DataPack.cpp b/chaos_micro_unit_toolkit/data/DataPack.cpp index 373bc7ce32c90c84bfcd3df79635c6276214eef0..b5372095e95cb7db4c5a05089d7a5041160f9e52 100644 --- a/chaos_micro_unit_toolkit/data/DataPack.cpp +++ b/chaos_micro_unit_toolkit/data/DataPack.cpp @@ -363,6 +363,7 @@ uint32_t DataPack::getValueSize(const std::string& key) const{ const bson_value_t *v = bson_iter_value(&it); switch(v->value_type) { case BSON_TYPE_INT64: + case BSON_TYPE_TIMESTAMP: return sizeof(int64_t); case BSON_TYPE_INT32: return sizeof(int32_t);