initial implementation of integral types
This commit is contained in:
@@ -11,6 +11,7 @@ use api::messages::command::{Command, CommandDefinition, CommandHeader, CommandR
|
||||
use api::messages::ResponseMessage;
|
||||
use chrono::Utc;
|
||||
use log::error;
|
||||
use num_traits::FromPrimitive;
|
||||
use papaya::HashMap;
|
||||
use std::collections::HashMap as StdHashMap;
|
||||
use tokio::sync::oneshot;
|
||||
@@ -102,10 +103,34 @@ impl CommandManagementService {
|
||||
let Some(param_value) = parameters.get(¶meter.name) else {
|
||||
return Err(MisingParameter(parameter.name.clone()));
|
||||
};
|
||||
let Some(param_value) = (match parameter.data_type {
|
||||
DataType::Float32 => param_value.as_f64().map(|v| DataValue::Float32(v as f32)),
|
||||
DataType::Float64 => param_value.as_f64().map(DataValue::Float64),
|
||||
DataType::Boolean => param_value.as_bool().map(DataValue::Boolean),
|
||||
let Some(Some(param_value)) = (match parameter.data_type {
|
||||
DataType::Float32 => param_value
|
||||
.as_f64()
|
||||
.map(|v| Some(DataValue::Float32(v as f32))),
|
||||
DataType::Float64 => param_value.as_f64().map(DataValue::Float64).map(Some),
|
||||
DataType::Boolean => param_value.as_bool().map(DataValue::Boolean).map(Some),
|
||||
DataType::Int8 => param_value
|
||||
.as_i64()
|
||||
.map(|v| Some(DataValue::Int8(i8::from_i64(v)?))),
|
||||
DataType::Int16 => param_value
|
||||
.as_i64()
|
||||
.map(|v| Some(DataValue::Int16(i16::from_i64(v)?))),
|
||||
DataType::Int32 => param_value
|
||||
.as_i64()
|
||||
.map(|v| Some(DataValue::Int32(i32::from_i64(v)?))),
|
||||
DataType::Int64 => param_value.as_i64().map(|v| Some(DataValue::Int64(v))),
|
||||
DataType::Unsigned8 => param_value
|
||||
.as_u64()
|
||||
.map(|v| Some(DataValue::Unsigned8(u8::from_u64(v)?))),
|
||||
DataType::Unsigned16 => param_value
|
||||
.as_u64()
|
||||
.map(|v| Some(DataValue::Unsigned16(u16::from_u64(v)?))),
|
||||
DataType::Unsigned32 => param_value
|
||||
.as_u64()
|
||||
.map(|v| Some(DataValue::Unsigned32(u32::from_u64(v)?))),
|
||||
DataType::Unsigned64 => {
|
||||
param_value.as_u64().map(|v| Some(DataValue::Unsigned64(v)))
|
||||
}
|
||||
}) else {
|
||||
return Err(WrongParameterType {
|
||||
name: parameter.name.clone(),
|
||||
|
||||
Reference in New Issue
Block a user