1 #ifndef SERVERENTITIES_H
2 #define SERVERENTITIES_H
22 #define ENTITY_UDP_RESPONSE_PORT 1705
23 #define DEFAULT_UDP_LISTEN_PORT 1703
24 #define DEFAULT_TCP_LISTEN_PORT 1803
26 using std::mutex, std::thread;
50 operator string()
const;
51 static EntityPeerInfo fromSerialized(
const string &serializedInfo);
66 void onEntityProfileReceived(
const vector<string> &commandArguments, EntityPeerInfo entityPeerInfo);
71 void onStatePlayed(
const char *entitySerialNumber,
double *values,
unsigned long valuesSize,
int duration,
int delay,
bool relative);
73 bool isEntityRunningCommand(
const string &entitySerialNumber,
const string &commandPart)
const;
78 vector<const ServerEntitySummary *> getEntitiesSummary();
80 vector<string> getEntitySerialNumbers();
82 void restoreEntities();
85 void restoreEntitiesFromJson();
91 unique_ptr<CscLogger>
logger =
nullptr;
92 fs::path dataFilePath;
93 mutex persistEntitiesMutex;
94 mutex updateEntityMutex;
97 optional<EntityPeerInfo> peerInfo;
99 vector<string> currentCommands;
105 map<string, Entity *> entitiesBySerialNumber;
106 map<string, int> registerClientPeriodMillisBySerialNumber;
107 const int registerClientIntervalTimeInMillis = 15000;
108 const int getCurrentLidarPeriodMillis = 200;
109 const int registerClientIntervalForLocalizationTimeInMillis = 250;
110 bool registerClientLoopRunning =
false;
111 thread registerClientThread;
117 optional<EntityPeerInfo> remoteEntityPeerInfo,
118 bool persistInDataFile);
120 void installEntityListeners(
Entity *entity);
121 void persistEntities();
123 void updateEntityCurrentCommands(
const string &entitySerialNumber,
function<
void(vector<string> &commands)> update);
129 int startEntityCurrentCommands(
const string &entitySerialNumber);
131 void addOnStatePlayedListener();
133 const string followEntityId =
"followEntity";
135 void sendUdpMessageToEntity(
const string &message,
const string &serialNumber);
136 void registerClientThreadLoop();
137 void registerClientWithPeriodInMillis(
int periodInMillis,
string serialNumber);