diff options
Diffstat (limited to 'src/components/transport_manager')
71 files changed, 690 insertions, 476 deletions
diff --git a/src/components/transport_manager/include/transport_manager/bluetooth/bluetooth_device_scanner.h b/src/components/transport_manager/include/transport_manager/bluetooth/bluetooth_device_scanner.h index dc38a971f5..768d9ebb54 100644 --- a/src/components/transport_manager/include/transport_manager/bluetooth/bluetooth_device_scanner.h +++ b/src/components/transport_manager/include/transport_manager/bluetooth/bluetooth_device_scanner.h @@ -39,9 +39,9 @@ #include <bluetooth/bluetooth.h> #include <bluetooth/hci.h> #include <bluetooth/hci_lib.h> +#include <bluetooth/rfcomm.h> #include <bluetooth/sdp.h> #include <bluetooth/sdp_lib.h> -#include <bluetooth/rfcomm.h> #include "transport_manager/transport_adapter/device_scanner.h" #include "utils/conditional_variable.h" @@ -70,6 +70,11 @@ class BluetoothDeviceScanner : public DeviceScanner { BluetoothDeviceScanner(TransportAdapterController* controller, bool auto_repeat_search, int repeat_search_pause_sec); + + BluetoothDeviceScanner(TransportAdapterController* controller, + bool auto_repeat_search, + int repeat_search_pause_sec, + const uint8_t* smart_device_link_service_uuid_data); /** * @brief Destructor. */ diff --git a/src/components/transport_manager/include/transport_manager/cloud/cloud_device.h b/src/components/transport_manager/include/transport_manager/cloud/cloud_device.h index 9c25be2a3e..15d23bba7f 100644 --- a/src/components/transport_manager/include/transport_manager/cloud/cloud_device.h +++ b/src/components/transport_manager/include/transport_manager/cloud/cloud_device.h @@ -55,7 +55,7 @@ class CloudDevice : public Device { public: CloudDevice(std::string& host, std::string& port, std::string& name); - CloudDevice(CloudAppEndpoint endpoint, std::string& name); + CloudDevice(CloudAppEndpoint& endpoint, std::string& name); virtual const std::string& GetHost() const; diff --git a/src/components/transport_manager/include/transport_manager/cloud/websocket_client_connection.h b/src/components/transport_manager/include/transport_manager/cloud/websocket_client_connection.h index a726524af2..76c8ca73cd 100644 --- a/src/components/transport_manager/include/transport_manager/cloud/websocket_client_connection.h +++ b/src/components/transport_manager/include/transport_manager/cloud/websocket_client_connection.h @@ -36,11 +36,11 @@ #ifndef SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_CLOUD_WEBSOCKET_CLIENT_CONNECTION_H_ #define SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_CLOUD_WEBSOCKET_CLIENT_CONNECTION_H_ -#include <boost/beast/core.hpp> -#include <boost/beast/websocket.hpp> #include <boost/asio/connect.hpp> #include <boost/asio/ip/tcp.hpp> #include <boost/asio/thread_pool.hpp> +#include <boost/beast/core.hpp> +#include <boost/beast/websocket.hpp> #ifdef ENABLE_SECURITY #include <boost/asio/ssl/stream.hpp> #include <boost/beast/websocket/ssl.hpp> @@ -51,11 +51,11 @@ #include <memory> #include <string> #include <thread> -#include "transport_manager/transport_adapter/connection.h" #include "transport_manager/cloud/cloud_websocket_transport_adapter.h" -#include "utils/threads/thread.h" -#include "utils/threads/message_loop_thread.h" +#include "transport_manager/transport_adapter/connection.h" #include "utils/message_queue.h" +#include "utils/threads/message_loop_thread.h" +#include "utils/threads/thread.h" namespace websocket = boost::beast::websocket; // from <boost/beast/websocket.hpp> diff --git a/src/components/transport_manager/include/transport_manager/iap2_emulation/iap2_transport_adapter.h b/src/components/transport_manager/include/transport_manager/iap2_emulation/iap2_transport_adapter.h index e53a472bcb..a802a64afa 100644 --- a/src/components/transport_manager/include/transport_manager/iap2_emulation/iap2_transport_adapter.h +++ b/src/components/transport_manager/include/transport_manager/iap2_emulation/iap2_transport_adapter.h @@ -33,9 +33,9 @@ #ifndef SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_IAP2_EMULATION_IAP2_TRANSPORT_ADAPTER_H_ #define SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_IAP2_EMULATION_IAP2_TRANSPORT_ADAPTER_H_ +#include "resumption/last_state.h" #include "transport_manager/tcp/tcp_transport_adapter.h" #include "transport_manager/transport_manager_settings.h" -#include "resumption/last_state.h" #include "utils/macro.h" #include "utils/threads/thread_delegate.h" @@ -108,8 +108,8 @@ class IAP2USBEmulationTransportAdapter : public TcpTransportAdapter { const TransportManagerSettings& settings); /** - * Destructor - */ + * Destructor + */ ~IAP2USBEmulationTransportAdapter(); /** diff --git a/src/components/transport_manager/include/transport_manager/tcp/network_interface_listener_impl.h b/src/components/transport_manager/include/transport_manager/tcp/network_interface_listener_impl.h index 159b5ff21d..272b28b6b2 100644 --- a/src/components/transport_manager/include/transport_manager/tcp/network_interface_listener_impl.h +++ b/src/components/transport_manager/include/transport_manager/tcp/network_interface_listener_impl.h @@ -1,11 +1,11 @@ #ifndef SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TCP_NETWORK_INTERFACE_LISTENER_IMPL_H_ #define SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TCP_NETWORK_INTERFACE_LISTENER_IMPL_H_ -#include <string> #include <memory> +#include <string> -#include "utils/macro.h" #include "transport_manager/tcp/network_interface_listener.h" +#include "utils/macro.h" namespace transport_manager { namespace transport_adapter { diff --git a/src/components/transport_manager/include/transport_manager/tcp/tcp_client_listener.h b/src/components/transport_manager/include/transport_manager/tcp/tcp_client_listener.h index 0f9529d8d8..f033d35bf7 100644 --- a/src/components/transport_manager/include/transport_manager/tcp/tcp_client_listener.h +++ b/src/components/transport_manager/include/transport_manager/tcp/tcp_client_listener.h @@ -36,9 +36,9 @@ #ifndef SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TCP_TCP_CLIENT_LISTENER_H_ #define SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TCP_TCP_CLIENT_LISTENER_H_ +#include "transport_manager/transport_adapter/client_connection_listener.h" #include "utils/lock.h" #include "utils/threads/thread_delegate.h" -#include "transport_manager/transport_adapter/client_connection_listener.h" class Thread; struct in_addr; @@ -108,6 +108,10 @@ class TcpClientListener : public ClientConnectionListener { */ virtual TransportAdapter::Error StopListening(); + TransportAdapter::Error SuspendListening() OVERRIDE; + + TransportAdapter::Error ResumeListening() OVERRIDE; + /** * @brief Called from NetworkInterfaceListener when IP address of the network * interface is changed. diff --git a/src/components/transport_manager/include/transport_manager/tcp/tcp_device.h b/src/components/transport_manager/include/transport_manager/tcp/tcp_device.h index 7aa0b72687..6e7a306879 100644 --- a/src/components/transport_manager/include/transport_manager/tcp/tcp_device.h +++ b/src/components/transport_manager/include/transport_manager/tcp/tcp_device.h @@ -36,19 +36,19 @@ #ifndef SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TCP_TCP_DEVICE_H_ #define SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TCP_TCP_DEVICE_H_ -#include <memory.h> -#include <signal.h> -#include <errno.h> #include <arpa/inet.h> +#include <errno.h> +#include <memory.h> #include <netinet/in.h> -#include <sys/types.h> +#include <signal.h> #include <sys/socket.h> +#include <sys/types.h> #include <map> #include <string> -#include "utils/lock.h" #include "transport_manager/transport_adapter/device.h" +#include "utils/lock.h" namespace transport_manager { namespace transport_adapter { diff --git a/src/components/transport_manager/include/transport_manager/telemetry_observer.h b/src/components/transport_manager/include/transport_manager/telemetry_observer.h index a38255966b..b4f321d23f 100644 --- a/src/components/transport_manager/include/transport_manager/telemetry_observer.h +++ b/src/components/transport_manager/include/transport_manager/telemetry_observer.h @@ -33,8 +33,8 @@ #ifndef SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TELEMETRY_OBSERVER_H_ #define SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TELEMETRY_OBSERVER_H_ -#include "transport_manager/common.h" #include "protocol/raw_message.h" +#include "transport_manager/common.h" #include "utils/date_time.h" namespace transport_manager { @@ -51,5 +51,5 @@ class TMTelemetryObserver { virtual ~TMTelemetryObserver() {} }; -} // transport_manager +} // namespace transport_manager #endif // SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TELEMETRY_OBSERVER_H_ diff --git a/src/components/transport_manager/include/transport_manager/transport_adapter/client_connection_listener.h b/src/components/transport_manager/include/transport_manager/transport_adapter/client_connection_listener.h index f905e11c43..e49a355e53 100644 --- a/src/components/transport_manager/include/transport_manager/transport_adapter/client_connection_listener.h +++ b/src/components/transport_manager/include/transport_manager/transport_adapter/client_connection_listener.h @@ -76,6 +76,18 @@ class ClientConnectionListener { virtual TransportAdapter::Error StopListening() = 0; /** + * @brief Suspends current listening thread + * @return Error information about possible reason of failure. + */ + virtual TransportAdapter::Error SuspendListening() = 0; + + /** + * @brief Resumes current listening thread + * @return Error information about possible reason of failure. + */ + virtual TransportAdapter::Error ResumeListening() = 0; + + /** * @brief Destructor. */ virtual ~ClientConnectionListener() {} diff --git a/src/components/transport_manager/include/transport_manager/transport_adapter/threaded_socket_connection.h b/src/components/transport_manager/include/transport_manager/transport_adapter/threaded_socket_connection.h index f1c679c123..11123ceb1c 100644 --- a/src/components/transport_manager/include/transport_manager/transport_adapter/threaded_socket_connection.h +++ b/src/components/transport_manager/include/transport_manager/transport_adapter/threaded_socket_connection.h @@ -38,11 +38,11 @@ #include <poll.h> #include <queue> -#include "transport_manager/transport_adapter/connection.h" -#include "protocol/common.h" #include <atomic> -#include "utils/threads/thread_delegate.h" +#include "protocol/common.h" +#include "transport_manager/transport_adapter/connection.h" #include "utils/lock.h" +#include "utils/threads/thread_delegate.h" using ::transport_manager::transport_adapter::Connection; diff --git a/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_controller.h b/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_controller.h index 7a0a37758c..72a67a3087 100644 --- a/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_controller.h +++ b/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_controller.h @@ -33,9 +33,9 @@ #ifndef SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TRANSPORT_ADAPTER_TRANSPORT_ADAPTER_CONTROLLER_H_ #define SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TRANSPORT_ADAPTER_TRANSPORT_ADAPTER_CONTROLLER_H_ -#include "transport_manager/transport_adapter/device.h" -#include "transport_manager/transport_adapter/connection.h" #include "protocol/common.h" +#include "transport_manager/transport_adapter/connection.h" +#include "transport_manager/transport_adapter/device.h" namespace transport_manager { namespace transport_adapter { @@ -174,12 +174,12 @@ class TransportAdapterController { const ApplicationHandle& app_handle) = 0; /** - * @brief Launch OnDataReceiveDone event in the device adapter listener. - * - * @param device_handle Device unique identifier. - * @param app_handle Handle of application. - * @param message Smart pointer to the raw message. - */ + * @brief Launch OnDataReceiveDone event in the device adapter listener. + * + * @param device_handle Device unique identifier. + * @param app_handle Handle of application. + * @param message Smart pointer to the raw message. + */ virtual void DataReceiveDone(const DeviceUID& device_handle, const ApplicationHandle& app_handle, ::protocol_handler::RawMessagePtr message) = 0; diff --git a/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_impl.h b/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_impl.h index b30f1e35b2..0750b58aae 100644 --- a/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_impl.h +++ b/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_impl.h @@ -33,21 +33,21 @@ #ifndef SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TRANSPORT_ADAPTER_TRANSPORT_ADAPTER_IMPL_H_ #define SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TRANSPORT_ADAPTER_TRANSPORT_ADAPTER_IMPL_H_ -#include <queue> -#include <set> #include <map> #include <memory> +#include <queue> +#include <set> #include <string> #include "utils/lock.h" #include "utils/rwlock.h" #include "utils/timer.h" +#include "resumption/last_state.h" +#include "transport_manager/transport_adapter/connection.h" #include "transport_manager/transport_adapter/transport_adapter.h" #include "transport_manager/transport_adapter/transport_adapter_controller.h" -#include "transport_manager/transport_adapter/connection.h" #include "transport_manager/transport_manager_settings.h" -#include "resumption/last_state.h" #ifdef TELEMETRY_MONITOR #include "transport_manager/telemetry_observer.h" @@ -202,19 +202,8 @@ class TransportAdapterImpl : public TransportAdapter, const ApplicationHandle& app_handle, const ::protocol_handler::RawMessagePtr data) OVERRIDE; - /** - * @brief Start client listener. - * - * @return Error information about possible reason of failure. - */ - TransportAdapter::Error StartClientListening() OVERRIDE; - - /** - * @brief Stop client listener. - * - * @return Error information about possible reason of failure. - */ - TransportAdapter::Error StopClientListening() OVERRIDE; + TransportAdapter::Error ChangeClientListening( + TransportAction required_change) OVERRIDE; /** * @brief Notify that device scanner is available. diff --git a/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_listener.h b/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_listener.h index a0e0a51c1e..4db9a3b710 100644 --- a/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_listener.h +++ b/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_listener.h @@ -33,9 +33,9 @@ #ifndef SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TRANSPORT_ADAPTER_TRANSPORT_ADAPTER_LISTENER_H_ #define SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TRANSPORT_ADAPTER_TRANSPORT_ADAPTER_LISTENER_H_ +#include "protocol/common.h" #include "transport_manager/common.h" #include "transport_manager/error.h" -#include "protocol/common.h" namespace transport_manager { namespace transport_adapter { @@ -307,6 +307,6 @@ class TransportAdapterListener { const TransportAdapter* transport_adapter) = 0; }; -} // transport_adapter namespace -} // transport_manager namespace +} // namespace transport_adapter +} // namespace transport_manager #endif // SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TRANSPORT_ADAPTER_TRANSPORT_ADAPTER_LISTENER_H_ diff --git a/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_listener_impl.h b/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_listener_impl.h index 0c9c6ef6a2..d00ae1c498 100644 --- a/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_listener_impl.h +++ b/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_listener_impl.h @@ -34,8 +34,8 @@ #define SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TRANSPORT_ADAPTER_TRANSPORT_ADAPTER_LISTENER_IMPL_H_ #include "transport_manager/common.h" -#include "transport_manager/transport_adapter/transport_adapter_listener.h" #include "transport_manager/transport_adapter/transport_adapter.h" +#include "transport_manager/transport_adapter/transport_adapter_listener.h" #include "transport_manager/transport_manager.h" namespace transport_manager { diff --git a/src/components/transport_manager/include/transport_manager/transport_manager_default.h b/src/components/transport_manager/include/transport_manager/transport_manager_default.h index 8039f9c985..7fb0904fdf 100644 --- a/src/components/transport_manager/include/transport_manager/transport_manager_default.h +++ b/src/components/transport_manager/include/transport_manager/transport_manager_default.h @@ -65,6 +65,6 @@ class TransportManagerDefault : public TransportManagerImpl { DISALLOW_COPY_AND_ASSIGN(TransportManagerDefault); }; -} +} // namespace transport_manager #endif // SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TRANSPORT_MANAGER_DEFAULT_H_ diff --git a/src/components/transport_manager/include/transport_manager/transport_manager_impl.h b/src/components/transport_manager/include/transport_manager/transport_manager_impl.h index 60303c1bca..5e97a5567e 100644 --- a/src/components/transport_manager/include/transport_manager/transport_manager_impl.h +++ b/src/components/transport_manager/include/transport_manager/transport_manager_impl.h @@ -33,29 +33,29 @@ #ifndef SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TRANSPORT_MANAGER_IMPL_H_ #define SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TRANSPORT_MANAGER_IMPL_H_ -#include <queue> -#include <map> -#include <list> -#include <vector> -#include <utility> #include <algorithm> -#include <tuple> #include <functional> +#include <list> +#include <map> +#include <queue> +#include <tuple> +#include <utility> +#include <vector> -#include "utils/timer.h" #include "utils/rwlock.h" +#include "utils/timer.h" +#include "protocol/common.h" +#include "transport_manager/transport_adapter/transport_adapter_listener_impl.h" #include "transport_manager/transport_manager.h" #include "transport_manager/transport_manager_listener.h" -#include "transport_manager/transport_adapter/transport_adapter_listener_impl.h" -#include "protocol/common.h" #ifdef TELEMETRY_MONITOR -#include "transport_manager/telemetry_observer.h" #include "telemetry_monitor/telemetry_observable.h" +#include "transport_manager/telemetry_observer.h" #endif // TELEMETRY_MONITOR -#include "utils/threads/message_loop_thread.h" #include "transport_manager/transport_adapter/transport_adapter_event.h" #include "transport_manager/transport_manager_settings.h" +#include "utils/threads/message_loop_thread.h" namespace transport_manager { @@ -74,10 +74,10 @@ class TransportManagerImpl public RawMessageLoopThread::Handler, public TransportAdapterEventLoopThread::Handler #ifdef TELEMETRY_MONITOR - , + , public telemetry_monitor::TelemetryObservable<TMTelemetryObserver> #endif // TELEMETRY_MONITOR - { +{ public: struct Connection { ConnectionUID id; @@ -132,6 +132,12 @@ class TransportManagerImpl */ virtual int Reinit() OVERRIDE; + virtual void Deinit() OVERRIDE; + + void StopEventsProcessing() OVERRIDE; + + void StartEventsProcessing() OVERRIDE; + /** * @brief Start scanning for new devices. * @@ -250,14 +256,8 @@ class TransportManagerImpl **/ int RemoveDevice(const DeviceHandle device) OVERRIDE; - /** - * @brief Turns on or off visibility of SDL to mobile devices - * when visibility is ON (on_off = true) mobile devices are able to connect - * otherwise ((on_off = false)) SDL is not visible from outside - * - * @return Code error. - */ - int Visibility(const bool& on_off) const OVERRIDE; + int PerformActionOnClients( + const TransportAction required_action) const OVERRIDE; /** * @brief OnDeviceListUpdated updates device list and sends appropriate @@ -327,9 +327,9 @@ class TransportManagerImpl private: /** - * @brief Structure that contains conversion functions (Device ID -> Device - * Handle; Device Handle -> Device ID) - */ + * @brief Structure that contains conversion functions (Device ID -> Device + * Handle; Device Handle -> Device ID) + */ struct Handle2GUIDConverter { /** * @brief ConversionTable Records uid/connection type/handle @@ -414,6 +414,10 @@ class TransportManagerImpl sync_primitives::Lock device_lock_; DeviceUID device_to_reconnect_; + std::atomic_bool events_processing_is_active_; + sync_primitives::Lock events_processing_lock_; + sync_primitives::ConditionalVariable events_processing_cond_var_; + /** * @brief Adds new incoming connection to connections list * @param c New connection @@ -421,18 +425,18 @@ class TransportManagerImpl void AddConnection(const ConnectionInternal& c); /** - * @brief Removes connection from connections list - * @param id Identifier of connection to be removed - * @param transport_adapter Pointer to transport adapter - * that holds connection - */ + * @brief Removes connection from connections list + * @param id Identifier of connection to be removed + * @param transport_adapter Pointer to transport adapter + * that holds connection + */ void RemoveConnection(const uint32_t id, transport_adapter::TransportAdapter* transport_adapter); /** - * @brief Deactivates all connections related to certain device - * @param device_uid Device unique identifier - */ + * @brief Deactivates all connections related to certain device + * @param device_uid Device unique identifier + */ void DeactivateDeviceConnections(const DeviceUID& device_uid); /** * @brief Returns connection from connections list by connection identifier @@ -452,14 +456,14 @@ class TransportManagerImpl const ApplicationHandle& application); /** - * @brief Returns active connection from connections list by device unique + * @brief Returns active connection from connections list by device unique * id - * and application handle - * (this method returns only active connections as opposed to previous one) - * @param device Device unique identifier - * @param application Application handle - * @return Pointer to connection or NULL if connection could not be found - */ + * and application handle + * (this method returns only active connections as opposed to previous one) + * @param device Device unique identifier + * @param application Application handle + * @return Pointer to connection or NULL if connection could not be found + */ ConnectionInternal* GetActiveConnection(const DeviceUID& device, const ApplicationHandle& application); diff --git a/src/components/transport_manager/include/transport_manager/usb/common.h b/src/components/transport_manager/include/transport_manager/usb/common.h index 1db1a83a3a..d15e1fdd96 100644 --- a/src/components/transport_manager/include/transport_manager/usb/common.h +++ b/src/components/transport_manager/include/transport_manager/usb/common.h @@ -110,7 +110,7 @@ inline bool IsAppleDevice(const PlatformUsbDevice* device) { return IsAppleIAPDevice(device) || IsAppleIAP2Device(device); } -} // namespace -} // namespace +} // namespace transport_adapter +} // namespace transport_manager #endif // SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_USB_COMMON_H_ diff --git a/src/components/transport_manager/include/transport_manager/usb/libusb/platform_usb_device.h b/src/components/transport_manager/include/transport_manager/usb/libusb/platform_usb_device.h index baec1938b1..201f3787e0 100644 --- a/src/components/transport_manager/include/transport_manager/usb/libusb/platform_usb_device.h +++ b/src/components/transport_manager/include/transport_manager/usb/libusb/platform_usb_device.h @@ -36,8 +36,8 @@ #ifndef SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_USB_LIBUSB_PLATFORM_USB_DEVICE_H_ #define SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_USB_LIBUSB_PLATFORM_USB_DEVICE_H_ -#include <string> #include <libusb-1.0/libusb.h> +#include <string> namespace transport_manager { diff --git a/src/components/transport_manager/include/transport_manager/usb/libusb/usb_connection.h b/src/components/transport_manager/include/transport_manager/usb/libusb/usb_connection.h index 5f6bd40957..2b7f6e4189 100644 --- a/src/components/transport_manager/include/transport_manager/usb/libusb/usb_connection.h +++ b/src/components/transport_manager/include/transport_manager/usb/libusb/usb_connection.h @@ -37,8 +37,8 @@ #include "utils/lock.h" -#include "transport_manager/transport_adapter/transport_adapter_controller.h" #include "transport_manager/transport_adapter/connection.h" +#include "transport_manager/transport_adapter/transport_adapter_controller.h" #include "transport_manager/usb/common.h" namespace transport_manager { diff --git a/src/components/transport_manager/include/transport_manager/usb/libusb/usb_handler.h b/src/components/transport_manager/include/transport_manager/usb/libusb/usb_handler.h index bed631ea2e..6b15229522 100644 --- a/src/components/transport_manager/include/transport_manager/usb/libusb/usb_handler.h +++ b/src/components/transport_manager/include/transport_manager/usb/libusb/usb_handler.h @@ -39,8 +39,8 @@ #include <libusb-1.0/libusb.h> #include "transport_manager/transport_adapter/transport_adapter.h" -#include "transport_manager/usb/usb_control_transfer.h" #include "transport_manager/usb/libusb/platform_usb_device.h" +#include "transport_manager/usb/usb_control_transfer.h" #include "utils/threads/thread.h" diff --git a/src/components/transport_manager/include/transport_manager/usb/qnx/platform_usb_device.h b/src/components/transport_manager/include/transport_manager/usb/qnx/platform_usb_device.h index 9755a5eacd..738675754d 100644 --- a/src/components/transport_manager/include/transport_manager/usb/qnx/platform_usb_device.h +++ b/src/components/transport_manager/include/transport_manager/usb/qnx/platform_usb_device.h @@ -36,8 +36,8 @@ #ifndef SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_USB_QNX_PLATFORM_USB_DEVICE_H_ #define SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_USB_QNX_PLATFORM_USB_DEVICE_H_ -#include <string> #include <sys/usbdi.h> +#include <string> namespace transport_manager { diff --git a/src/components/transport_manager/include/transport_manager/usb/qnx/usb_connection.h b/src/components/transport_manager/include/transport_manager/usb/qnx/usb_connection.h index e9f7344ee2..ba7e263b4c 100644 --- a/src/components/transport_manager/include/transport_manager/usb/qnx/usb_connection.h +++ b/src/components/transport_manager/include/transport_manager/usb/qnx/usb_connection.h @@ -38,8 +38,8 @@ #include "utils/lock.h" -#include "transport_manager/transport_adapter/transport_adapter_controller.h" #include "transport_manager/transport_adapter/connection.h" +#include "transport_manager/transport_adapter/transport_adapter_controller.h" #include "transport_manager/usb/common.h" namespace transport_manager { diff --git a/src/components/transport_manager/include/transport_manager/usb/qnx/usb_handler.h b/src/components/transport_manager/include/transport_manager/usb/qnx/usb_handler.h index c33e0f2361..53600309ec 100644 --- a/src/components/transport_manager/include/transport_manager/usb/qnx/usb_handler.h +++ b/src/components/transport_manager/include/transport_manager/usb/qnx/usb_handler.h @@ -39,8 +39,8 @@ #include <sys/usbdi.h> #include "transport_manager/transport_adapter/transport_adapter.h" -#include "transport_manager/usb/usb_control_transfer.h" #include "transport_manager/usb/qnx/platform_usb_device.h" +#include "transport_manager/usb/usb_control_transfer.h" namespace transport_manager { diff --git a/src/components/transport_manager/include/transport_manager/usb/usb_control_transfer.h b/src/components/transport_manager/include/transport_manager/usb/usb_control_transfer.h index 850902bea3..a47574353e 100644 --- a/src/components/transport_manager/include/transport_manager/usb/usb_control_transfer.h +++ b/src/components/transport_manager/include/transport_manager/usb/usb_control_transfer.h @@ -100,7 +100,7 @@ class UsbControlTransferSequence { Transfers transfers_; }; -} // namespace -} // namespace +} // namespace transport_adapter +} // namespace transport_manager #endif // SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_USB_USB_CONTROL_TRANSFER_H_ diff --git a/src/components/transport_manager/include/transport_manager/usb/usb_device_scanner.h b/src/components/transport_manager/include/transport_manager/usb/usb_device_scanner.h index a6065de2b2..9d99b1b548 100644 --- a/src/components/transport_manager/include/transport_manager/usb/usb_device_scanner.h +++ b/src/components/transport_manager/include/transport_manager/usb/usb_device_scanner.h @@ -38,9 +38,9 @@ #include <list> -#include "utils/lock.h" #include "transport_manager/transport_adapter/device_scanner.h" #include "transport_manager/usb/common.h" +#include "utils/lock.h" namespace transport_manager { @@ -48,7 +48,8 @@ namespace transport_adapter { class UsbDeviceScanner : public DeviceScanner, public UsbDeviceListener { public: - UsbDeviceScanner(class TransportAdapterController* controller); + UsbDeviceScanner(class TransportAdapterController* controller, + const TransportManagerSettings& settings); virtual ~UsbDeviceScanner(); protected: @@ -65,13 +66,14 @@ class UsbDeviceScanner : public DeviceScanner, public UsbDeviceListener { void SupportedDeviceFound(PlatformUsbDevice* device); TransportAdapterController* controller_; + const TransportManagerSettings& settings_; typedef std::list<PlatformUsbDevice*> Devices; Devices devices_; sync_primitives::Lock devices_mutex_; }; -} // namespace -} // namespace +} // namespace transport_adapter +} // namespace transport_manager #endif // SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_USB_USB_DEVICE_SCANNER_H_ diff --git a/src/components/transport_manager/src/bluetooth/bluetooth_connection_factory.cc b/src/components/transport_manager/src/bluetooth/bluetooth_connection_factory.cc index 62615cb30f..19f4078443 100644 --- a/src/components/transport_manager/src/bluetooth/bluetooth_connection_factory.cc +++ b/src/components/transport_manager/src/bluetooth/bluetooth_connection_factory.cc @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include "transport_manager/transport_adapter/transport_adapter_controller.h" #include "transport_manager/bluetooth/bluetooth_connection_factory.h" #include "transport_manager/bluetooth/bluetooth_socket_connection.h" +#include "transport_manager/transport_adapter/transport_adapter_controller.h" #include "utils/logger.h" namespace transport_manager { diff --git a/src/components/transport_manager/src/bluetooth/bluetooth_device.cc b/src/components/transport_manager/src/bluetooth/bluetooth_device.cc index e7cc3d4f34..734d8fe1e9 100644 --- a/src/components/transport_manager/src/bluetooth/bluetooth_device.cc +++ b/src/components/transport_manager/src/bluetooth/bluetooth_device.cc @@ -36,13 +36,13 @@ #include <bluetooth/bluetooth.h> #include <bluetooth/hci.h> #include <bluetooth/hci_lib.h> +#include <bluetooth/rfcomm.h> #include <bluetooth/sdp.h> #include <bluetooth/sdp_lib.h> -#include <bluetooth/rfcomm.h> #include <errno.h> -#include <sys/types.h> #include <sys/socket.h> +#include <sys/types.h> #include <algorithm> #include <iostream> diff --git a/src/components/transport_manager/src/bluetooth/bluetooth_device_scanner.cc b/src/components/transport_manager/src/bluetooth/bluetooth_device_scanner.cc index 75ea799ce8..4759b2003a 100644 --- a/src/components/transport_manager/src/bluetooth/bluetooth_device_scanner.cc +++ b/src/components/transport_manager/src/bluetooth/bluetooth_device_scanner.cc @@ -38,18 +38,18 @@ #include <bluetooth/bluetooth.h> #include <bluetooth/hci.h> #include <bluetooth/hci_lib.h> +#include <bluetooth/rfcomm.h> #include <bluetooth/sdp.h> #include <bluetooth/sdp_lib.h> -#include <bluetooth/rfcomm.h> #include <errno.h> -#include <sys/types.h> #include <sys/socket.h> #include <sys/time.h> +#include <sys/types.h> #include <unistd.h> -#include <vector> #include <sstream> -#include "transport_manager/bluetooth/bluetooth_transport_adapter.h" +#include <vector> #include "transport_manager/bluetooth/bluetooth_device.h" +#include "transport_manager/bluetooth/bluetooth_transport_adapter.h" #include "utils/logger.h" #include "utils/threads/thread.h" @@ -133,7 +133,27 @@ BluetoothDeviceScanner::BluetoothDeviceScanner( 0xA8}; sdp_uuid128_create(&smart_device_link_service_uuid_, smart_device_link_service_uuid_data); - thread_ = threads::CreateThread("BT Device Scaner", + thread_ = threads::CreateThread("BT Device Scanner", + new BluetoothDeviceScannerDelegate(this)); +} + +BluetoothDeviceScanner::BluetoothDeviceScanner( + TransportAdapterController* controller, + bool auto_repeat_search, + int auto_repeat_pause_sec, + const uint8_t* smart_device_link_service_uuid_data) + : controller_(controller) + , thread_(NULL) + , shutdown_requested_(false) + , ready_(true) + , device_scan_requested_(false) + , device_scan_requested_lock_() + , device_scan_requested_cv_() + , auto_repeat_search_(auto_repeat_search) + , auto_repeat_pause_sec_(auto_repeat_pause_sec) { + sdp_uuid128_create(&smart_device_link_service_uuid_, + smart_device_link_service_uuid_data); + thread_ = threads::CreateThread("BT Device Scanner", new BluetoothDeviceScannerDelegate(this)); } diff --git a/src/components/transport_manager/src/bluetooth/bluetooth_socket_connection.cc b/src/components/transport_manager/src/bluetooth/bluetooth_socket_connection.cc index b4370e4b12..78597ac2ad 100644 --- a/src/components/transport_manager/src/bluetooth/bluetooth_socket_connection.cc +++ b/src/components/transport_manager/src/bluetooth/bluetooth_socket_connection.cc @@ -33,13 +33,13 @@ #include "transport_manager/bluetooth/bluetooth_socket_connection.h" -#include <unistd.h> #include <bluetooth/bluetooth.h> #include <bluetooth/hci.h> #include <bluetooth/hci_lib.h> +#include <bluetooth/rfcomm.h> #include <bluetooth/sdp.h> #include <bluetooth/sdp_lib.h> -#include <bluetooth/rfcomm.h> +#include <unistd.h> #include "transport_manager/bluetooth/bluetooth_device.h" #include "transport_manager/transport_adapter/transport_adapter_controller.h" @@ -93,9 +93,9 @@ bool BluetoothSocketConnection::Establish(ConnectError** error) { do { rfcomm_socket = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM); if (-1 == rfcomm_socket) { - LOG4CXX_ERROR_WITH_ERRNO(logger_, - "Failed to create RFCOMM socket for device " - << device_handle()); + LOG4CXX_ERROR_WITH_ERRNO( + logger_, + "Failed to create RFCOMM socket for device " << device_handle()); *error = new ConnectError(); LOG4CXX_TRACE(logger_, "exit with FALSE"); return false; diff --git a/src/components/transport_manager/src/bluetooth/bluetooth_transport_adapter.cc b/src/components/transport_manager/src/bluetooth/bluetooth_transport_adapter.cc index b373744f79..911658bc56 100644 --- a/src/components/transport_manager/src/bluetooth/bluetooth_transport_adapter.cc +++ b/src/components/transport_manager/src/bluetooth/bluetooth_transport_adapter.cc @@ -34,18 +34,18 @@ */ #include <errno.h> -#include <sys/types.h> #include <sys/socket.h> +#include <sys/types.h> #include <unistd.h> +#include <bluetooth/bluetooth.h> #include <iomanip> #include <set> -#include <bluetooth/bluetooth.h> -#include "transport_manager/bluetooth/bluetooth_transport_adapter.h" -#include "transport_manager/bluetooth/bluetooth_device_scanner.h" #include "transport_manager/bluetooth/bluetooth_connection_factory.h" #include "transport_manager/bluetooth/bluetooth_device.h" +#include "transport_manager/bluetooth/bluetooth_device_scanner.h" +#include "transport_manager/bluetooth/bluetooth_transport_adapter.h" #include "utils/logger.h" @@ -58,11 +58,12 @@ BluetoothTransportAdapter::~BluetoothTransportAdapter() {} BluetoothTransportAdapter::BluetoothTransportAdapter( resumption::LastState& last_state, const TransportManagerSettings& settings) - : TransportAdapterImpl(new BluetoothDeviceScanner(this, true, 0), - new BluetoothConnectionFactory(this), - NULL, - last_state, - settings) {} + : TransportAdapterImpl( + new BluetoothDeviceScanner(this, true, 0, settings.bluetooth_uuid()), + new BluetoothConnectionFactory(this), + NULL, + last_state, + settings) {} DeviceType BluetoothTransportAdapter::GetDeviceType() const { return BLUETOOTH; diff --git a/src/components/transport_manager/src/cloud/cloud_device.cc b/src/components/transport_manager/src/cloud/cloud_device.cc index c1ad186ded..9225589d57 100644 --- a/src/components/transport_manager/src/cloud/cloud_device.cc +++ b/src/components/transport_manager/src/cloud/cloud_device.cc @@ -49,7 +49,7 @@ CloudDevice::CloudDevice(std::string& host, .query = "", .fragment = ""}) {} -CloudDevice::CloudDevice(CloudAppEndpoint endpoint, std::string& name) +CloudDevice::CloudDevice(CloudAppEndpoint& endpoint, std::string& name) : Device(name, std::string(name)), endpoint_(endpoint) {} bool CloudDevice::IsSameAs(const Device* other) const { diff --git a/src/components/transport_manager/src/cloud/cloud_websocket_connection_factory.cc b/src/components/transport_manager/src/cloud/cloud_websocket_connection_factory.cc index 0d9fda6fe5..d072685eef 100644 --- a/src/components/transport_manager/src/cloud/cloud_websocket_connection_factory.cc +++ b/src/components/transport_manager/src/cloud/cloud_websocket_connection_factory.cc @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include "transport_manager/transport_adapter/transport_adapter_controller.h" #include "transport_manager/cloud/cloud_websocket_connection_factory.h" #include "transport_manager/cloud/websocket_client_connection.h" +#include "transport_manager/transport_adapter/transport_adapter_controller.h" #include "utils/logger.h" #include "transport_manager/cloud/cloud_device.h" diff --git a/src/components/transport_manager/src/cloud/websocket_client_connection.cc b/src/components/transport_manager/src/cloud/websocket_client_connection.cc index 1718e5ca1b..794cf57208 100644 --- a/src/components/transport_manager/src/cloud/websocket_client_connection.cc +++ b/src/components/transport_manager/src/cloud/websocket_client_connection.cc @@ -169,9 +169,9 @@ TransportAdapter::Error WebsocketClientConnection::Start() { #endif // ENABLE_SECURITY if (ec) { std::string str_err = "ErrorMessage: " + ec.message(); - LOG4CXX_ERROR(logger_, - "Could not complete handshake with host/port: " << host << ":" - << port); + LOG4CXX_ERROR( + logger_, + "Could not complete handshake with host/port: " << host << ":" << port); LOG4CXX_ERROR(logger_, str_err); return TransportAdapter::FAIL; } @@ -208,9 +208,9 @@ TransportAdapter::Error WebsocketClientConnection::Start() { boost::asio::post(io_pool_, [&]() { ioc_.run(); }); - LOG4CXX_DEBUG(logger_, - "Successfully started websocket connection @: " << host << ":" - << port); + LOG4CXX_DEBUG( + logger_, + "Successfully started websocket connection @: " << host << ":" << port); return TransportAdapter::OK; } @@ -261,7 +261,7 @@ void WebsocketClientConnection::OnRead(boost::system::error_code ec, boost::beast::buffers_front(buffer_.data())); ::protocol_handler::RawMessagePtr frame( - new protocol_handler::RawMessage(0, 0, data, size)); + new protocol_handler::RawMessage(0, 0, data, size, false)); controller_->DataReceiveDone(device_uid_, app_handle_, frame); diff --git a/src/components/transport_manager/src/iap2_emulation/iap2_transport_adapter.cc b/src/components/transport_manager/src/iap2_emulation/iap2_transport_adapter.cc index 31e997f3ba..2e37f76bc9 100644 --- a/src/components/transport_manager/src/iap2_emulation/iap2_transport_adapter.cc +++ b/src/components/transport_manager/src/iap2_emulation/iap2_transport_adapter.cc @@ -32,14 +32,14 @@ #include "transport_manager/iap2_emulation/iap2_transport_adapter.h" -#include <sys/types.h> -#include <sys/stat.h> #include <fcntl.h> -#include <unistd.h> #include <stdio.h> +#include <sys/stat.h> +#include <sys/types.h> +#include <unistd.h> -#include "utils/threads/thread.h" #include "utils/file_system.h" +#include "utils/threads/thread.h" namespace { static const mode_t mode = 0666; @@ -182,5 +182,5 @@ void IAP2USBEmulationTransportAdapter::IAPSignalHandlerDelegate:: run_flag_ = false; ThreadDelegate::exitThreadMain(); } -} -} // namespace transport_manager::transport_adapter +} // namespace transport_adapter +} // namespace transport_manager diff --git a/src/components/transport_manager/src/tcp/platform_specific/linux/platform_specific_network_interface_listener.cc b/src/components/transport_manager/src/tcp/platform_specific/linux/platform_specific_network_interface_listener.cc index 047d43b7bf..2e79e84f2e 100644 --- a/src/components/transport_manager/src/tcp/platform_specific/linux/platform_specific_network_interface_listener.cc +++ b/src/components/transport_manager/src/tcp/platform_specific/linux/platform_specific_network_interface_listener.cc @@ -5,11 +5,11 @@ #include <errno.h> #include <fcntl.h> #include <ifaddrs.h> -#include <unistd.h> #include <net/if.h> -#include <sys/types.h> #include <sys/select.h> #include <sys/socket.h> +#include <sys/types.h> +#include <unistd.h> #include <linux/netlink.h> #include <linux/rtnetlink.h> @@ -105,7 +105,7 @@ PlatformSpecificNetworkInterfaceListener:: bool PlatformSpecificNetworkInterfaceListener::Init() { LOG4CXX_AUTO_TRACE(logger_); - + LOG4CXX_DEBUG(logger_, "Init socket: " << socket_); if (socket_ >= 0) { LOG4CXX_WARN(logger_, "Network interface listener is already initialized"); return false; @@ -151,7 +151,7 @@ bool PlatformSpecificNetworkInterfaceListener::Init() { void PlatformSpecificNetworkInterfaceListener::Deinit() { LOG4CXX_AUTO_TRACE(logger_); - + LOG4CXX_DEBUG(logger_, "Deinit socket: " << socket_); if (socket_ >= 0) { close(socket_); socket_ = -1; @@ -356,7 +356,7 @@ bool PlatformSpecificNetworkInterfaceListener::InitializeStatus() { } #endif // BUILD_TESTS - struct ifaddrs* if_list, *interface; + struct ifaddrs *if_list, *interface; if (getifaddrs(&if_list) != 0) { LOG4CXX_WARN(logger_, "getifaddr failed, interface status won't be available until " @@ -421,9 +421,9 @@ bool PlatformSpecificNetworkInterfaceListener::UpdateStatus( switch (type) { case RTM_NEWLINK: { - LOG4CXX_DEBUG(logger_, - "netlink event: interface " << ifname - << " created or updated"); + LOG4CXX_DEBUG( + logger_, + "netlink event: interface " << ifname << " created or updated"); status.SetFlags(it->flags); break; } diff --git a/src/components/transport_manager/src/tcp/tcp_client_listener.cc b/src/components/transport_manager/src/tcp/tcp_client_listener.cc index 9f2597f0a7..d29ffeb144 100644 --- a/src/components/transport_manager/src/tcp/tcp_client_listener.cc +++ b/src/components/transport_manager/src/tcp/tcp_client_listener.cc @@ -33,35 +33,35 @@ #include "transport_manager/tcp/tcp_client_listener.h" -#include <memory.h> -#include <signal.h> +#include <arpa/inet.h> #include <errno.h> #include <fcntl.h> -#include <arpa/inet.h> -#include <unistd.h> -#include <sys/types.h> +#include <ifaddrs.h> +#include <memory.h> +#include <signal.h> #include <sys/select.h> -#include <sys/sysctl.h> #include <sys/socket.h> -#include <ifaddrs.h> +#include <sys/sysctl.h> +#include <sys/types.h> +#include <unistd.h> #ifdef __linux__ #include <linux/tcp.h> #else // __linux__ -#include <sys/time.h> #include <netinet/in.h> #include <netinet/tcp.h> #include <netinet/tcp_var.h> +#include <sys/time.h> #endif // __linux__ #include <sstream> #include "utils/logger.h" -#include "utils/threads/thread.h" -#include "transport_manager/transport_adapter/transport_adapter_controller.h" #include "transport_manager/tcp/network_interface_listener_impl.h" #include "transport_manager/tcp/tcp_device.h" #include "transport_manager/tcp/tcp_socket_connection.h" +#include "transport_manager/transport_adapter/transport_adapter_controller.h" +#include "utils/threads/thread.h" namespace transport_manager { namespace transport_adapter { @@ -374,17 +374,16 @@ TransportAdapter::Error TcpClientListener::StartListening() { return TransportAdapter::OK; } -void TcpClientListener::ListeningThreadDelegate::exitThreadMain() { - parent_->StopLoop(); -} +TransportAdapter::Error TcpClientListener::ResumeListening() { + LOG4CXX_AUTO_TRACE(logger_); -void TcpClientListener::ListeningThreadDelegate::threadMain() { - parent_->Loop(); -} + interface_listener_->Init(); + StartListeningThread(); + started_ = true; -TcpClientListener::ListeningThreadDelegate::ListeningThreadDelegate( - TcpClientListener* parent) - : parent_(parent) {} + LOG4CXX_INFO(logger_, "Tcp client listener was resumed successfully"); + return TransportAdapter::OK; +} TransportAdapter::Error TcpClientListener::StopListening() { LOG4CXX_AUTO_TRACE(logger_); @@ -398,10 +397,45 @@ TransportAdapter::Error TcpClientListener::StopListening() { StopListeningThread(); started_ = false; - LOG4CXX_INFO(logger_, "Tcp client listener has stopped successfully"); + LOG4CXX_INFO(logger_, "Tcp client listener was stopped successfully"); return TransportAdapter::OK; } +TransportAdapter::Error TcpClientListener::SuspendListening() { + LOG4CXX_AUTO_TRACE(logger_); + if (!started_) { + LOG4CXX_DEBUG(logger_, "TcpClientListener is not running now"); + return TransportAdapter::BAD_STATE; + } + + if (shutdown(socket_, SHUT_RDWR) != 0) { + LOG4CXX_WARN(logger_, "Socket was unable to be shutdowned"); + } + + if (close(socket_) != 0) { + LOG4CXX_ERROR_WITH_ERRNO(logger_, "Failed to close socket"); + } + + interface_listener_->Deinit(); + StopListeningThread(); + started_ = false; + + LOG4CXX_INFO(logger_, "Tcp client listener was suspended"); + return TransportAdapter::OK; +} + +void TcpClientListener::ListeningThreadDelegate::exitThreadMain() { + parent_->StopLoop(); +} + +void TcpClientListener::ListeningThreadDelegate::threadMain() { + parent_->Loop(); +} + +TcpClientListener::ListeningThreadDelegate::ListeningThreadDelegate( + TcpClientListener* parent) + : parent_(parent) {} + TransportAdapter::Error TcpClientListener::StartListeningThread() { LOG4CXX_AUTO_TRACE(logger_); @@ -455,9 +489,9 @@ void TcpClientListener::OnIPAddressUpdated(const std::string ipv4_addr, if (IsListeningOnSpecificInterface()) { if (!current_ip_address_.empty()) { // the server socket is running, terminate it - LOG4CXX_DEBUG(logger_, - "Stopping current TCP server socket on " - << designated_interface_); + LOG4CXX_DEBUG( + logger_, + "Stopping current TCP server socket on " << designated_interface_); StopOnNetworkInterface(); } if (!ipv4_addr.empty()) { @@ -525,9 +559,9 @@ bool TcpClientListener::StopOnNetworkInterface() { socket_ = -1; } - LOG4CXX_INFO(logger_, - "TCP server socket on " << designated_interface_ - << " stopped"); + LOG4CXX_INFO( + logger_, + "TCP server socket on " << designated_interface_ << " stopped"); } return true; } diff --git a/src/components/transport_manager/src/tcp/tcp_connection_factory.cc b/src/components/transport_manager/src/tcp/tcp_connection_factory.cc index e202554f8f..50d1c74fa7 100644 --- a/src/components/transport_manager/src/tcp/tcp_connection_factory.cc +++ b/src/components/transport_manager/src/tcp/tcp_connection_factory.cc @@ -30,9 +30,9 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include "transport_manager/transport_adapter/transport_adapter_controller.h" #include "transport_manager/tcp/tcp_connection_factory.h" #include "transport_manager/tcp/tcp_server_originated_socket_connection.h" +#include "transport_manager/transport_adapter/transport_adapter_controller.h" #include "utils/logger.h" @@ -52,9 +52,9 @@ TransportAdapter::Error TcpConnectionFactory::Init() { TransportAdapter::Error TcpConnectionFactory::CreateConnection( const DeviceUID& device_uid, const ApplicationHandle& app_handle) { LOG4CXX_AUTO_TRACE(logger_); - LOG4CXX_DEBUG(logger_, - "DeviceUID: " << &device_uid - << ", ApplicationHandle: " << &app_handle); + LOG4CXX_DEBUG( + logger_, + "DeviceUID: " << &device_uid << ", ApplicationHandle: " << &app_handle); std::shared_ptr<TcpServerOriginatedSocketConnection> connection = std::make_shared<TcpServerOriginatedSocketConnection>( device_uid, app_handle, controller_); diff --git a/src/components/transport_manager/src/tcp/tcp_device.cc b/src/components/transport_manager/src/tcp/tcp_device.cc index dbcb5d38cb..4542f76c1d 100644 --- a/src/components/transport_manager/src/tcp/tcp_device.cc +++ b/src/components/transport_manager/src/tcp/tcp_device.cc @@ -30,8 +30,8 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ -#include "utils/logger.h" #include "transport_manager/tcp/tcp_device.h" +#include "utils/logger.h" namespace transport_manager { namespace transport_adapter { @@ -57,9 +57,9 @@ TcpDevice::TcpDevice(const in_addr_t& in_addr, LOG4CXX_AUTO_TRACE(logger_); LOG4CXX_DEBUG(logger_, "Device created with transport switch emulation support."); - LOG4CXX_DEBUG(logger_, - "Device parameters: " << device_uid << " / " - << transport_switch_id); + LOG4CXX_DEBUG( + logger_, + "Device parameters: " << device_uid << " / " << transport_switch_id); } #endif // BUILD_TESTS diff --git a/src/components/transport_manager/src/tcp/tcp_server_originated_socket_connection.cc b/src/components/transport_manager/src/tcp/tcp_server_originated_socket_connection.cc index 2f10bd9454..690b2d25b3 100644 --- a/src/components/transport_manager/src/tcp/tcp_server_originated_socket_connection.cc +++ b/src/components/transport_manager/src/tcp/tcp_server_originated_socket_connection.cc @@ -65,9 +65,9 @@ bool TcpServerOriginatedSocketConnection::Establish(ConnectError** error) { const int port = tcp_device->GetApplicationPort(application_handle()); if (-1 == port) { - LOG4CXX_ERROR(logger_, - "Application port for " << application_handle() - << " not found"); + LOG4CXX_ERROR( + logger_, + "Application port for " << application_handle() << " not found"); *error = new ConnectError(); return false; } diff --git a/src/components/transport_manager/src/tcp/tcp_transport_adapter.cc b/src/components/transport_manager/src/tcp/tcp_transport_adapter.cc index b3dbf49628..aeb50f3830 100644 --- a/src/components/transport_manager/src/tcp/tcp_transport_adapter.cc +++ b/src/components/transport_manager/src/tcp/tcp_transport_adapter.cc @@ -32,19 +32,19 @@ #include "transport_manager/tcp/tcp_transport_adapter.h" +#include <errno.h> #include <memory.h> #include <signal.h> -#include <errno.h> #include <stdio.h> #include <cstdlib> #include <sstream> -#include "utils/logger.h" -#include "utils/threads/thread_delegate.h" #include "transport_manager/tcp/tcp_client_listener.h" #include "transport_manager/tcp/tcp_connection_factory.h" #include "transport_manager/tcp/tcp_device.h" +#include "utils/logger.h" +#include "utils/threads/thread_delegate.h" namespace transport_manager { namespace transport_adapter { diff --git a/src/components/transport_manager/src/transport_adapter/threaded_socket_connection.cc b/src/components/transport_manager/src/transport_adapter/threaded_socket_connection.cc index 9d594affe4..96c4c2c370 100644 --- a/src/components/transport_manager/src/transport_adapter/threaded_socket_connection.cc +++ b/src/components/transport_manager/src/transport_adapter/threaded_socket_connection.cc @@ -30,13 +30,13 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include <algorithm> #include <errno.h> #include <fcntl.h> #include <memory.h> -#include <unistd.h> -#include <sys/types.h> #include <sys/socket.h> +#include <sys/types.h> +#include <unistd.h> +#include <algorithm> #include "utils/logger.h" #include "utils/threads/thread.h" @@ -300,11 +300,11 @@ bool ThreadedSocketConnection::Receive() { bytes_read = recv(socket_, buffer, sizeof(buffer), MSG_DONTWAIT); if (bytes_read > 0) { - LOG4CXX_DEBUG(logger_, - "Received " << bytes_read << " bytes for connection " - << this); + LOG4CXX_DEBUG( + logger_, + "Received " << bytes_read << " bytes for connection " << this); ::protocol_handler::RawMessagePtr frame( - new protocol_handler::RawMessage(0, 0, buffer, bytes_read)); + new protocol_handler::RawMessage(0, 0, buffer, bytes_read, false)); controller_->DataReceiveDone( device_handle(), application_handle(), frame); } else if (bytes_read < 0) { diff --git a/src/components/transport_manager/src/transport_adapter/transport_adapter_impl.cc b/src/components/transport_manager/src/transport_adapter/transport_adapter_impl.cc index 865e8d6aa8..f0bfabf2e4 100644 --- a/src/components/transport_manager/src/transport_adapter/transport_adapter_impl.cc +++ b/src/components/transport_manager/src/transport_adapter/transport_adapter_impl.cc @@ -35,11 +35,11 @@ #include "utils/logger.h" #include "utils/timer_task_impl.h" -#include "transport_manager/transport_adapter/transport_adapter_impl.h" -#include "transport_manager/transport_adapter/transport_adapter_listener.h" +#include "transport_manager/transport_adapter/client_connection_listener.h" #include "transport_manager/transport_adapter/device_scanner.h" #include "transport_manager/transport_adapter/server_connection_factory.h" -#include "transport_manager/transport_adapter/client_connection_listener.h" +#include "transport_manager/transport_adapter/transport_adapter_impl.h" +#include "transport_manager/transport_adapter/transport_adapter_listener.h" namespace transport_manager { namespace transport_adapter { @@ -100,16 +100,16 @@ TransportAdapterImpl::~TransportAdapterImpl() { LOG4CXX_DEBUG(logger_, "device_scanner_ deleted."); } if (server_connection_factory_) { - LOG4CXX_DEBUG(logger_, - "Deleting server_connection_factory " - << server_connection_factory_); + LOG4CXX_DEBUG( + logger_, + "Deleting server_connection_factory " << server_connection_factory_); delete server_connection_factory_; LOG4CXX_DEBUG(logger_, "server_connection_factory deleted."); } if (client_connection_listener_) { - LOG4CXX_DEBUG(logger_, - "Deleting client_connection_listener_ " - << client_connection_listener_); + LOG4CXX_DEBUG( + logger_, + "Deleting client_connection_listener_ " << client_connection_listener_); delete client_connection_listener_; LOG4CXX_DEBUG(logger_, "client_connection_listener_ deleted."); } @@ -193,9 +193,9 @@ TransportAdapter::Error TransportAdapterImpl::SearchDevices() { TransportAdapter::Error TransportAdapterImpl::Connect( const DeviceUID& device_id, const ApplicationHandle& app_handle) { - LOG4CXX_TRACE(logger_, - "enter. DeviceUID " << device_id << " ApplicationHandle " - << app_handle); + LOG4CXX_TRACE( + logger_, + "enter. DeviceUID " << device_id << " ApplicationHandle " << app_handle); if (server_connection_factory_ == 0) { LOG4CXX_TRACE(logger_, "exit with NOT_SUPPORTED"); return NOT_SUPPORTED; @@ -339,9 +339,9 @@ void TransportAdapterImpl::ConnectionStatusUpdated(DeviceSptr device, TransportAdapter::Error TransportAdapterImpl::Disconnect( const DeviceUID& device_id, const ApplicationHandle& app_handle) { - LOG4CXX_TRACE(logger_, - "enter. device_id: " << &device_id - << ", device_id: " << &device_id); + LOG4CXX_TRACE( + logger_, + "enter. device_id: " << &device_id << ", device_id: " << &device_id); if (!initialised_) { LOG4CXX_TRACE(logger_, "exit with BAD_STATE"); return BAD_STATE; @@ -418,8 +418,9 @@ TransportAdapter::Error TransportAdapterImpl::SendData( } } -TransportAdapter::Error TransportAdapterImpl::StartClientListening() { - LOG4CXX_TRACE(logger_, "enter"); +TransportAdapter::Error TransportAdapterImpl::ChangeClientListening( + TransportAction required_change) { + LOG4CXX_AUTO_TRACE(logger_); if (client_connection_listener_ == 0) { LOG4CXX_TRACE(logger_, "exit with NOT_SUPPORTED"); return NOT_SUPPORTED; @@ -428,27 +429,43 @@ TransportAdapter::Error TransportAdapterImpl::StartClientListening() { LOG4CXX_TRACE(logger_, "exit with BAD_STATE"); return BAD_STATE; } - TransportAdapter::Error err = client_connection_listener_->StartListening(); - LOG4CXX_TRACE(logger_, "exit with error: " << err); - return err; -} -TransportAdapter::Error TransportAdapterImpl::StopClientListening() { - LOG4CXX_TRACE(logger_, "enter"); - if (client_connection_listener_ == 0) { - LOG4CXX_TRACE(logger_, "exit with NOT_SUPPORTED"); - return NOT_SUPPORTED; - } - if (!client_connection_listener_->IsInitialised()) { - LOG4CXX_TRACE(logger_, "exit with BAD_STATE"); - return BAD_STATE; - } - TransportAdapter::Error err = client_connection_listener_->StopListening(); - sync_primitives::AutoLock locker(devices_mutex_); - for (DeviceMap::iterator it = devices_.begin(); it != devices_.end(); ++it) { - it->second->Stop(); + TransportAdapter::Error err = TransportAdapter::Error::UNKNOWN; + + switch (required_change) { + case transport_manager::TransportAction::kVisibilityOn: + err = client_connection_listener_->StartListening(); + break; + + case transport_manager::TransportAction::kListeningOn: + err = client_connection_listener_->ResumeListening(); + break; + + case transport_manager::TransportAction::kListeningOff: + err = client_connection_listener_->SuspendListening(); + { + sync_primitives::AutoLock locker(devices_mutex_); + for (DeviceMap::iterator it = devices_.begin(); it != devices_.end(); + ++it) { + it->second->Stop(); + } + } + break; + + case transport_manager::TransportAction::kVisibilityOff: + err = client_connection_listener_->StopListening(); + { + sync_primitives::AutoLock locker(devices_mutex_); + for (DeviceMap::iterator it = devices_.begin(); it != devices_.end(); + ++it) { + it->second->Stop(); + } + } + break; + default: + NOTREACHED(); } - LOG4CXX_TRACE(logger_, "exit with error: " << err); + LOG4CXX_TRACE(logger_, "Exit with error: " << err); return err; } @@ -638,9 +655,9 @@ void TransportAdapterImpl::ConnectionCreated( void TransportAdapterImpl::DeviceDisconnected( const DeviceUID& device_handle, const DisconnectDeviceError& error) { const DeviceUID device_uid = device_handle; - LOG4CXX_TRACE(logger_, - "enter. device_handle: " << &device_uid - << ", error: " << &error); + LOG4CXX_TRACE( + logger_, + "enter. device_handle: " << &device_uid << ", error: " << &error); ApplicationList app_list = GetApplicationList(device_uid); for (ApplicationList::const_iterator i = app_list.begin(); i != app_list.end(); @@ -698,9 +715,9 @@ void TransportAdapterImpl::DisconnectDone(const DeviceUID& device_handle, const ApplicationHandle& app_handle) { const DeviceUID device_uid = device_handle; const ApplicationHandle app_uid = app_handle; - LOG4CXX_TRACE(logger_, - "enter. device_id: " << &device_uid - << ", app_handle: " << &app_uid); + LOG4CXX_TRACE( + logger_, + "enter. device_id: " << &device_uid << ", app_handle: " << &app_uid); DeviceSptr device = FindDevice(device_handle); if (!device) { LOG4CXX_WARN(logger_, "Device: uid " << &device_uid << " not found"); @@ -823,9 +840,9 @@ void TransportAdapterImpl::DeviceSwitched(const DeviceUID& device_handle) { ConnectionSPtr TransportAdapterImpl::FindPendingConnection( const DeviceUID& device_id, const ApplicationHandle& app_handle) const { - LOG4CXX_TRACE(logger_, - "enter. device_id: " << &device_id - << ", app_handle: " << &app_handle); + LOG4CXX_TRACE( + logger_, + "enter. device_id: " << &device_id << ", app_handle: " << &app_handle); ConnectionSPtr connection; connections_lock_.AcquireForReading(); ConnectionMap::const_iterator it = @@ -886,9 +903,9 @@ void TransportAdapterImpl::ConnectPending(const DeviceUID& device_id, void TransportAdapterImpl::ConnectDone(const DeviceUID& device_id, const ApplicationHandle& app_handle) { - LOG4CXX_TRACE(logger_, - "enter. device_id: " << &device_id - << ", app_handle: " << &app_handle); + LOG4CXX_TRACE( + logger_, + "enter. device_id: " << &device_id << ", app_handle: " << &app_handle); connections_lock_.AcquireForReading(); ConnectionMap::iterator it_conn = connections_.find(std::make_pair(device_id, app_handle)); @@ -975,9 +992,9 @@ ApplicationList TransportAdapterImpl::GetApplicationList( void TransportAdapterImpl::ConnectionFinished( const DeviceUID& device_id, const ApplicationHandle& app_handle) { - LOG4CXX_TRACE(logger_, - "enter. device_id: " << &device_id - << ", app_handle: " << &app_handle); + LOG4CXX_TRACE( + logger_, + "enter. device_id: " << &device_id << ", app_handle: " << &app_handle); connections_lock_.AcquireForReading(); ConnectionMap::iterator it = connections_.find(std::make_pair(device_id, app_handle)); @@ -1101,9 +1118,9 @@ bool TransportAdapterImpl::ToBeAutoDisconnected(DeviceSptr device) const { ConnectionSPtr TransportAdapterImpl::FindEstablishedConnection( const DeviceUID& device_id, const ApplicationHandle& app_handle) const { - LOG4CXX_TRACE(logger_, - "enter. device_id: " << &device_id - << ", app_handle: " << &app_handle); + LOG4CXX_TRACE( + logger_, + "enter. device_id: " << &device_id << ", app_handle: " << &app_handle); ConnectionSPtr connection; connections_lock_.AcquireForReading(); ConnectionMap::const_iterator it = diff --git a/src/components/transport_manager/src/transport_adapter/transport_adapter_listener_impl.cc b/src/components/transport_manager/src/transport_adapter/transport_adapter_listener_impl.cc index 4ef685adbc..bf2d3dbdf4 100644 --- a/src/components/transport_manager/src/transport_adapter/transport_adapter_listener_impl.cc +++ b/src/components/transport_manager/src/transport_adapter/transport_adapter_listener_impl.cc @@ -34,9 +34,9 @@ #include "utils/logger.h" +#include "transport_manager/transport_adapter/transport_adapter_event.h" #include "transport_manager/transport_adapter/transport_adapter_listener_impl.h" #include "transport_manager/transport_manager_impl.h" -#include "transport_manager/transport_adapter/transport_adapter_event.h" namespace transport_manager { CREATE_LOGGERPTR_GLOBAL(logger_, "TransportManager") diff --git a/src/components/transport_manager/src/transport_manager_impl.cc b/src/components/transport_manager/src/transport_manager_impl.cc index 0c49401c80..07dd35bc2f 100644 --- a/src/components/transport_manager/src/transport_manager_impl.cc +++ b/src/components/transport_manager/src/transport_manager_impl.cc @@ -33,28 +33,28 @@ #include "transport_manager/transport_manager_impl.h" #include <stdint.h> +#include <algorithm> #include <cstring> +#include <functional> +#include <iostream> +#include <limits> #include <queue> #include <set> -#include <algorithm> -#include <limits> -#include <functional> #include <sstream> -#include <iostream> -#include "utils/macro.h" #include "utils/logger.h" +#include "utils/macro.h" -#include "utils/timer_task_impl.h" -#include "transport_manager/common.h" -#include "transport_manager/transport_manager_listener.h" -#include "transport_manager/transport_manager_listener_empty.h" -#include "transport_manager/transport_adapter/transport_adapter.h" +#include "config_profile/profile.h" #if defined(CLOUD_APP_WEBSOCKET_TRANSPORT_SUPPORT) #include "transport_manager/cloud/cloud_websocket_transport_adapter.h" #endif +#include "transport_manager/common.h" +#include "transport_manager/transport_adapter/transport_adapter.h" #include "transport_manager/transport_adapter/transport_adapter_event.h" -#include "config_profile/profile.h" +#include "transport_manager/transport_manager_listener.h" +#include "transport_manager/transport_manager_listener_empty.h" +#include "utils/timer_task_impl.h" using ::transport_manager::transport_adapter::TransportAdapter; @@ -67,6 +67,7 @@ struct ConnectionFinder { return id_ == connection.id; } }; + } // namespace namespace transport_manager { @@ -100,7 +101,10 @@ TransportManagerImpl::TransportManagerImpl( , device_switch_timer_( "Device reconection timer", new timer::TimerTaskImpl<TransportManagerImpl>( - this, &TransportManagerImpl::ReconnectionTimeout)) { + this, &TransportManagerImpl::ReconnectionTimeout)) + , events_processing_is_active_(true) + , events_processing_lock_() + , events_processing_cond_var_() { LOG4CXX_TRACE(logger_, "TransportManager has created"); } @@ -379,9 +383,9 @@ int TransportManagerImpl::Stop() { int TransportManagerImpl::SendMessageToDevice( const ::protocol_handler::RawMessagePtr message) { LOG4CXX_TRACE(logger_, "enter. RawMessageSptr: " << message); - LOG4CXX_INFO(logger_, - "Send message to device called with arguments " - << message.get()); + LOG4CXX_INFO( + logger_, + "Send message to device called with arguments " << message.get()); if (false == this->is_initialized_) { LOG4CXX_ERROR(logger_, "TM is not initialized."); LOG4CXX_TRACE(logger_, @@ -586,21 +590,36 @@ int TransportManagerImpl::Init(resumption::LastState& last_state) { return E_SUCCESS; } -int TransportManagerImpl::Reinit() { +void TransportManagerImpl::Deinit() { LOG4CXX_AUTO_TRACE(logger_); DisconnectAllDevices(); TerminateAllAdapters(); device_to_adapter_map_.clear(); connection_id_counter_ = 0; +} + +int TransportManagerImpl::Reinit() { int ret = InitAllAdapters(); return ret; } -int TransportManagerImpl::Visibility(const bool& on_off) const { - LOG4CXX_TRACE(logger_, "enter. On_off: " << &on_off); - TransportAdapter::Error ret; +void TransportManagerImpl::StopEventsProcessing() { + LOG4CXX_AUTO_TRACE(logger_); + events_processing_is_active_ = false; +} - LOG4CXX_DEBUG(logger_, "Visibility change requested to " << on_off); +void TransportManagerImpl::StartEventsProcessing() { + LOG4CXX_AUTO_TRACE(logger_); + events_processing_is_active_ = true; + events_processing_cond_var_.Broadcast(); +} + +int TransportManagerImpl::PerformActionOnClients( + const TransportAction required_action) const { + LOG4CXX_TRACE(logger_, + "The following action requested: " + << static_cast<int>(required_action) + << " to be performed on connected clients"); if (!is_initialized_) { LOG4CXX_ERROR(logger_, "TM is not initialized"); LOG4CXX_TRACE(logger_, @@ -609,21 +628,19 @@ int TransportManagerImpl::Visibility(const bool& on_off) const { return E_TM_IS_NOT_INITIALIZED; } - for (std::vector<TransportAdapter*>::const_iterator it = - transport_adapters_.begin(); - it != transport_adapters_.end(); - ++it) { - if (on_off) { - ret = (*it)->StartClientListening(); - } else { - ret = (*it)->StopClientListening(); - } + TransportAdapter::Error ret = TransportAdapter::Error::UNKNOWN; + + for (auto adapter_ptr : transport_adapters_) { + ret = adapter_ptr->ChangeClientListening(required_action); + if (TransportAdapter::Error::NOT_SUPPORTED == ret) { LOG4CXX_DEBUG(logger_, - "Visibility change is not supported for adapter " - << *it << "[" << (*it)->GetDeviceType() << "]"); + "Requested action on client is not supported for adapter " + << adapter_ptr << "[" << adapter_ptr->GetDeviceType() + << "]"); } } + LOG4CXX_TRACE(logger_, "exit with E_SUCCESS"); return E_SUCCESS; } @@ -781,9 +798,9 @@ TransportManagerImpl::ConnectionInternal* TransportManagerImpl::GetActiveConnection( const DeviceUID& device, const ApplicationHandle& application) { LOG4CXX_AUTO_TRACE(logger_); - LOG4CXX_DEBUG(logger_, - "DeviceUID: " << device - << " ApplicationHandle: " << application); + LOG4CXX_DEBUG( + logger_, + "DeviceUID: " << device << " ApplicationHandle: " << application); for (std::vector<ConnectionInternal>::iterator it = connections_.begin(); it != connections_.end(); ++it) { @@ -932,9 +949,9 @@ bool TransportManagerImpl::UpdateDeviceMapping( item = device_to_adapter_map_.begin(); } - LOG4CXX_DEBUG(logger_, - "After cleanup. Device map size is " - << device_to_adapter_map_.size()); + LOG4CXX_DEBUG( + logger_, + "After cleanup. Device map size is " << device_to_adapter_map_.size()); for (DeviceList::const_iterator it = adapter_device_list.begin(); it != adapter_device_list.end(); @@ -944,10 +961,10 @@ bool TransportManagerImpl::UpdateDeviceMapping( device_to_adapter_map_.insert(std::make_pair(device_uid, ta)); if (!result.second) { LOG4CXX_WARN(logger_, - "Device UID " - << device_uid - << " is known already. Processing skipped." - "Connection type is: " << ta->GetConnectionType()); + "Device UID " << device_uid + << " is known already. Processing skipped." + "Connection type is: " + << ta->GetConnectionType()); continue; } DeviceHandle device_handle = @@ -959,9 +976,9 @@ bool TransportManagerImpl::UpdateDeviceMapping( RaiseEvent(&TransportManagerListener::OnDeviceFound, info); } - LOG4CXX_DEBUG(logger_, - "After update. Device map size is " - << device_to_adapter_map_.size()); + LOG4CXX_DEBUG( + logger_, + "After update. Device map size is " << device_to_adapter_map_.size()); return true; } @@ -987,6 +1004,13 @@ void TransportManagerImpl::OnDeviceListUpdated(TransportAdapter* ta) { void TransportManagerImpl::Handle(TransportAdapterEvent event) { LOG4CXX_TRACE(logger_, "enter"); + + if (!events_processing_is_active_) { + LOG4CXX_DEBUG(logger_, "Waiting for events handling unlock"); + sync_primitives::AutoLock auto_lock(events_processing_lock_); + events_processing_cond_var_.Wait(auto_lock); + } + switch (event.event_type) { case EventTypeEnum::ON_SEARCH_DONE: { RaiseEvent(&TransportManagerListener::OnScanDevicesFinished); @@ -1297,6 +1321,13 @@ void TransportManagerImpl::SetTelemetryObserver(TMTelemetryObserver* observer) { void TransportManagerImpl::Handle(::protocol_handler::RawMessagePtr msg) { LOG4CXX_TRACE(logger_, "enter"); + + if (!events_processing_is_active_) { + LOG4CXX_DEBUG(logger_, "Waiting for events handling unlock"); + sync_primitives::AutoLock auto_lock(events_processing_lock_); + events_processing_cond_var_.Wait(auto_lock); + } + sync_primitives::AutoReadLock lock(connections_lock_); ConnectionInternal* connection = GetConnection(msg->connection_key()); if (connection == NULL) { diff --git a/src/components/transport_manager/src/usb/libusb/platform_usb_device.cc b/src/components/transport_manager/src/usb/libusb/platform_usb_device.cc index 33709cf0f6..7d7fb49e6e 100644 --- a/src/components/transport_manager/src/usb/libusb/platform_usb_device.cc +++ b/src/components/transport_manager/src/usb/libusb/platform_usb_device.cc @@ -83,5 +83,5 @@ std::string PlatformUsbDevice::GetSerialNumber() const { return GetDescString(device_descriptor_.iSerialNumber); } -} // namespace -} // namespace +} // namespace transport_adapter +} // namespace transport_manager diff --git a/src/components/transport_manager/src/usb/libusb/usb_connection.cc b/src/components/transport_manager/src/usb/libusb/usb_connection.cc index 212e6e0ec3..9f57df499e 100644 --- a/src/components/transport_manager/src/usb/libusb/usb_connection.cc +++ b/src/components/transport_manager/src/usb/libusb/usb_connection.cc @@ -38,8 +38,8 @@ #include <sstream> -#include "transport_manager/usb/libusb/usb_connection.h" #include "transport_manager/transport_adapter/transport_adapter_impl.h" +#include "transport_manager/usb/libusb/usb_connection.h" #include "utils/logger.h" @@ -137,7 +137,7 @@ void UsbConnection::OnInTransfer(libusb_transfer* transfer) { << transfer->actual_length << ", data:" << hex_data(transfer->buffer, transfer->actual_length)); ::protocol_handler::RawMessagePtr data(new protocol_handler::RawMessage( - 0, 0, in_buffer_, transfer->actual_length)); + 0, 0, in_buffer_, transfer->actual_length, false)); controller_->DataReceiveDone(device_uid_, app_handle_, data); } else { LOG4CXX_ERROR(logger_, diff --git a/src/components/transport_manager/src/usb/libusb/usb_handler.cc b/src/components/transport_manager/src/usb/libusb/usb_handler.cc index c62e80d1be..975f71e84c 100644 --- a/src/components/transport_manager/src/usb/libusb/usb_handler.cc +++ b/src/components/transport_manager/src/usb/libusb/usb_handler.cc @@ -33,14 +33,14 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include <cstring> #include <cstdlib> +#include <cstring> -#include "transport_manager/usb/common.h" #include "transport_manager/transport_adapter/transport_adapter_impl.h" +#include "transport_manager/usb/common.h" -#include "utils/macro.h" #include "utils/logger.h" +#include "utils/macro.h" #include "utils/threads/thread.h" namespace transport_manager { @@ -90,20 +90,20 @@ UsbHandler::UsbHandler() UsbHandler::~UsbHandler() { shutdown_requested_ = true; - if (libusb_context_ != 0) { + thread_->stop(); + LOG4CXX_INFO(logger_, "UsbHandler thread finished"); + if (libusb_context_ != 0) { // This wakes up libusb_handle_events() libusb_hotplug_deregister_callback(libusb_context_, arrived_callback_handle_); libusb_hotplug_deregister_callback(libusb_context_, left_callback_handle_); } - thread_->stop(); - LOG4CXX_INFO(logger_, "UsbHandler thread finished"); + thread_->join(); + delete thread_->delegate(); + threads::DeleteThread(thread_); if (libusb_context_) { libusb_exit(libusb_context_); libusb_context_ = 0; } - thread_->join(); - delete thread_->delegate(); - threads::DeleteThread(thread_); } void UsbHandler::DeviceArrived(libusb_device* device_libusb) { diff --git a/src/components/transport_manager/src/usb/qnx/platform_usb_device.cc b/src/components/transport_manager/src/usb/qnx/platform_usb_device.cc index e85ab12b10..bb6e341659 100644 --- a/src/components/transport_manager/src/usb/qnx/platform_usb_device.cc +++ b/src/components/transport_manager/src/usb/qnx/platform_usb_device.cc @@ -76,5 +76,5 @@ std::string PlatformUsbDevice::GetSerialNumber() const { return GetDescString(device_descriptor_.iSerialNumber); } -} // namespace -} // namespace +} // namespace transport_adapter +} // namespace transport_manager diff --git a/src/components/transport_manager/src/usb/qnx/usb_connection.cc b/src/components/transport_manager/src/usb/qnx/usb_connection.cc index b9386c5d9f..2945639ce9 100644 --- a/src/components/transport_manager/src/usb/qnx/usb_connection.cc +++ b/src/components/transport_manager/src/usb/qnx/usb_connection.cc @@ -37,8 +37,8 @@ #include <sched.h> #include <cstring> -#include "transport_manager/usb/qnx/usb_connection.h" #include "transport_manager/transport_adapter/transport_adapter_impl.h" +#include "transport_manager/usb/qnx/usb_connection.h" #include "utils/logger.h" @@ -144,7 +144,7 @@ void UsbConnection::OnInTransfer(usbd_urb* urb) { device_uid_, app_handle_, DataReceiveError()); } else { ::protocol_handler::RawMessagePtr msg( - new protocol_handler::RawMessage(0, 0, in_buffer_, len)); + new protocol_handler::RawMessage(0, 0, in_buffer_, len, false)); controller_->DataReceiveDone(device_uid_, app_handle_, msg); } diff --git a/src/components/transport_manager/src/usb/qnx/usb_handler.cc b/src/components/transport_manager/src/usb/qnx/usb_handler.cc index 2336a05f16..9ac4a40d92 100644 --- a/src/components/transport_manager/src/usb/qnx/usb_handler.cc +++ b/src/components/transport_manager/src/usb/qnx/usb_handler.cc @@ -35,11 +35,11 @@ #include <errno.h> -#include <cstring> #include <cstdlib> +#include <cstring> -#include "transport_manager/usb/common.h" #include "transport_manager/transport_adapter/transport_adapter_impl.h" +#include "transport_manager/usb/common.h" #include "utils/logger.h" @@ -321,5 +321,5 @@ TransportAdapter::Error UsbHandler::Init() { return TransportAdapter::OK; } -} // namespace -} // namespace +} // namespace transport_adapter +} // namespace transport_manager diff --git a/src/components/transport_manager/src/usb/usb_aoa_adapter.cc b/src/components/transport_manager/src/usb/usb_aoa_adapter.cc index b7faf1ef6b..d1e9c64c3b 100644 --- a/src/components/transport_manager/src/usb/usb_aoa_adapter.cc +++ b/src/components/transport_manager/src/usb/usb_aoa_adapter.cc @@ -34,9 +34,9 @@ */ #include "transport_manager/usb/usb_aoa_adapter.h" -#include "transport_manager/usb/usb_device_scanner.h" -#include "transport_manager/usb/usb_connection_factory.h" #include "transport_manager/usb/common.h" +#include "transport_manager/usb/usb_connection_factory.h" +#include "transport_manager/usb/usb_device_scanner.h" #include "utils/logger.h" namespace transport_manager { @@ -45,7 +45,7 @@ namespace transport_adapter { CREATE_LOGGERPTR_GLOBAL(logger_, "TransportManager") UsbAoaAdapter::UsbAoaAdapter(resumption::LastState& last_state, const TransportManagerSettings& settings) - : TransportAdapterImpl(new UsbDeviceScanner(this), + : TransportAdapterImpl(new UsbDeviceScanner(this, settings), new UsbConnectionFactory(this), NULL, last_state, diff --git a/src/components/transport_manager/src/usb/usb_connection_factory.cc b/src/components/transport_manager/src/usb/usb_connection_factory.cc index 528855cd50..401dde2534 100644 --- a/src/components/transport_manager/src/usb/usb_connection_factory.cc +++ b/src/components/transport_manager/src/usb/usb_connection_factory.cc @@ -31,8 +31,8 @@ */ #include "transport_manager/usb/usb_connection_factory.h" -#include "transport_manager/usb/usb_device.h" #include "transport_manager/transport_adapter/transport_adapter_impl.h" +#include "transport_manager/usb/usb_device.h" #include "utils/logger.h" #if defined(__QNXNTO__) diff --git a/src/components/transport_manager/src/usb/usb_device_scanner.cc b/src/components/transport_manager/src/usb/usb_device_scanner.cc index 092fd29f1a..51d521c1bf 100644 --- a/src/components/transport_manager/src/usb/usb_device_scanner.cc +++ b/src/components/transport_manager/src/usb/usb_device_scanner.cc @@ -33,9 +33,9 @@ #include <sstream> #include "transport_manager/transport_adapter/transport_adapter_impl.h" -#include "transport_manager/usb/usb_device_scanner.h" -#include "transport_manager/usb/usb_device.h" #include "transport_manager/usb/common.h" +#include "transport_manager/usb/usb_device.h" +#include "transport_manager/usb/usb_device_scanner.h" #include "utils/logger.h" @@ -47,6 +47,7 @@ CREATE_LOGGERPTR_GLOBAL(logger_, "TransportManager") class AoaInitSequence : public UsbControlTransferSequence { public: AoaInitSequence(); + AoaInitSequence(const TransportManagerSettings& settings); virtual ~AoaInitSequence() {} private: @@ -86,8 +87,9 @@ void UsbDeviceScanner::OnDeviceLeft(PlatformUsbDevice* device) { } } -UsbDeviceScanner::UsbDeviceScanner(TransportAdapterController* controller) - : controller_(controller) {} +UsbDeviceScanner::UsbDeviceScanner(TransportAdapterController* controller, + const TransportManagerSettings& settings) + : controller_(controller), settings_(settings) {} UsbDeviceScanner::~UsbDeviceScanner() {} @@ -171,28 +173,29 @@ class AoaInitSequence::AoaTurnIntoAccessoryMode : public UsbControlOutTransfer { } }; -static char manufacturer[] = "SDL"; -static char model_name[] = "Core"; -static char description[] = "SmartDeviceLink Core Component USB"; -static char version[] = "1.0"; -static char uri[] = "http://www.smartdevicelink.org"; -static char serial_num[] = "N000000"; - -AoaInitSequence::AoaInitSequence() : UsbControlTransferSequence() { +AoaInitSequence::AoaInitSequence(const TransportManagerSettings& settings) + : UsbControlTransferSequence() { + auto manufacturer = settings.aoa_filter_manufacturer().c_str(); + auto model_name = settings.aoa_filter_model_name().c_str(); + auto description = settings.aoa_filter_description().c_str(); + auto version = settings.aoa_filter_version().c_str(); + auto uri = settings.aoa_filter_uri().c_str(); + auto serial_num = settings.aoa_filter_serial_number().c_str(); AddTransfer(new AoaGetProtocolRequest); - AddTransfer(new AoaSendIdString(0, manufacturer, sizeof(manufacturer))); - AddTransfer(new AoaSendIdString(1, model_name, sizeof(model_name))); - AddTransfer(new AoaSendIdString(2, description, sizeof(description))); - AddTransfer(new AoaSendIdString(3, version, sizeof(version))); - AddTransfer(new AoaSendIdString(4, uri, sizeof(uri))); - AddTransfer(new AoaSendIdString(5, serial_num, sizeof(serial_num))); + AddTransfer(new AoaSendIdString(0, manufacturer, strlen(manufacturer))); + AddTransfer(new AoaSendIdString(1, model_name, strlen(model_name))); + AddTransfer(new AoaSendIdString(2, description, strlen(description))); + AddTransfer(new AoaSendIdString(3, version, strlen(version))); + AddTransfer(new AoaSendIdString(4, uri, strlen(uri))); + AddTransfer(new AoaSendIdString(5, serial_num, strlen(serial_num))); AddTransfer(new AoaTurnIntoAccessoryMode); } void UsbDeviceScanner::TurnIntoAccessoryMode(PlatformUsbDevice* device) { LOG4CXX_AUTO_TRACE(logger_); LOG4CXX_DEBUG(logger_, "PlatformUsbDevice: " << device); - GetUsbHandler()->StartControlTransferSequence(new AoaInitSequence, device); + GetUsbHandler()->StartControlTransferSequence(new AoaInitSequence(settings_), + device); } void UsbDeviceScanner::SupportedDeviceFound(PlatformUsbDevice* device) { @@ -247,5 +250,5 @@ bool UsbDeviceScanner::IsInitialised() const { return true; } -} // namespace -} // namespace +} // namespace transport_adapter +} // namespace transport_manager diff --git a/src/components/transport_manager/test/include/transport_manager/cloud/sample_websocket_server.h b/src/components/transport_manager/test/include/transport_manager/cloud/sample_websocket_server.h index f785263c98..a8b801c1fe 100644 --- a/src/components/transport_manager/test/include/transport_manager/cloud/sample_websocket_server.h +++ b/src/components/transport_manager/test/include/transport_manager/cloud/sample_websocket_server.h @@ -159,4 +159,4 @@ class WSSSession { } // namespace websocket } // namespace sample -#endif // SRC_COMPONENTS_TRANSPORT_MANAGER_TEST_INCLUDE_TRANSPORT_MANAGER_CLOUD_SAMPLE_WEBSOCKET_SERVER_H_
\ No newline at end of file +#endif // SRC_COMPONENTS_TRANSPORT_MANAGER_TEST_INCLUDE_TRANSPORT_MANAGER_CLOUD_SAMPLE_WEBSOCKET_SERVER_H_ diff --git a/src/components/transport_manager/test/include/transport_manager/mock_transport_manager_impl.h b/src/components/transport_manager/test/include/transport_manager/mock_transport_manager_impl.h index e94586a856..758d22dae2 100644 --- a/src/components/transport_manager/test/include/transport_manager/mock_transport_manager_impl.h +++ b/src/components/transport_manager/test/include/transport_manager/mock_transport_manager_impl.h @@ -33,10 +33,10 @@ #ifndef SRC_COMPONENTS_TRANSPORT_MANAGER_TEST_INCLUDE_TRANSPORT_MANAGER_MOCK_TRANSPORT_MANAGER_IMPL_H_ #define SRC_COMPONENTS_TRANSPORT_MANAGER_TEST_INCLUDE_TRANSPORT_MANAGER_MOCK_TRANSPORT_MANAGER_IMPL_H_ -#include "gmock/gmock.h" #include "config_profile/profile.h" -#include "transport_manager/transport_manager_impl.h" +#include "gmock/gmock.h" #include "transport_manager/mock_transport_manager_settings.h" +#include "transport_manager/transport_manager_impl.h" #include "transport_manager/transport_manager_settings.h" namespace test { diff --git a/src/components/transport_manager/test/include/transport_manager/mock_transport_manager_listener.h b/src/components/transport_manager/test/include/transport_manager/mock_transport_manager_listener.h index 4eaf34d041..0c9ca959e9 100644 --- a/src/components/transport_manager/test/include/transport_manager/mock_transport_manager_listener.h +++ b/src/components/transport_manager/test/include/transport_manager/mock_transport_manager_listener.h @@ -33,10 +33,10 @@ #ifndef SRC_COMPONENTS_TRANSPORT_MANAGER_TEST_INCLUDE_TRANSPORT_MANAGER_MOCK_TRANSPORT_MANAGER_LISTENER_H_ #define SRC_COMPONENTS_TRANSPORT_MANAGER_TEST_INCLUDE_TRANSPORT_MANAGER_MOCK_TRANSPORT_MANAGER_LISTENER_H_ -#include <vector> #include <gmock/gmock.h> -#include "transport_manager/transport_manager_listener.h" +#include <vector> #include "protocol/raw_message.h" +#include "transport_manager/transport_manager_listener.h" namespace test { namespace components { diff --git a/src/components/transport_manager/test/include/transport_manager/raw_message_matcher.h b/src/components/transport_manager/test/include/transport_manager/raw_message_matcher.h index 9c7327e6fb..2ee699096f 100644 --- a/src/components/transport_manager/test/include/transport_manager/raw_message_matcher.h +++ b/src/components/transport_manager/test/include/transport_manager/raw_message_matcher.h @@ -38,8 +38,8 @@ #include <gmock/gmock.h> -#include "transport_manager/common.h" #include "protocol/common.h" +#include "transport_manager/common.h" using ::testing::Matcher; using ::testing::MatcherInterface; diff --git a/src/components/transport_manager/test/include/transport_manager/tcp/mock_tcp_transport_adapter.h b/src/components/transport_manager/test/include/transport_manager/tcp/mock_tcp_transport_adapter.h index 432e4f3fa0..daa9397b7d 100644 --- a/src/components/transport_manager/test/include/transport_manager/tcp/mock_tcp_transport_adapter.h +++ b/src/components/transport_manager/test/include/transport_manager/tcp/mock_tcp_transport_adapter.h @@ -34,6 +34,7 @@ #define SRC_COMPONENTS_TRANSPORT_MANAGER_TEST_INCLUDE_TRANSPORT_MANAGER_TCP_MOCK_TCP_TRANSPORT_ADAPTER_H_ #include "gmock/gmock.h" +#include "transport_manager/common.h" #include "transport_manager/tcp/tcp_transport_adapter.h" #include "transport_manager/transport_manager_settings.h" @@ -50,14 +51,18 @@ class MockTCPTransportAdapter : public TcpTransportAdapter { resumption::LastState& last_state, const transport_manager::TransportManagerSettings& settings) : TcpTransportAdapter(port, last_state, settings) {} - MOCK_CONST_METHOD2(FindEstablishedConnection, - ConnectionSPtr(const DeviceUID& device_handle, - const ApplicationHandle& app_handle)); + MOCK_CONST_METHOD2( + FindEstablishedConnection, + ConnectionSPtr(const transport_manager::DeviceUID& device_handle, + const transport_manager::ApplicationHandle& app_handle)); - MOCK_CONST_METHOD1(FindDevice, DeviceSptr(const DeviceUID& device_handle)); + MOCK_CONST_METHOD1( + FindDevice, + DeviceSptr(const transport_manager::DeviceUID& device_handle)); MOCK_METHOD2(Connect, - TransportAdapter::Error(const DeviceUID& device_handle, - const ApplicationHandle& app_handle)); + TransportAdapter::Error( + const transport_manager::DeviceUID& device_handle, + const transport_manager::ApplicationHandle& app_handle)); void CallStore() { Store(); } diff --git a/src/components/transport_manager/test/include/transport_manager/transport_adapter/mock_client_connection_listener.h b/src/components/transport_manager/test/include/transport_manager/transport_adapter/mock_client_connection_listener.h index 0f6f1e9f14..6d451294de 100644 --- a/src/components/transport_manager/test/include/transport_manager/transport_adapter/mock_client_connection_listener.h +++ b/src/components/transport_manager/test/include/transport_manager/transport_adapter/mock_client_connection_listener.h @@ -51,6 +51,12 @@ class MockClientConnectionListener StartListening, ::transport_manager::transport_adapter::TransportAdapter::Error()); MOCK_METHOD0( + SuspendListening, + ::transport_manager::transport_adapter::TransportAdapter::Error()); + MOCK_METHOD0( + ResumeListening, + ::transport_manager::transport_adapter::TransportAdapter::Error()); + MOCK_METHOD0( StopListening, ::transport_manager::transport_adapter::TransportAdapter::Error()); }; diff --git a/src/components/transport_manager/test/include/transport_manager/transport_adapter/mock_transport_adapter_impl.h b/src/components/transport_manager/test/include/transport_manager/transport_adapter/mock_transport_adapter_impl.h index 3a1422cee1..592ed855cc 100644 --- a/src/components/transport_manager/test/include/transport_manager/transport_adapter/mock_transport_adapter_impl.h +++ b/src/components/transport_manager/test/include/transport_manager/transport_adapter/mock_transport_adapter_impl.h @@ -34,19 +34,19 @@ #define SRC_COMPONENTS_TRANSPORT_MANAGER_TEST_INCLUDE_TRANSPORT_MANAGER_TRANSPORT_ADAPTER_MOCK_TRANSPORT_ADAPTER_IMPL_H_ #include "gmock/gmock.h" -#include "transport_manager/transport_manager_settings.h" -#include "transport_manager/transport_adapter/transport_adapter_impl.h" -#include "transport_manager/transport_adapter/device.h" #include "transport_manager/common.h" +#include "transport_manager/transport_adapter/device.h" +#include "transport_manager/transport_adapter/transport_adapter_impl.h" +#include "transport_manager/transport_manager_settings.h" -using ::transport_manager::transport_adapter::TransportAdapterImpl; -using ::transport_manager::transport_adapter::DeviceScanner; -using ::transport_manager::transport_adapter::ServerConnectionFactory; +using ::transport_manager::ApplicationHandle; +using ::transport_manager::DeviceUID; using ::transport_manager::transport_adapter::ClientConnectionListener; -using ::transport_manager::transport_adapter::DeviceType; using ::transport_manager::transport_adapter::ConnectionSPtr; -using ::transport_manager::DeviceUID; -using ::transport_manager::ApplicationHandle; +using ::transport_manager::transport_adapter::DeviceScanner; +using ::transport_manager::transport_adapter::DeviceType; +using ::transport_manager::transport_adapter::ServerConnectionFactory; +using ::transport_manager::transport_adapter::TransportAdapterImpl; namespace test { namespace components { diff --git a/src/components/transport_manager/test/network_interface_listener_test.cc b/src/components/transport_manager/test/network_interface_listener_test.cc index 55a35fb4ea..c6e007b62a 100644 --- a/src/components/transport_manager/test/network_interface_listener_test.cc +++ b/src/components/transport_manager/test/network_interface_listener_test.cc @@ -3,8 +3,8 @@ #include <time.h> #include "gtest/gtest.h" -#include "transport_manager/tcp/network_interface_listener_impl.h" #include "transport_manager/tcp/mock_tcp_client_listener.h" +#include "transport_manager/tcp/network_interface_listener_impl.h" #include "utils/test_async_waiter.h" #include "utils/threads/thread.h" @@ -15,7 +15,7 @@ namespace transport_manager_test { namespace { const long kThreadStartWaitMsec = 10; const uint32_t kStartNotificationTimeoutMsec = 500; -} +} // namespace using ::testing::_; using ::testing::AtLeast; diff --git a/src/components/transport_manager/test/platform_specific/linux/linux_network_interface_listener_test.cc b/src/components/transport_manager/test/platform_specific/linux/linux_network_interface_listener_test.cc index da58466c29..97c8fac9c9 100644 --- a/src/components/transport_manager/test/platform_specific/linux/linux_network_interface_listener_test.cc +++ b/src/components/transport_manager/test/platform_specific/linux/linux_network_interface_listener_test.cc @@ -15,7 +15,7 @@ namespace transport_manager_test { namespace { const long kThreadStartWaitMsec = 10; const uint32_t kStartNotificationTimeoutMsec = 500; -} +} // namespace using ::testing::_; using ::testing::AtLeast; @@ -207,7 +207,8 @@ TEST_F(NetworkInterfaceListenerTest, DesignatedInterface_IPAddressChanged) { SetDummyInterfaceTable(entries1); EXPECT_CALL(mock_tcp_client_listener_, - OnIPAddressUpdated(entries1[0].ipv4_address, "")).Times(1); + OnIPAddressUpdated(entries1[0].ipv4_address, "")) + .Times(1); // this test case doesn't call Start() - we only check the behavior of // NotifyIPAddresses() @@ -216,7 +217,8 @@ TEST_F(NetworkInterfaceListenerTest, DesignatedInterface_IPAddressChanged) { SetDummyInterfaceTable(entries2); EXPECT_CALL(mock_tcp_client_listener_, - OnIPAddressUpdated(entries2[0].ipv4_address, "")).Times(1); + OnIPAddressUpdated(entries2[0].ipv4_address, "")) + .Times(1); interface_listener_impl_->testCallNotifyIPAddresses(); @@ -239,7 +241,8 @@ TEST_F(NetworkInterfaceListenerTest, DesignatedInterface_IPAddressNotChanged) { SetDummyInterfaceTable(entries1); EXPECT_CALL(mock_tcp_client_listener_, - OnIPAddressUpdated(entries1[0].ipv4_address, "")).Times(1); + OnIPAddressUpdated(entries1[0].ipv4_address, "")) + .Times(1); interface_listener_impl_->testCallNotifyIPAddresses(); @@ -268,9 +271,10 @@ TEST_F(NetworkInterfaceListenerTest, DesignatedInterface_GoesUnavailable) { SetDummyInterfaceTable(entries1); - EXPECT_CALL(mock_tcp_client_listener_, - OnIPAddressUpdated(entries1[0].ipv4_address, - entries1[0].ipv6_address)).Times(1); + EXPECT_CALL( + mock_tcp_client_listener_, + OnIPAddressUpdated(entries1[0].ipv4_address, entries1[0].ipv6_address)) + .Times(1); interface_listener_impl_->testCallNotifyIPAddresses(); @@ -297,9 +301,10 @@ TEST_F(NetworkInterfaceListenerTest, DesignatedInterface_Removed) { SetDummyInterfaceTable(entries1); - EXPECT_CALL(mock_tcp_client_listener_, - OnIPAddressUpdated(entries1[0].ipv4_address, - entries1[0].ipv6_address)).Times(1); + EXPECT_CALL( + mock_tcp_client_listener_, + OnIPAddressUpdated(entries1[0].ipv4_address, entries1[0].ipv6_address)) + .Times(1); interface_listener_impl_->testCallNotifyIPAddresses(); @@ -331,7 +336,8 @@ TEST_F(NetworkInterfaceListenerTest, DesignatedInterface_Added) { SetDummyInterfaceTable(entries2); EXPECT_CALL(mock_tcp_client_listener_, - OnIPAddressUpdated(entries2[1].ipv4_address, "")).Times(1); + OnIPAddressUpdated(entries2[1].ipv4_address, "")) + .Times(1); interface_listener_impl_->testCallNotifyIPAddresses(); @@ -386,9 +392,10 @@ TEST_F(NetworkInterfaceListenerTest, // dummy_int1 should not be selected struct InterfaceEntry* expected = &entries[1]; - EXPECT_CALL(mock_tcp_client_listener_, - OnIPAddressUpdated(expected->ipv4_address, - expected->ipv6_address)).Times(1); + EXPECT_CALL( + mock_tcp_client_listener_, + OnIPAddressUpdated(expected->ipv4_address, expected->ipv6_address)) + .Times(1); interface_listener_impl_->testCallNotifyIPAddresses(); @@ -412,7 +419,8 @@ TEST_F(NetworkInterfaceListenerTest, AutoSelectInterface_SkipEmptyInterface) { // net_dummy2 should not be selected struct InterfaceEntry* expected = &entries[0]; EXPECT_CALL(mock_tcp_client_listener_, - OnIPAddressUpdated(expected->ipv4_address, "")).Times(1); + OnIPAddressUpdated(expected->ipv4_address, "")) + .Times(1); interface_listener_impl_->testCallNotifyIPAddresses(); @@ -434,9 +442,10 @@ TEST_F(NetworkInterfaceListenerTest, // dummy_int1 should not be selected struct InterfaceEntry* expected = &entries[1]; - EXPECT_CALL(mock_tcp_client_listener_, - OnIPAddressUpdated(expected->ipv4_address, - expected->ipv6_address)).Times(1); + EXPECT_CALL( + mock_tcp_client_listener_, + OnIPAddressUpdated(expected->ipv4_address, expected->ipv6_address)) + .Times(1); SetDummyInterfaceTable(entries); @@ -499,9 +508,10 @@ TEST_F(NetworkInterfaceListenerTest, AutoSelectInterface_EnableInterface) { entries[0].flags |= IFF_RUNNING; SetDummyInterfaceTable(entries); - EXPECT_CALL(mock_tcp_client_listener_, - OnIPAddressUpdated(entries[0].ipv4_address, - entries[0].ipv6_address)).Times(1); + EXPECT_CALL( + mock_tcp_client_listener_, + OnIPAddressUpdated(entries[0].ipv4_address, entries[0].ipv6_address)) + .Times(1); interface_listener_impl_->testCallNotifyIPAddresses(); @@ -550,9 +560,10 @@ TEST_F(NetworkInterfaceListenerTest, AutoSelectInterface_SwitchInterface) { switched = &entries[0]; } - EXPECT_CALL(mock_tcp_client_listener_, - OnIPAddressUpdated(switched->ipv4_address, - switched->ipv6_address)).Times(1); + EXPECT_CALL( + mock_tcp_client_listener_, + OnIPAddressUpdated(switched->ipv4_address, switched->ipv6_address)) + .Times(1); interface_listener_impl_->testCallNotifyIPAddresses(); diff --git a/src/components/transport_manager/test/sample_websocket_server.cc b/src/components/transport_manager/test/sample_websocket_server.cc index 2cb45242aa..917184a361 100644 --- a/src/components/transport_manager/test/sample_websocket_server.cc +++ b/src/components/transport_manager/test/sample_websocket_server.cc @@ -375,4 +375,4 @@ void WSSSession::on_accept(boost::system::error_code ec) { } } // namespace websocket -} // namespace sample
\ No newline at end of file +} // namespace sample diff --git a/src/components/transport_manager/test/tcp_client_listener_test.cc b/src/components/transport_manager/test/tcp_client_listener_test.cc index 1f4a17cf6c..d524b3eb6a 100644 --- a/src/components/transport_manager/test/tcp_client_listener_test.cc +++ b/src/components/transport_manager/test/tcp_client_listener_test.cc @@ -33,16 +33,16 @@ #include <netinet/in.h> #include <sys/socket.h> #include <sys/types.h> -#include <unistd.h> #include <time.h> +#include <unistd.h> #include "gtest/gtest.h" -#include "transport_manager/transport_adapter/mock_transport_adapter.h" -#include "transport_manager/tcp/tcp_client_listener.h" -#include "transport_manager/tcp/network_interface_listener.h" #include "transport_manager/mock_transport_manager.h" -#include "transport_manager/transport_adapter/transport_adapter_controller.h" +#include "transport_manager/tcp/network_interface_listener.h" +#include "transport_manager/tcp/tcp_client_listener.h" #include "transport_manager/transport_adapter/mock_device.h" +#include "transport_manager/transport_adapter/mock_transport_adapter.h" +#include "transport_manager/transport_adapter/transport_adapter_controller.h" #include "utils/test_async_waiter.h" #include "utils/threads/thread.h" @@ -60,7 +60,7 @@ using namespace ::transport_manager::transport_adapter; namespace { const long kThreadStartWaitMsec = 10; const uint32_t kConnectionCreatedTimeoutMsec = 200; -} +} // namespace class MockTransportAdapterController : public TransportAdapterController { public: @@ -395,7 +395,8 @@ TEST_P(TcpClientListenerTest, OnIPAddressUpdated_IPv4Address_changed) { expected_config_1.insert(std::make_pair(tc_tcp_port, test_port)); EXPECT_CALL(adapter_controller_mock_, - TransportConfigUpdated(expected_config_1)).Times(1); + TransportConfigUpdated(expected_config_1)) + .Times(1); tcp_client_listener_->OnIPAddressUpdated(test_ipv4_addr_1, test_ipv6_addr); @@ -406,7 +407,8 @@ TEST_P(TcpClientListenerTest, OnIPAddressUpdated_IPv4Address_changed) { expected_config_2.insert(std::make_pair(tc_tcp_port, test_port)); EXPECT_CALL(adapter_controller_mock_, - TransportConfigUpdated(expected_config_2)).Times(1); + TransportConfigUpdated(expected_config_2)) + .Times(1); tcp_client_listener_->OnIPAddressUpdated(test_ipv4_addr_2, test_ipv6_addr); @@ -440,7 +442,8 @@ TEST_P(TcpClientListenerTest, OnIPAddressUpdated_IPv4Address_same) { expected_config_1.insert(std::make_pair(tc_tcp_port, test_port)); EXPECT_CALL(adapter_controller_mock_, - TransportConfigUpdated(expected_config_1)).Times(1); + TransportConfigUpdated(expected_config_1)) + .Times(1); tcp_client_listener_->OnIPAddressUpdated(test_ipv4_addr_1, test_ipv6_addr); @@ -485,7 +488,8 @@ TEST_P(TcpClientListenerTest, OnIPAddressUpdated_IPv4Address_disabled) { expected_config_1.insert(std::make_pair(tc_tcp_port, test_port)); EXPECT_CALL(adapter_controller_mock_, - TransportConfigUpdated(expected_config_1)).Times(1); + TransportConfigUpdated(expected_config_1)) + .Times(1); tcp_client_listener_->OnIPAddressUpdated(test_ipv4_addr_1, test_ipv6_addr); @@ -496,7 +500,8 @@ TEST_P(TcpClientListenerTest, OnIPAddressUpdated_IPv4Address_disabled) { expected_config_2.insert(std::make_pair(tc_tcp_port, test_port)); EXPECT_CALL(adapter_controller_mock_, - TransportConfigUpdated(expected_config_2)).Times(1); + TransportConfigUpdated(expected_config_2)) + .Times(1); tcp_client_listener_->OnIPAddressUpdated(test_ipv4_addr_2, test_ipv6_addr); @@ -530,7 +535,8 @@ TEST_P(TcpClientListenerTest, OnIPAddressUpdated_IPv4Address_reenabled) { expected_config_1.insert(std::make_pair(tc_tcp_port, test_port)); EXPECT_CALL(adapter_controller_mock_, - TransportConfigUpdated(expected_config_1)).Times(1); + TransportConfigUpdated(expected_config_1)) + .Times(1); tcp_client_listener_->OnIPAddressUpdated(test_ipv4_addr_1, test_ipv6_addr); @@ -541,7 +547,8 @@ TEST_P(TcpClientListenerTest, OnIPAddressUpdated_IPv4Address_reenabled) { expected_config_2.insert(std::make_pair(tc_tcp_port, test_port)); EXPECT_CALL(adapter_controller_mock_, - TransportConfigUpdated(expected_config_2)).Times(1); + TransportConfigUpdated(expected_config_2)) + .Times(1); tcp_client_listener_->OnIPAddressUpdated(test_ipv4_addr_2, test_ipv6_addr); @@ -552,7 +559,8 @@ TEST_P(TcpClientListenerTest, OnIPAddressUpdated_IPv4Address_reenabled) { expected_config_3.insert(std::make_pair(tc_tcp_port, test_port)); EXPECT_CALL(adapter_controller_mock_, - TransportConfigUpdated(expected_config_3)).Times(1); + TransportConfigUpdated(expected_config_3)) + .Times(1); tcp_client_listener_->OnIPAddressUpdated(test_ipv4_addr_3, test_ipv6_addr); diff --git a/src/components/transport_manager/test/tcp_device_test.cc b/src/components/transport_manager/test/tcp_device_test.cc index 55fa5ac5d3..f52270d1ee 100644 --- a/src/components/transport_manager/test/tcp_device_test.cc +++ b/src/components/transport_manager/test/tcp_device_test.cc @@ -30,8 +30,8 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include "gtest/gtest.h" #include "transport_manager/tcp/tcp_device.h" +#include "gtest/gtest.h" #include "transport_manager/transport_adapter/device.h" namespace test { diff --git a/src/components/transport_manager/test/tcp_transport_adapter_test.cc b/src/components/transport_manager/test/tcp_transport_adapter_test.cc index 959180948a..f5f6cc38c8 100644 --- a/src/components/transport_manager/test/tcp_transport_adapter_test.cc +++ b/src/components/transport_manager/test/tcp_transport_adapter_test.cc @@ -30,24 +30,24 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include "gtest/gtest.h" #include "transport_manager/tcp/tcp_transport_adapter.h" -#include "resumption/last_state_impl.h" +#include "gtest/gtest.h" #include "protocol/raw_message.h" +#include "resumption/last_state_impl.h" +#include "transport_manager/mock_transport_manager_settings.h" +#include "transport_manager/tcp/mock_tcp_transport_adapter.h" #include "transport_manager/transport_adapter/connection.h" -#include "transport_manager/transport_adapter/mock_transport_adapter_listener.h" -#include "transport_manager/transport_adapter/mock_device.h" #include "transport_manager/transport_adapter/mock_connection.h" -#include "transport_manager/tcp/mock_tcp_transport_adapter.h" -#include "transport_manager/mock_transport_manager_settings.h" +#include "transport_manager/transport_adapter/mock_device.h" +#include "transport_manager/transport_adapter/mock_transport_adapter_listener.h" namespace test { namespace components { namespace transport_manager_test { +using ::testing::_; using ::testing::Return; using ::testing::ReturnRef; -using ::testing::_; using namespace ::protocol_handler; using namespace ::transport_manager; diff --git a/src/components/transport_manager/test/transport_adapter_listener_test.cc b/src/components/transport_manager/test/transport_adapter_listener_test.cc index a5d08035ae..9f18d5bc13 100644 --- a/src/components/transport_manager/test/transport_adapter_listener_test.cc +++ b/src/components/transport_manager/test/transport_adapter_listener_test.cc @@ -76,7 +76,8 @@ TEST_F(TransportAdapterListenerTest, OnCommunicationError) { ReceiveEventFromDevice(IsEvent(EventTypeEnum::ON_COMMUNICATION_ERROR, &adapter_mock, dev_id, - app_handle))).WillOnce(Return(E_SUCCESS)); + app_handle))) + .WillOnce(Return(E_SUCCESS)); transport_listener.OnCommunicationError(&adapter_mock, dev_id, app_handle); } @@ -129,7 +130,7 @@ TEST_F(TransportAdapterListenerTest, OnDataReceiveFailed) { TEST_F(TransportAdapterListenerTest, OnDataSendDone) { unsigned char data[3] = {0x20, 0x07, 0x01}; ::protocol_handler::RawMessagePtr data_container = - std::make_shared< ::protocol_handler::RawMessage>(1, 1, data, 3); + std::make_shared< ::protocol_handler::RawMessage>(1, 1, data, 3, false); EXPECT_CALL(tr_mock, ReceiveEventFromDevice(IsEvent(EventTypeEnum::ON_SEND_DONE, @@ -145,7 +146,7 @@ TEST_F(TransportAdapterListenerTest, OnDataSendDone) { TEST_F(TransportAdapterListenerTest, OnDataSendFailed) { unsigned char data[3] = {0x20, 0x07, 0x01}; ::protocol_handler::RawMessagePtr data_container = - std::make_shared< ::protocol_handler::RawMessage>(1, 1, data, 3); + std::make_shared< ::protocol_handler::RawMessage>(1, 1, data, 3, false); DataSendError err; EXPECT_CALL(tr_mock, @@ -195,7 +196,8 @@ TEST_F(TransportAdapterListenerTest, OnFindNewApplicationsRequest) { IsEvent(EventTypeEnum::ON_FIND_NEW_APPLICATIONS_REQUEST, &adapter_mock, "", - 0))).WillOnce(Return(E_SUCCESS)); + 0))) + .WillOnce(Return(E_SUCCESS)); transport_listener.OnFindNewApplicationsRequest(&adapter_mock); } @@ -225,7 +227,8 @@ TEST_F(TransportAdapterListenerTest, OnUnexpectedDisconnect) { ReceiveEventFromDevice(IsEvent(EventTypeEnum::ON_UNEXPECTED_DISCONNECT, &adapter_mock, dev_id, - app_handle))).WillOnce(Return(E_SUCCESS)); + app_handle))) + .WillOnce(Return(E_SUCCESS)); transport_listener.OnUnexpectedDisconnect( &adapter_mock, dev_id, app_handle, err); } diff --git a/src/components/transport_manager/test/transport_adapter_test.cc b/src/components/transport_manager/test/transport_adapter_test.cc index 35630e45dd..712cc5f750 100644 --- a/src/components/transport_manager/test/transport_adapter_test.cc +++ b/src/components/transport_manager/test/transport_adapter_test.cc @@ -118,12 +118,11 @@ class TransportAdapterTest : public ::testing::Test { "101.180.1.213", "23234", "/folder/img_index(1)/file.html/"}, - TestEndpoint{ - "[2600:3c00::f03c:91ff:fe73:2b08]:31333/folder/img_index(1)/" - "file.html", - "[2600:3c00::f03c:91ff:fe73:2b08]", - "31333", - "/folder/img_index(1)/file.html/"}, + TestEndpoint{"[2600:3c00::f03c:91ff:fe73:2b08]:31333/folder/img_index(1)/" + "file.html", + "[2600:3c00::f03c:91ff:fe73:2b08]", + "31333", + "/folder/img_index(1)/file.html/"}, // With query and/or fragment TestEndpoint{ "username@localhost:22/folder/img_index(1)/" @@ -133,15 +132,14 @@ class TransportAdapterTest : public ::testing::Test { "/folder/img_index(1)/file.html/" "?eventId=2345&eventName='some%20event'&eventSuccess=" "true"}, - TestEndpoint{ - "username@localhost.com:80/folder/img_index(1)/" - "file.html?eventId=2345&eventName='some%20event'&" - "eventSuccess=true#section1", - "username@localhost.com", - "80", - "/folder/img_index(1)/file.html/" - "?eventId=2345&eventName='some%20event'&eventSuccess=true#" - "section1"}, + TestEndpoint{"username@localhost.com:80/folder/img_index(1)/" + "file.html?eventId=2345&eventName='some%20event'&" + "eventSuccess=true#section1", + "username@localhost.com", + "80", + "/folder/img_index(1)/file.html/" + "?eventId=2345&eventName='some%20event'&eventSuccess=true#" + "section1"}, TestEndpoint{ "localhost:443/" "?eventId=2345&eventName='some%20event'&eventSuccess=true#section1", @@ -200,18 +198,16 @@ class TransportAdapterTest : public ::testing::Test { "232", "/folder/img\tindex(1)//file.html/"}, // Incorrect query - TestEndpoint{ - "username@localhost:443/?eventId=2345&eventName='some " - "event'&eventSuccess=true", - "username@localhost", - "443", - "?eventId=2345&eventName='some event'&eventSuccess=true"}, - TestEndpoint{ - "username@localhost:443/" - "?eventId=2345&eventName='some\tevent'&eventSuccess=true", - "username@localhost", - "443", - "?eventId=2345&eventName='some\tevent'&eventSuccess=true"}, + TestEndpoint{"username@localhost:443/?eventId=2345&eventName='some " + "event'&eventSuccess=true", + "username@localhost", + "443", + "?eventId=2345&eventName='some event'&eventSuccess=true"}, + TestEndpoint{"username@localhost:443/" + "?eventId=2345&eventName='some\tevent'&eventSuccess=true", + "username@localhost", + "443", + "?eventId=2345&eventName='some\tevent'&eventSuccess=true"}, // Incorrect fragment TestEndpoint{"a1(b2).com:80/folder/img_index(1)/file.html#section 1", "a1(b2).com", @@ -973,7 +969,7 @@ TEST_F(TransportAdapterTest, SendData) { const unsigned int kSize = 3; unsigned char data[kSize] = {0x20, 0x07, 0x01}; const RawMessagePtr kMessage = - std::make_shared<RawMessage>(1, 1, data, kSize); + std::make_shared<RawMessage>(1, 1, data, kSize, false); EXPECT_CALL(*mock_connection, SendData(kMessage)) .WillOnce(Return(TransportAdapter::OK)); @@ -1013,7 +1009,7 @@ TEST_F(TransportAdapterTest, SendData_ConnectionNotEstablished) { const unsigned int kSize = 3; unsigned char data[kSize] = {0x20, 0x07, 0x01}; const RawMessagePtr kMessage = - std::make_shared<RawMessage>(1, 1, data, kSize); + std::make_shared<RawMessage>(1, 1, data, kSize, false); EXPECT_CALL(*mock_connection, SendData(kMessage)).Times(0); res = transport_adapter.SendData(dev_id, app_handle, kMessage); @@ -1039,7 +1035,8 @@ TEST_F(TransportAdapterTest, StartClientListening_ClientNotInitialized) { EXPECT_CALL(*clientMock, IsInitialised()).WillOnce(Return(false)); EXPECT_CALL(*clientMock, StartListening()).Times(0); - TransportAdapter::Error res = transport_adapter.StartClientListening(); + TransportAdapter::Error res = transport_adapter.ChangeClientListening( + transport_manager::TransportAction::kVisibilityOn); EXPECT_EQ(TransportAdapter::BAD_STATE, res); EXPECT_CALL(*dev_mock, Terminate()); @@ -1062,7 +1059,8 @@ TEST_F(TransportAdapterTest, StartClientListening) { EXPECT_CALL(*clientMock, StartListening()) .WillOnce(Return(TransportAdapter::OK)); - TransportAdapter::Error res = transport_adapter.StartClientListening(); + TransportAdapter::Error res = transport_adapter.ChangeClientListening( + transport_manager::TransportAction::kVisibilityOn); EXPECT_EQ(TransportAdapter::OK, res); EXPECT_CALL(*dev_mock, Terminate()); @@ -1096,7 +1094,8 @@ TEST_F(TransportAdapterTest, StopClientListening_Success) { EXPECT_CALL(*clientMock, StopListening()) .WillOnce(Return(TransportAdapter::OK)); - res = transport_adapter.StopClientListening(); + res = transport_adapter.ChangeClientListening( + transport_manager::TransportAction::kVisibilityOff); EXPECT_EQ(TransportAdapter::OK, res); EXPECT_CALL(*dev_mock, Terminate()); diff --git a/src/components/transport_manager/test/transport_manager_default_test.cc b/src/components/transport_manager/test/transport_manager_default_test.cc index 8e8a964228..40938d0370 100644 --- a/src/components/transport_manager/test/transport_manager_default_test.cc +++ b/src/components/transport_manager/test/transport_manager_default_test.cc @@ -30,20 +30,20 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include "gtest/gtest.h" -#include "transport_manager/transport_manager.h" #include "transport_manager/transport_manager_default.h" -#include "transport_manager/mock_transport_manager_settings.h" +#include "gtest/gtest.h" #include "resumption/mock_last_state.h" +#include "transport_manager/mock_transport_manager_settings.h" +#include "transport_manager/transport_manager.h" namespace test { namespace components { namespace transport_manager_test { using resumption_test::MockLastState; +using ::testing::NiceMock; using ::testing::Return; using ::testing::ReturnRef; -using ::testing::NiceMock; namespace { const std::string kDeviceName = "name"; @@ -57,6 +57,22 @@ const std::string kTransportManager = "TransportManager"; const std::string kTcpAdapter = "TcpAdapter"; const std::string kBluetoothAdapter = "BluetoothAdapter"; const std::string kDevices = "devices"; +std::vector<uint8_t> kBTUUID = {0x93, + 0x6D, + 0xA0, + 0x1F, + 0x9A, + 0xBD, + 0x4D, + 0x9D, + 0x80, + 0xC7, + 0x02, + 0xAF, + 0x85, + 0xC8, + 0x22, + 0xA8}; } // namespace TEST(TestTransportManagerDefault, Init_LastStateNotUsed) { @@ -78,7 +94,22 @@ TEST(TestTransportManagerDefault, Init_LastStateNotUsed) { EXPECT_CALL(transport_manager_settings, transport_manager_tcp_adapter_network_interface()) .WillRepeatedly(ReturnRef(network_interface)); - + EXPECT_CALL(transport_manager_settings, bluetooth_uuid()) + .WillRepeatedly(Return(kBTUUID.data())); + + std::string dummy_parameter; + EXPECT_CALL(transport_manager_settings, aoa_filter_manufacturer()) + .WillRepeatedly(ReturnRef(dummy_parameter)); + EXPECT_CALL(transport_manager_settings, aoa_filter_model_name()) + .WillRepeatedly(ReturnRef(dummy_parameter)); + EXPECT_CALL(transport_manager_settings, aoa_filter_description()) + .WillRepeatedly(ReturnRef(dummy_parameter)); + EXPECT_CALL(transport_manager_settings, aoa_filter_version()) + .WillRepeatedly(ReturnRef(dummy_parameter)); + EXPECT_CALL(transport_manager_settings, aoa_filter_uri()) + .WillRepeatedly(ReturnRef(dummy_parameter)); + EXPECT_CALL(transport_manager_settings, aoa_filter_serial_number()) + .WillRepeatedly(ReturnRef(dummy_parameter)); transport_manager.Init(mock_last_state); transport_manager.Stop(); } @@ -114,6 +145,8 @@ TEST(TestTransportManagerDefault, Init_LastStateUsed) { EXPECT_CALL(transport_manager_settings, transport_manager_tcp_adapter_network_interface()) .WillRepeatedly(ReturnRef(network_interface)); + EXPECT_CALL(transport_manager_settings, bluetooth_uuid()) + .WillRepeatedly(Return(kBTUUID.data())); transport_manager.Init(mock_last_state); transport_manager.Stop(); } @@ -149,6 +182,8 @@ TEST(TestTransportManagerDefault, Init_LastStateUsed_InvalidPort) { EXPECT_CALL(transport_manager_settings, transport_manager_tcp_adapter_network_interface()) .WillRepeatedly(ReturnRef(network_interface)); + EXPECT_CALL(transport_manager_settings, bluetooth_uuid()) + .WillRepeatedly(Return(kBTUUID.data())); transport_manager.Init(mock_last_state); transport_manager.Stop(); } diff --git a/src/components/transport_manager/test/transport_manager_impl_test.cc b/src/components/transport_manager/test/transport_manager_impl_test.cc index c7d7024658..ac9b801dbd 100644 --- a/src/components/transport_manager/test/transport_manager_impl_test.cc +++ b/src/components/transport_manager/test/transport_manager_impl_test.cc @@ -30,26 +30,25 @@ * POSSIBILITY OF SUCH DAMAGE. */ +#include "transport_manager/transport_manager_impl.h" #include <string> #include "gtest/gtest.h" #include "protocol/raw_message.h" +#include "resumption/last_state_impl.h" #include "transport_manager/common.h" -#include "transport_manager/transport_manager_impl.h" -#include "transport_manager/mock_telemetry_observer.h" -#include "transport_manager/mock_transport_manager_listener.h" #include "transport_manager/mock_telemetry_observer.h" -#include "transport_manager/transport_adapter/mock_transport_adapter.h" #include "transport_manager/mock_transport_manager_impl.h" +#include "transport_manager/mock_transport_manager_listener.h" #include "transport_manager/mock_transport_manager_settings.h" -#include "resumption/last_state_impl.h" +#include "transport_manager/transport_adapter/mock_transport_adapter.h" #include "utils/test_async_waiter.h" using ::testing::_; using ::testing::AtLeast; +using ::testing::DoAll; using ::testing::Return; using ::testing::ReturnRef; -using ::testing::DoAll; using ::protocol_handler::RawMessage; using ::protocol_handler::RawMessagePtr; @@ -64,7 +63,7 @@ namespace { const std::string kAppStorageFolder = "app_storage_folder"; const std::string kAppInfoFolder = "app_info_folder"; const uint32_t kAsyncExpectationsTimeout = 10000u; -} +} // namespace class TransportManagerImplTest : public ::testing::Test { protected: @@ -102,7 +101,7 @@ class TransportManagerImplTest : public ::testing::Test { unsigned char data[kSize] = { 0x20, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; test_message_ = std::make_shared<RawMessage>( - connection_key_, version_protocol_, data, kSize); + connection_key_, version_protocol_, data, kSize, false); } DeviceInfo ConstructDeviceInfo(const std::string& mac_address, @@ -665,15 +664,23 @@ TEST_F(TransportManagerImplTest, RemoveDevice_DeviceWasAdded) { } TEST_F(TransportManagerImplTest, SetVisibilityOn_StartClientListening) { - EXPECT_CALL(*mock_adapter_, StartClientListening()) + EXPECT_CALL( + *mock_adapter_, + ChangeClientListening(transport_manager::TransportAction::kVisibilityOn)) .WillOnce(Return(TransportAdapter::OK)); - EXPECT_EQ(::transport_manager::E_SUCCESS, tm_.Visibility(true)); + EXPECT_EQ(::transport_manager::E_SUCCESS, + tm_.PerformActionOnClients( + transport_manager::TransportAction::kVisibilityOn)); } TEST_F(TransportManagerImplTest, SetVisibilityOff_StopClientListening) { - EXPECT_CALL(*mock_adapter_, StopClientListening()) + EXPECT_CALL( + *mock_adapter_, + ChangeClientListening(transport_manager::TransportAction::kVisibilityOff)) .WillOnce(Return(TransportAdapter::OK)); - EXPECT_EQ(::transport_manager::E_SUCCESS, tm_.Visibility(false)); + EXPECT_EQ(::transport_manager::E_SUCCESS, + tm_.PerformActionOnClients( + transport_manager::TransportAction::kVisibilityOff)); } TEST_F(TransportManagerImplTest, StopTransportManager) { @@ -692,12 +699,14 @@ TEST_F(TransportManagerImplTest, StopTransportManager) { TEST_F(TransportManagerImplTest, Reinit) { EXPECT_CALL(*mock_adapter_, Terminate()); EXPECT_CALL(*mock_adapter_, Init()).WillOnce(Return(TransportAdapter::OK)); + tm_.Deinit(); EXPECT_EQ(E_SUCCESS, tm_.Reinit()); } TEST_F(TransportManagerImplTest, Reinit_InitAdapterFailed) { EXPECT_CALL(*mock_adapter_, Terminate()); EXPECT_CALL(*mock_adapter_, Init()).WillOnce(Return(TransportAdapter::FAIL)); + tm_.Deinit(); EXPECT_EQ(E_ADAPTERS_FAIL, tm_.Reinit()); } @@ -941,17 +950,22 @@ TEST_F(TransportManagerImplTest, RemoveDevice_TMIsNotInitialized) { TEST_F(TransportManagerImplTest, Visibility_TMIsNotInitialized) { // Arrange - const bool visible = true; + const transport_manager::TransportAction action = + transport_manager::TransportAction::kVisibilityOn; // Check before Act UninitializeTM(); // Act and Assert - EXPECT_CALL(*mock_adapter_, StartClientListening()).Times(0); - EXPECT_EQ(E_TM_IS_NOT_INITIALIZED, tm_.Visibility(visible)); + EXPECT_CALL( + *mock_adapter_, + ChangeClientListening(transport_manager::TransportAction::kVisibilityOn)) + .Times(0); + EXPECT_EQ(E_TM_IS_NOT_INITIALIZED, tm_.PerformActionOnClients(action)); } TEST_F(TransportManagerImplTest, HandleMessage_ConnectionNotExist) { EXPECT_CALL(*mock_adapter_, - SendData(mac_address_, application_id_, test_message_)).Times(0); + SendData(mac_address_, application_id_, test_message_)) + .Times(0); TestAsyncWaiter waiter; EXPECT_CALL(*tm_listener_, OnTMMessageSendFailed(_, test_message_)) @@ -971,16 +985,24 @@ TEST_F(TransportManagerImplTest, SearchDevices_TMIsNotInitialized) { } TEST_F(TransportManagerImplTest, SetVisibilityOn_TransportAdapterNotSupported) { - EXPECT_CALL(*mock_adapter_, StartClientListening()) + EXPECT_CALL( + *mock_adapter_, + ChangeClientListening(transport_manager::TransportAction::kVisibilityOn)) .WillOnce(Return(TransportAdapter::NOT_SUPPORTED)); - EXPECT_EQ(E_SUCCESS, tm_.Visibility(true)); + EXPECT_EQ(E_SUCCESS, + tm_.PerformActionOnClients( + transport_manager::TransportAction::kVisibilityOn)); } TEST_F(TransportManagerImplTest, SetVisibilityOff_TransportAdapterNotSupported) { - EXPECT_CALL(*mock_adapter_, StopClientListening()) + EXPECT_CALL( + *mock_adapter_, + ChangeClientListening(transport_manager::TransportAction::kVisibilityOff)) .WillOnce(Return(TransportAdapter::NOT_SUPPORTED)); - EXPECT_EQ(E_SUCCESS, tm_.Visibility(false)); + EXPECT_EQ(E_SUCCESS, + tm_.PerformActionOnClients( + transport_manager::TransportAction::kVisibilityOff)); } TEST_F(TransportManagerImplTest, @@ -1232,7 +1254,8 @@ TEST_F(TransportManagerImplTest, EXPECT_CALL(mock_transport_manager_settings_, app_transport_change_timer()) .WillOnce(Return(timeout)); EXPECT_CALL(mock_transport_manager_settings_, - app_transport_change_timer_addition()).WillOnce(Return(0)); + app_transport_change_timer_addition()) + .WillOnce(Return(0)); EXPECT_CALL(*tm_listener_, OnDeviceSwitchingStart(mac_address_, usb_serial)); diff --git a/src/components/transport_manager/test/websocket_connection_test.cc b/src/components/transport_manager/test/websocket_connection_test.cc index db3bc598b1..d096d351f5 100644 --- a/src/components/transport_manager/test/websocket_connection_test.cc +++ b/src/components/transport_manager/test/websocket_connection_test.cc @@ -425,6 +425,7 @@ TEST_F(WebsocketConnectionTest, WSSConnection_SUCCESS_ValidTarget) { t1.join(); } +#ifdef ENABLE_SECURITY TEST_F(WebsocketConnectionTest, WSSConnection_FAILURE_InvalidTarget) { transport_manager::transport_adapter::CloudAppProperties properties{ .endpoint = "wss://" + kHost + ":" + std::to_string(kPort), @@ -486,6 +487,7 @@ TEST_F(WebsocketConnectionTest, WSSConnection_FAILURE_IncorrectCert) { wss_session->Stop(); t1.join(); } +#endif // ENABLE_SECURITY } // namespace transport_manager_test } // namespace components } // namespace test |