Conscience Core
CscEntityClient.h
Go to the documentation of this file.
1 #ifndef CscEntityClient_h
2 #define CscEntityClient_h
3 
4 #include "CscCommon.h"
5 
8 }
9 
10 using namespace conscience_core::communication;
11 
12 namespace conscience_core::ai {
13 
18  bool canUseUdp = false;
19 
24  optional<unsigned int> commandTimeoutSeconds = 45;
25 
26  optional<fs::path> downloadBytesToPath = {};
30  optional<function<void(float progress)>> onDownloadProgress = {};
31 
35  static CscEntityProcessCommandOptions udp(optional<unsigned int> commandTimeoutSeconds = {});
39  static CscEntityProcessCommandOptions tcp(optional<unsigned int> commandTimeoutSeconds = {});
40 };
41 
43 public:
44  CscEntityClient(const string &serialNumber);
45  virtual ~CscEntityClient() = default;
46  virtual bool isSimulated() const = 0;
47  virtual void connect() = 0;
48  virtual void disconnect() = 0;
49 
54  virtual optional<string> processCommandString(const string &command, const CscEntityProcessCommandOptions &options = {}) = 0;
55 
59  static function<string(const string &command, const string &serialNumber)> &doProcessCommand();
60 
61 protected:
62  const string serialNumber;
63 };
64 
66 public:
67  CscEntityClientSimulated(const string &serialNumber);
69  bool isSimulated() const override;
70  void connect() override;
71  void disconnect() override;
72  optional<string> processCommandString(const string &command, const CscEntityProcessCommandOptions &options = {}) override;
73 
74 private:
75  unique_ptr<CscLogger> logger = CscLogger::getForCategory("CscEntityClientSimulated");
76 };
77 
79 public:
80  CscEntityClientReal(const string &serialNumber, CscMessagingManager *messagingManager, string ip, unsigned tcpPort, unsigned udpPort);
82  bool isSimulated() const override;
83  void connect() override;
84  void disconnect() override;
85  optional<string> processCommandString(const string &command, const CscEntityProcessCommandOptions &options = {}) override;
86 
87 private:
88  int TIME_TO_RECEIVE_FULLSTATUS_IN_MILLIS = 500;
89 
90  CscMessagingManager *messagingManager = nullptr;
91  string ip = "";
92  unsigned tcpPort;
93  unsigned udpPort;
94 
95  void sendRegistrationToEntity(string commandPrefix);
96 
97  unique_ptr<CscLogger> logger = CscLogger::getForCategory("CscEntityClientReal");
98 };
99 
100 }
101 
102 #endif
conscience_core::ai::CscEntityClient
Definition: CscEntityClient.h:42
conscience_core::ai::CscEntityClient::serialNumber
const string serialNumber
Definition: CscEntityClient.h:62
CSC_DLL_IMPORTEXPORT
#define CSC_DLL_IMPORTEXPORT
Definition: os.h:34
conscience_core::ai
Definition: alerts.cpp:12
nlohmann::detail::void
j template void())
Definition: json.hpp:4189
CscCommon.h
conscience_core::communication
Definition: CscEntityClient.h:6
conscience_core::communication::logger
static auto logger
Definition: AsioContext.cpp:15
conscience_core::ai::CscEntityProcessCommandOptions
Definition: CscEntityClient.h:14
conscience_core::communication::CscMessagingManager
Definition: CscMessagingManager.h:27
conscience_core::bridging::commands::environment_objects::optional< string >
const ptr< CscObjectModel > const string const CscPoint3d const CscPoint3d optional< string >
Definition: environmentObjectsCommands.h:373
conscience_core::ai::CscEntityClientSimulated
Definition: CscEntityClient.h:65
conscience_core::ai::CscEntityClientReal
Definition: CscEntityClient.h:78