diff options
author | dtrunov <dtrunov@luxoft.com> | 2016-10-04 10:03:10 +0300 |
---|---|---|
committer | dtrunov <dtrunov@luxoft.com> | 2016-10-04 10:03:10 +0300 |
commit | a100b5efb77e00c7f7153ed8852e09257beb4579 (patch) | |
tree | 14d81207d145f0b6312540550a074a3b6a60a6f1 | |
parent | 08793826cd9ba59f0733b72aa8b829e0a38e5814 (diff) | |
download | sdl_core-a100b5efb77e00c7f7153ed8852e09257beb4579.tar.gz |
Fix review comments
Rename methods, structures reorganize methods
Related issue [APPLINK-25088](https://adc.luxoft.com/jira/browse/APPLINK-25088)
17 files changed, 69 insertions, 70 deletions
diff --git a/src/components/application_manager/include/application_manager/commands/command_request_impl.h b/src/components/application_manager/include/application_manager/commands/command_request_impl.h index 7d2c444f4a..9d4ea78b42 100644 --- a/src/components/application_manager/include/application_manager/commands/command_request_impl.h +++ b/src/components/application_manager/include/application_manager/commands/command_request_impl.h @@ -47,7 +47,7 @@ class SmartObject; namespace application_manager { namespace commands { -struct response_info{ +struct ResponseInfo{ hmi_apis::Common_Result::eType result_code; HmiInterfaces::InterfaceID interface; HmiInterfaces::InterfaceState interface_state; @@ -205,8 +205,8 @@ class CommandRequestImpl : public CommandImpl, * @return true if result code complies successful result code * otherwise returns false */ - bool PrepareResultForMobileResponse(response_info& first, - response_info& second) const; + bool PrepareResultForMobileResponse(ResponseInfo& first, + ResponseInfo& second) const; /** * @brief If message from HMI contains returns this info * or process result code from HMI and checks state of interface @@ -230,8 +230,8 @@ class CommandRequestImpl : public CommandImpl, * @return resulting code for sending to mobile application. */ mobile_apis::Result::eType PrepareResultCodeForResponse( - const response_info& first, - const response_info& second); + const ResponseInfo& first, + const ResponseInfo& second); protected: /** diff --git a/src/components/application_manager/include/application_manager/commands/mobile/change_registration_request.h b/src/components/application_manager/include/application_manager/commands/mobile/change_registration_request.h index 01492995db..f783af12b3 100644 --- a/src/components/application_manager/include/application_manager/commands/mobile/change_registration_request.h +++ b/src/components/application_manager/include/application_manager/commands/mobile/change_registration_request.h @@ -138,7 +138,7 @@ class ChangeRegistrationRequest : public CommandRequestImpl { * @return result for sending to mobile application. */ bool PrepareResponseParameters(mobile_apis::Result::eType& result_code, - std::string& response_info); + std::string& ResponseInfo); /** * @brief Predicate for using with CheckCoincidence method to compare with VR diff --git a/src/components/application_manager/include/application_manager/commands/mobile/perform_audio_pass_thru_request.h b/src/components/application_manager/include/application_manager/commands/mobile/perform_audio_pass_thru_request.h index 46c64c2ac9..7b4fb8fe31 100644 --- a/src/components/application_manager/include/application_manager/commands/mobile/perform_audio_pass_thru_request.h +++ b/src/components/application_manager/include/application_manager/commands/mobile/perform_audio_pass_thru_request.h @@ -130,7 +130,7 @@ class PerformAudioPassThruRequest : public CommandRequestImpl { /* * @brief Tells if there are sent requests without responses */ - bool HasHmiResponsesToWait(); + bool IsWaitingHMIResponse(); /* flag display state of speak and ui perform audio during perform audio pass thru*/ diff --git a/src/components/application_manager/src/commands/command_request_impl.cc b/src/components/application_manager/src/commands/command_request_impl.cc index 5048469247..89b7f4d176 100644 --- a/src/components/application_manager/src/commands/command_request_impl.cc +++ b/src/components/application_manager/src/commands/command_request_impl.cc @@ -53,27 +53,42 @@ std::string MergeInfos(const std::string& first, return MergeInfos(result, third); } -void CreateInfoForUnsupportedResult(std::string& info, - HmiInterfaces::InterfaceID interface) { +const std::string CreateInfoForUnsupportedResult(HmiInterfaces::InterfaceID interface) { switch (interface) { case(HmiInterfaces::InterfaceID::HMI_INTERFACE_VR):{ - info = "VR is not supported by system"; - break; + return "VR is not supported by system"; } case(HmiInterfaces::InterfaceID::HMI_INTERFACE_TTS): { - info = "TTS is not supported by system"; - break; + return "TTS is not supported by system"; } case(HmiInterfaces::InterfaceID::HMI_INTERFACE_UI): { - info = "UI is not supported by system"; - break; + return "UI is not supported by system"; } case(HmiInterfaces::InterfaceID::HMI_INTERFACE_Navigation): { - info = "Navi is not supported by system"; - break; + return "Navi is not supported by system"; } default: - break; + return ""; } } +bool CheckResultCode(const ResponseInfo& first, + const ResponseInfo& second) { + if (first.is_ok && second.is_unsupported_resource) { + return true; + } + if (first.is_invalid_enum && second.is_unsupported_resource && + HmiInterfaces::STATE_NOT_AVAILABLE != second.interface_state) { + return true; + } + return false; +} + +bool IsResultCodeUnsupported(const ResponseInfo& first, + const ResponseInfo& second) { + return ((first.is_ok || first.is_invalid_enum) && + second.is_unsupported_resource) || + ((second.is_ok || second.is_invalid_enum) && + first.is_unsupported_resource) || + (first.is_unsupported_resource && second.is_unsupported_resource); +} struct DisallowedParamsInserter { DisallowedParamsInserter(smart_objects::SmartObject& response, @@ -243,9 +258,7 @@ smart_objects::SmartObject CreateUnsupportedResourceResponse( params[strings::function_id] = function_id; params[hmi_response::code] = hmi_apis::Common_Result::UNSUPPORTED_RESOURCE; smart_objects::SmartObject& msg_params = response[strings::msg_params]; - std::string info; - CreateInfoForUnsupportedResult(info, interface); - msg_params[strings::info] = info; + msg_params[strings::info] = CreateInfoForUnsupportedResult(interface); return response; } @@ -640,14 +653,15 @@ bool CommandRequestImpl::PrepareResultForMobileResponse( hmi_apis::Common_Result::SAVED); const HmiInterfaces::InterfaceState state = application_manager_.hmi_interfaces().GetInterfaceState(interface); + result = result || (hmi_apis::Common_Result::UNSUPPORTED_RESOURCE == result_code && HmiInterfaces::STATE_NOT_AVAILABLE != state); return result; } bool CommandRequestImpl::PrepareResultForMobileResponse( - response_info& first, - response_info& second) const { + ResponseInfo& first, + ResponseInfo& second) const { using namespace helpers; first.is_ok = Compare<hmi_apis::Common_Result::eType, EQ, ONE>( @@ -686,13 +700,8 @@ bool CommandRequestImpl::PrepareResultForMobileResponse( bool result = (first.is_ok && second.is_ok) || (second.is_invalid_enum && first.is_ok) || (first. is_invalid_enum && second.is_ok); - - result = result || (first.is_ok && second.is_unsupported_resource); - result = result || (second.is_ok && first.is_unsupported_resource); - result = result || (first.is_invalid_enum && second.is_unsupported_resource && - HmiInterfaces::STATE_NOT_AVAILABLE != second.interface_state); - result = result || (second.is_invalid_enum && first.is_unsupported_resource && - HmiInterfaces::STATE_NOT_AVAILABLE != first.interface_state); + result = result || CheckResultCode(first, second); + result = result || CheckResultCode(second, first); return result; } @@ -708,24 +717,20 @@ void CommandRequestImpl::GetInfo(HmiInterfaces::InterfaceID interface, application_manager_.hmi_interfaces().GetInterfaceState(interface); if (hmi_apis::Common_Result::UNSUPPORTED_RESOURCE == result_code && HmiInterfaces::InterfaceState::STATE_NOT_RESPONSE == interface_state) { - CreateInfoForUnsupportedResult(info, interface); + info = CreateInfoForUnsupportedResult(interface); } } } mobile_apis::Result::eType CommandRequestImpl::PrepareResultCodeForResponse( - const response_info& first, - const response_info& second) { + const ResponseInfo& first, + const ResponseInfo& second) { mobile_apis::Result::eType result_code = mobile_apis::Result::INVALID_ENUM; - if (((first.is_ok || first.is_invalid_enum) && - second.is_unsupported_resource) || - ((second.is_ok || second.is_invalid_enum) && - first.is_unsupported_resource) || - (first.is_unsupported_resource && second.is_unsupported_resource)) { + if (IsResultCodeUnsupported(first, second)) { result_code = mobile_apis::Result::UNSUPPORTED_RESOURCE; } else { - //If esponse contains erroneous result code SDL need return erroneus result code. + //If response contains erroneous result code SDL need return erroneus result code. hmi_apis::Common_Result::eType first_result = hmi_apis::Common_Result::INVALID_ENUM; hmi_apis::Common_Result::eType second_result = diff --git a/src/components/application_manager/src/commands/hmi/close_popup_request.cc b/src/components/application_manager/src/commands/hmi/close_popup_request.cc index 1e71ef7b88..d628475438 100644 --- a/src/components/application_manager/src/commands/hmi/close_popup_request.cc +++ b/src/components/application_manager/src/commands/hmi/close_popup_request.cc @@ -44,11 +44,6 @@ ClosePopupRequest::~ClosePopupRequest() {} void ClosePopupRequest::Run() { LOG4CXX_AUTO_TRACE(logger_); - if(!CheckAvailabilityHMIInterfaces(application_manager_, - HmiInterfaces::HMI_INTERFACE_UI)) { - LOG4CXX_INFO(logger_, "HmiInterfaces::HMI_INTERFACE_UI isn't available"); - return; - } SendRequest(); } diff --git a/src/components/application_manager/src/commands/hmi/request_to_hmi.cc b/src/components/application_manager/src/commands/hmi/request_to_hmi.cc index febdeff319..497c21e15c 100644 --- a/src/components/application_manager/src/commands/hmi/request_to_hmi.cc +++ b/src/components/application_manager/src/commands/hmi/request_to_hmi.cc @@ -40,7 +40,7 @@ bool CheckAvailabilityHMIInterfaces(ApplicationManager& application_manager, HmiInterfaces::InterfaceID interface) { const HmiInterfaces::InterfaceState state = application_manager.hmi_interfaces().GetInterfaceState(interface); - return HmiInterfaces::STATE_NOT_AVAILABLE != state ? true : false; + return HmiInterfaces::STATE_NOT_AVAILABLE != state; } bool ChangeInterfaceState(ApplicationManager& application_manager, diff --git a/src/components/application_manager/src/commands/hmi/tts_is_ready_request.cc b/src/components/application_manager/src/commands/hmi/tts_is_ready_request.cc index a7e5a95fbb..6044dd8e94 100644 --- a/src/components/application_manager/src/commands/hmi/tts_is_ready_request.cc +++ b/src/components/application_manager/src/commands/hmi/tts_is_ready_request.cc @@ -59,7 +59,7 @@ void TTSIsReadyRequest::on_event(const event_engine::Event& event) { case hmi_apis::FunctionID::TTS_IsReady: { LOG4CXX_DEBUG(logger_, "Received TTS_IsReady event"); unsubscribe_from_event(hmi_apis::FunctionID::TTS_IsReady); - bool is_available = ChangeInterfaceState( + const bool is_available = ChangeInterfaceState( application_manager_, message, HmiInterfaces::HMI_INTERFACE_TTS); HMICapabilities& hmi_capabilities = application_manager_.hmi_capabilities(); @@ -80,7 +80,7 @@ void TTSIsReadyRequest::on_event(const event_engine::Event& event) { } void TTSIsReadyRequest::onTimeOut() { - //According wiht new requirment APPLINK-27956 + // Note(dtrunov): According to new requirment APPLINK-27956 SendMessageToHMI(); } diff --git a/src/components/application_manager/src/commands/hmi/ui_is_ready_request.cc b/src/components/application_manager/src/commands/hmi/ui_is_ready_request.cc index d39ff001b5..a36b7104b4 100644 --- a/src/components/application_manager/src/commands/hmi/ui_is_ready_request.cc +++ b/src/components/application_manager/src/commands/hmi/ui_is_ready_request.cc @@ -58,7 +58,7 @@ void UIIsReadyRequest::on_event(const event_engine::Event& event) { case hmi_apis::FunctionID::UI_IsReady: { LOG4CXX_DEBUG(logger_, "Received UI_IsReady event"); unsubscribe_from_event(hmi_apis::FunctionID::UI_IsReady); - bool is_available = ChangeInterfaceState( + const bool is_available = ChangeInterfaceState( application_manager_, message, HmiInterfaces::HMI_INTERFACE_UI); HMICapabilities& hmi_capabilities = application_manager_.hmi_capabilities(); @@ -79,7 +79,7 @@ void UIIsReadyRequest::on_event(const event_engine::Event& event) { } void UIIsReadyRequest::onTimeOut() { - //According wiht new requirment APPLINK-27957 + // Note(dtrunov): According to new requirment APPLINK-27956 SendMessageToHMI(); } diff --git a/src/components/application_manager/src/commands/hmi/vi_is_ready_request.cc b/src/components/application_manager/src/commands/hmi/vi_is_ready_request.cc index 5d3cafb2f0..079c79f65d 100644 --- a/src/components/application_manager/src/commands/hmi/vi_is_ready_request.cc +++ b/src/components/application_manager/src/commands/hmi/vi_is_ready_request.cc @@ -58,7 +58,7 @@ void VIIsReadyRequest::on_event(const event_engine::Event& event) { case hmi_apis::FunctionID::VehicleInfo_IsReady: { LOG4CXX_DEBUG(logger_, "VehicleInfo_IsReady event"); unsubscribe_from_event(hmi_apis::FunctionID::VehicleInfo_IsReady); - bool is_available = ChangeInterfaceState( + const bool is_available = ChangeInterfaceState( application_manager_, message, HmiInterfaces::HMI_INTERFACE_VehicleInfo); @@ -82,7 +82,7 @@ void VIIsReadyRequest::on_event(const event_engine::Event& event) { } void VIIsReadyRequest::onTimeOut() { - //According wiht new requirment APPLINK-27958 + // Note(dtrunov): According to new requirment APPLINK-27956 SendMessageToHMI(); } @@ -93,7 +93,6 @@ void VIIsReadyRequest::SendMessageToHMI() { application_manager_.ManageHMICommand(get_type); } - } // namespace commands } // namespace application_manager diff --git a/src/components/application_manager/src/commands/hmi/vr_is_ready_request.cc b/src/components/application_manager/src/commands/hmi/vr_is_ready_request.cc index 71750e3738..df64e0baa3 100644 --- a/src/components/application_manager/src/commands/hmi/vr_is_ready_request.cc +++ b/src/components/application_manager/src/commands/hmi/vr_is_ready_request.cc @@ -57,7 +57,7 @@ void VRIsReadyRequest::on_event(const event_engine::Event& event) { case hmi_apis::FunctionID::VR_IsReady: { LOG4CXX_DEBUG(logger_, "Received VR_IsReady event"); unsubscribe_from_event(hmi_apis::FunctionID::VR_IsReady); - bool is_available = ChangeInterfaceState( + const bool is_available = ChangeInterfaceState( application_manager_, message, HmiInterfaces::HMI_INTERFACE_VR); @@ -79,7 +79,7 @@ void VRIsReadyRequest::on_event(const event_engine::Event& event) { } void VRIsReadyRequest::onTimeOut() { - //According wiht new requirment APPLINK-27957 + // Note(dtrunov): According to new requirment APPLINK-27956 SendMessageToHMI(); } diff --git a/src/components/application_manager/src/commands/mobile/alert_request.cc b/src/components/application_manager/src/commands/mobile/alert_request.cc index bf7af0614d..f144498f47 100644 --- a/src/components/application_manager/src/commands/mobile/alert_request.cc +++ b/src/components/application_manager/src/commands/mobile/alert_request.cc @@ -207,17 +207,17 @@ void AlertRequest::on_event(const event_engine::Event& event) { bool AlertRequest::PrepareResponseParameters(mobile_apis::Result::eType& result_code, std::string& info) { - response_info ui_alert_info{alert_result_, HmiInterfaces::HMI_INTERFACE_UI, + ResponseInfo ui_alert_info{alert_result_, HmiInterfaces::HMI_INTERFACE_UI, HmiInterfaces::STATE_NOT_RESPONSE, false, false, false}; - response_info tts_alert_info{tts_speak_result_, HmiInterfaces::HMI_INTERFACE_TTS, + ResponseInfo tts_alert_info{tts_speak_result_, HmiInterfaces::HMI_INTERFACE_TTS, HmiInterfaces::STATE_NOT_RESPONSE, false, false, false}; bool result = PrepareResultForMobileResponse(ui_alert_info, tts_alert_info); /* result=false if UI interface is ok and TTS interface = UNSUPPORTED_RESOURCE - * and sdl receive TTS.IsReady=true or SDL doesn't resive responce for + * and sdl receive TTS.IsReady=true or SDL doesn't receive responce for * TTS.IsReady. */ if (result && ui_alert_info.is_ok && tts_alert_info.is_unsupported_resource && diff --git a/src/components/application_manager/src/commands/mobile/change_registration_request.cc b/src/components/application_manager/src/commands/mobile/change_registration_request.cc index 69cd0301fc..aaf78a9e3e 100644 --- a/src/components/application_manager/src/commands/mobile/change_registration_request.cc +++ b/src/components/application_manager/src/commands/mobile/change_registration_request.cc @@ -295,7 +295,7 @@ bool ChangeRegistrationRequest::PrepareResponseParameters( if ((result && is_tts_or_ui_or_vr_unsupported) || is_tts_ui_vr_unsupported) { result_code = mobile_apis::Result::UNSUPPORTED_RESOURCE; } else { - //If esponse contains erroneous result code SDL need return erroneus result code. + //If response contains erroneous result code SDL need return erroneus result code. hmi_apis::Common_Result::eType ui_result = hmi_apis::Common_Result::INVALID_ENUM; hmi_apis::Common_Result::eType vr_result = diff --git a/src/components/application_manager/src/commands/mobile/delete_command_request.cc b/src/components/application_manager/src/commands/mobile/delete_command_request.cc index 486cbd8082..ad8e367107 100644 --- a/src/components/application_manager/src/commands/mobile/delete_command_request.cc +++ b/src/components/application_manager/src/commands/mobile/delete_command_request.cc @@ -118,10 +118,10 @@ bool DeleteCommandRequest::PrepareResponseParameters( mobile_apis::Result::eType& result_code, std::string& info) { using namespace helpers; - response_info ui_delete_info{ui_result_, HmiInterfaces::HMI_INTERFACE_UI, + ResponseInfo ui_delete_info{ui_result_, HmiInterfaces::HMI_INTERFACE_UI, HmiInterfaces::STATE_NOT_RESPONSE, false, false, false}; - response_info vr_delete_info{vr_result_, HmiInterfaces::HMI_INTERFACE_VR, + ResponseInfo vr_delete_info{vr_result_, HmiInterfaces::HMI_INTERFACE_VR, HmiInterfaces::STATE_NOT_RESPONSE, false, false, false}; const bool result = PrepareResultForMobileResponse(ui_delete_info, vr_delete_info); diff --git a/src/components/application_manager/src/commands/mobile/perform_audio_pass_thru_request.cc b/src/components/application_manager/src/commands/mobile/perform_audio_pass_thru_request.cc index ede54f62e7..8f79a00314 100644 --- a/src/components/application_manager/src/commands/mobile/perform_audio_pass_thru_request.cc +++ b/src/components/application_manager/src/commands/mobile/perform_audio_pass_thru_request.cc @@ -174,7 +174,7 @@ void PerformAudioPassThruRequest::on_event(const event_engine::Event& event) { return; } } - if (HasHmiResponsesToWait()) { + if (IsWaitingHMIResponse()) { return; } @@ -193,10 +193,10 @@ bool PerformAudioPassThruRequest::PrepareResponseParameters( mobile_apis::Result::eType& result_code, std::string& info) { LOG4CXX_AUTO_TRACE(logger_); - response_info ui_perform_info{result_ui_, HmiInterfaces::HMI_INTERFACE_UI, + ResponseInfo ui_perform_info{result_ui_, HmiInterfaces::HMI_INTERFACE_UI, HmiInterfaces::STATE_NOT_RESPONSE, false, false, false}; - response_info tts_perform_info{result_tts_speak_, HmiInterfaces::HMI_INTERFACE_TTS, + ResponseInfo tts_perform_info{result_tts_speak_, HmiInterfaces::HMI_INTERFACE_TTS, HmiInterfaces::STATE_NOT_RESPONSE, false, false, false}; @@ -365,7 +365,7 @@ void PerformAudioPassThruRequest::FinishTTSSpeak() { SendHMIRequest(hmi_apis::FunctionID::TTS_StopSpeaking, NULL); } -bool PerformAudioPassThruRequest::HasHmiResponsesToWait() { +bool PerformAudioPassThruRequest::IsWaitingHMIResponse() { LOG4CXX_AUTO_TRACE(logger_); return awaiting_tts_speak_response_ || awaiting_ui_response_; } diff --git a/src/components/application_manager/src/commands/mobile/perform_interaction_request.cc b/src/components/application_manager/src/commands/mobile/perform_interaction_request.cc index 38720555a2..a3335b75e4 100644 --- a/src/components/application_manager/src/commands/mobile/perform_interaction_request.cc +++ b/src/components/application_manager/src/commands/mobile/perform_interaction_request.cc @@ -939,10 +939,10 @@ void PerformInteractionRequest::SendBothModeResponse( LOG4CXX_AUTO_TRACE(logger_); mobile_apis::Result::eType perform_interaction_result_code = mobile_apis::Result::INVALID_ENUM; - response_info ui_perform_info{ui_result_code_, HmiInterfaces::HMI_INTERFACE_UI, + ResponseInfo ui_perform_info{ui_result_code_, HmiInterfaces::HMI_INTERFACE_UI, HmiInterfaces::STATE_NOT_RESPONSE, false, false, false}; - response_info vr_perform_info{vr_result_code_, HmiInterfaces::HMI_INTERFACE_VR, + ResponseInfo vr_perform_info{vr_result_code_, HmiInterfaces::HMI_INTERFACE_VR, HmiInterfaces::STATE_NOT_RESPONSE, false, false, false}; diff --git a/src/components/application_manager/src/commands/mobile/scrollable_message_request.cc b/src/components/application_manager/src/commands/mobile/scrollable_message_request.cc index a2c48d4606..c34c814198 100644 --- a/src/components/application_manager/src/commands/mobile/scrollable_message_request.cc +++ b/src/components/application_manager/src/commands/mobile/scrollable_message_request.cc @@ -134,7 +134,7 @@ void ScrollableMessageRequest::on_event(const event_engine::Event& event) { GetInfo(HmiInterfaces::HMI_INTERFACE_UI, result_code, response_info, message); - bool result = PrepareResultForMobileResponse(result_code, + const bool result = PrepareResultForMobileResponse(result_code, HmiInterfaces::HMI_INTERFACE_UI); SendResponse(result, diff --git a/src/components/application_manager/src/commands/mobile/set_global_properties_request.cc b/src/components/application_manager/src/commands/mobile/set_global_properties_request.cc index 9b3da9efd0..322641dea3 100644 --- a/src/components/application_manager/src/commands/mobile/set_global_properties_request.cc +++ b/src/components/application_manager/src/commands/mobile/set_global_properties_request.cc @@ -258,7 +258,7 @@ void SetGlobalPropertiesRequest::on_event(const event_engine::Event& event) { } mobile_apis::Result::eType result_code = mobile_apis::Result::INVALID_ENUM; std::string response_info; - bool result = PrepareResponseParameters(result_code, response_info); + const bool result = PrepareResponseParameters(result_code, response_info); // TODO{ALeshin} APPLINK-15858. connection_key removed during SendResponse ApplicationSharedPtr application = @@ -284,10 +284,10 @@ bool SetGlobalPropertiesRequest::PrepareResponseParameters( LOG4CXX_AUTO_TRACE(logger_); using namespace helpers; - response_info ui_properties_info{ui_result_, HmiInterfaces::HMI_INTERFACE_UI, + ResponseInfo ui_properties_info{ui_result_, HmiInterfaces::HMI_INTERFACE_UI, HmiInterfaces::STATE_NOT_RESPONSE, false, false, false}; - response_info tts_properties_info{tts_result_, HmiInterfaces::HMI_INTERFACE_TTS, + ResponseInfo tts_properties_info{tts_result_, HmiInterfaces::HMI_INTERFACE_TTS, HmiInterfaces::STATE_NOT_RESPONSE, false, false, false}; |