/** * @file * * @author Max Lammers * @author Mamadou Babaei * * @section LICENSE * * Copyright (c) 2020 - 2025 SenseGlove * * @section DESCRIPTION * * A single piece of connection data with helper functions. */ #pragma once #include #include #include "Connection.hpp" #include #include "PortInfo.hpp" namespace SGConnect { class ConnectionData; } class SGCONNECT_API SGConnect::ConnectionData { private: struct Impl; std::unique_ptr Pimpl; private: ConnectionData(); public: ConnectionData(const std::string& address, EConnectionType connectionType, bool bConnected); /** * The copy constructor. */ ConnectionData(const ConnectionData& rhs); /** * The move constructor. */ ConnectionData(ConnectionData&& rhs) noexcept; virtual ~ConnectionData(); public: /** * The copy assignment operator. */ ConnectionData& operator=(const ConnectionData& rhs); /** * The move assignment operator. */ ConnectionData& operator=(ConnectionData&& rhs) noexcept; public: [[nodiscard]] const std::string& GetAddress() const; void SetAddress(const std::string& Address); [[nodiscard]] EConnectionType GetConnectionType() const; void SetConnectionType(EConnectionType connectionType); [[nodiscard]] bool IsConnected() const; void SetConnected(bool bConnected); [[nodiscard]] int32_t GetLastConnectCode() const; void SetLastConnectCode(int32_t connectCode); [[nodiscard]] int32_t GetLastExitCode() const; void SetLastExitCode(int32_t exitCode); [[nodiscard]] int32_t GetLastTestState() const; void SetLastTestState(int32_t TestState); [[nodiscard]] int32_t GetDeviceType() const; void SetDeviceType(int32_t DeviceType); public: [[nodiscard]] bool Matches(const std::string& address, EConnectionType connectionType) const; [[nodiscard]] std::string Report() const; };