diff options
author | JackLivio <jack@livio.io> | 2018-08-14 11:55:16 -0400 |
---|---|---|
committer | JackLivio <jack@livio.io> | 2018-08-14 11:55:16 -0400 |
commit | 997674798fbe6a6ed2dd579d0703aa8e22d8a643 (patch) | |
tree | d87a33dcb04e6bff107215edfe2c601c40c5fb4e /src/components/application_manager/src | |
parent | 41bee08bf311974c36f93667dbc304cac383cdcc (diff) | |
parent | 0db99f84ab344b82fab71200e43b67adbb2e2575 (diff) | |
download | sdl_core-997674798fbe6a6ed2dd579d0703aa8e22d8a643.tar.gz |
Merge branch 'feature/mobile_versioning' into feature/full_app_id
Diffstat (limited to 'src/components/application_manager/src')
-rw-r--r-- | src/components/application_manager/src/rpc_handler_impl.cc | 42 |
1 files changed, 33 insertions, 9 deletions
diff --git a/src/components/application_manager/src/rpc_handler_impl.cc b/src/components/application_manager/src/rpc_handler_impl.cc index 0bf62cf64d..bf1ff78d36 100644 --- a/src/components/application_manager/src/rpc_handler_impl.cc +++ b/src/components/application_manager/src/rpc_handler_impl.cc @@ -194,6 +194,36 @@ void RPCHandlerImpl::SetTelemetryObserver(AMTelemetryObserver* observer) { #endif // TELEMETRY_MONITOR +void RPCHandlerImpl::GetMessageVersion( + NsSmartDeviceLink::NsSmartObjects::SmartObject& output, + utils::SemanticVersion& message_version) { + if (output.keyExists( + NsSmartDeviceLink::NsJSONHandler::strings::S_MSG_PARAMS) && + output[NsSmartDeviceLink::NsJSONHandler::strings::S_MSG_PARAMS].keyExists( + strings::sync_msg_version)) { + // SyncMsgVersion exists, check if it is valid. + auto sync_msg_version = + output[NsSmartDeviceLink::NsJSONHandler::strings::S_MSG_PARAMS] + [strings::sync_msg_version]; + uint16_t major = 0; + uint16_t minor = 0; + uint16_t patch = 0; + if (sync_msg_version.keyExists(strings::major_version)) { + major = sync_msg_version[strings::major_version].asUInt(); + } + if (sync_msg_version.keyExists(strings::minor_version)) { + minor = sync_msg_version[strings::minor_version].asUInt(); + } + if (sync_msg_version.keyExists(strings::patch_version)) { + patch = sync_msg_version[strings::patch_version].asUInt(); + } + utils::SemanticVersion temp_version(major, minor, patch); + if (temp_version.isValid()) { + message_version = temp_version; + } + } +} + bool RPCHandlerImpl::ConvertMessageToSO( const Message& message, NsSmartDeviceLink::NsSmartObjects::SmartObject& output) { @@ -220,26 +250,20 @@ bool RPCHandlerImpl::ConvertMessageToSO( // Attach RPC version to SmartObject if it does not exist yet. auto app_ptr = app_manager_.application(message.connection_key()); - utils::SemanticVersion msg_version(2, 0, 0); + utils::SemanticVersion msg_version(0, 0, 0); if (app_ptr && (output[NsSmartDeviceLink::NsJSONHandler::strings::S_PARAMS] .keyExists(NsSmartDeviceLink::NsJSONHandler::strings:: S_RPC_MSG_VERSION) == false)) { msg_version = app_ptr->msg_version(); - output[NsSmartDeviceLink::NsJSONHandler::strings::S_PARAMS] - [NsSmartDeviceLink::NsJSONHandler::strings::S_RPC_MSG_VERSION] = - msg_version.toString(); } else if (mobile_apis::FunctionID::RegisterAppInterfaceID == static_cast<mobile_apis::FunctionID::eType>( output[strings::params][strings::function_id].asInt())) { - // Assume default version 2.0.0 until properly set in RAI - output[NsSmartDeviceLink::NsJSONHandler::strings::S_PARAMS] - [NsSmartDeviceLink::NsJSONHandler::strings::S_RPC_MSG_VERSION] = - msg_version.toString(); + GetMessageVersion(output, msg_version); } if (!conversion_result || - !mobile_so_factory().attachSchema(output, true) || + !mobile_so_factory().attachSchema(output, true, msg_version) || ((output.validate(&report, msg_version) != smart_objects::Errors::OK))) { LOG4CXX_WARN(logger_, |