no delay on first filesystem save - loggin over websocket
This commit is contained in:
@@ -10,7 +10,7 @@
|
||||
class LoggingAPI
|
||||
{
|
||||
public:
|
||||
void onClientConnect(websockets::WebsocketsClient &client) {}
|
||||
void onClientConnect(websockets::WebsocketsClient &client, int /*clientId*/) {}
|
||||
|
||||
bool handleMessage(websockets::WebsocketsClient &client, MessageCode code, const char *payload, size_t size) {
|
||||
switch(code) {
|
||||
|
||||
@@ -20,7 +20,7 @@ public:
|
||||
numSentMeasurements_[i] = 0;
|
||||
}
|
||||
|
||||
void onClientConnect(websockets::WebsocketsClient &client);
|
||||
void onClientConnect(websockets::WebsocketsClient &client, int clientId);
|
||||
bool handleMessage(websockets::WebsocketsClient &client, MessageCode code, const char *payload, size_t size);
|
||||
|
||||
template <typename TServer>
|
||||
@@ -41,7 +41,7 @@ private:
|
||||
|
||||
// sending message about current session
|
||||
template <typename T>
|
||||
void SessionAPI<T>::onClientConnect(websockets::WebsocketsClient &client)
|
||||
void SessionAPI<T>::onClientConnect(websockets::WebsocketsClient &client, int clientId)
|
||||
{
|
||||
// TODO write msgpack instead for consistency?
|
||||
|
||||
@@ -73,10 +73,12 @@ void SessionAPI<T>::onClientConnect(websockets::WebsocketsClient &client)
|
||||
|
||||
assert(writeHead - msg == msgSize - sizeof(MeasurementT) * numMeasurements);
|
||||
|
||||
LOG_INFO("Start sending existing measurements");
|
||||
memcpy(writeHead, session.getDataPointer(), sizeof(MeasurementT) * numMeasurements);
|
||||
client.sendBinary(msg, msgSize);
|
||||
|
||||
numSentMeasurements_[clientId] = numMeasurements;
|
||||
free(msg);
|
||||
LOG_INFO("Finished sending existing measurements");
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
@@ -157,7 +159,7 @@ template <typename TServer>
|
||||
void SessionAPI<T>::sendNewDataMessages(TServer &server)
|
||||
{
|
||||
|
||||
constexpr size_t MAX_MEASUREMENTS_PER_MSG = 15;
|
||||
constexpr size_t MAX_MEASUREMENTS_PER_MSG = 50;
|
||||
constexpr size_t WAIT_UNTIL_AT_LEAST_NUM_MEASUREMENTS = 1;
|
||||
|
||||
// new data messages are the only messages not sent in msgpack format
|
||||
|
||||
@@ -52,7 +52,7 @@ public:
|
||||
{
|
||||
clients_[nextFreeClient_] = server_.accept();
|
||||
clients_[nextFreeClient_].onMessage(onMessage);
|
||||
this->onClientConnectImpl(clients_[nextFreeClient_]);
|
||||
this->onClientConnectImpl(clients_[nextFreeClient_], nextFreeClient_);
|
||||
nextFreeClient_ = (nextFreeClient_ + 1) % MAX_WEBSOCKET_CONNECTIONS;
|
||||
|
||||
if(MAX_WEBSOCKET_CONNECTIONS == 3) {
|
||||
@@ -128,13 +128,13 @@ private:
|
||||
bool handleMessageImpl(websockets::WebsocketsClient &, MessageCode, const char *, size_t) { return false; }
|
||||
|
||||
template <size_t managerIdx = 0, typename std::enable_if<(managerIdx < std::tuple_size<ApiManagerTuple>::value), bool>::type = true>
|
||||
void onClientConnectImpl(websockets::WebsocketsClient &client)
|
||||
void onClientConnectImpl(websockets::WebsocketsClient &client, int clientId)
|
||||
{
|
||||
std::get<managerIdx>(apiManagers_).onClientConnect(client);
|
||||
onClientConnectImpl<managerIdx + 1>(client);
|
||||
std::get<managerIdx>(apiManagers_).onClientConnect(client, clientId);
|
||||
onClientConnectImpl<managerIdx + 1>(client, clientId);
|
||||
}
|
||||
template <size_t managerIdx, typename std::enable_if<managerIdx == std::tuple_size<ApiManagerTuple>::value, bool>::type = true>
|
||||
void onClientConnectImpl(websockets::WebsocketsClient &client) {}
|
||||
void onClientConnectImpl(websockets::WebsocketsClient &client, int clientId) {}
|
||||
|
||||
// -- Members
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ void WifiAPI::sendWifiState(websockets::WebsocketsClient &client)
|
||||
sendToClient<192>(client, MessageCode::WIFI_STATE_RESPONSE, data);
|
||||
}
|
||||
|
||||
void WifiAPI::onClientConnect(websockets::WebsocketsClient &client)
|
||||
void WifiAPI::onClientConnect(websockets::WebsocketsClient &client, int /*clientId*/)
|
||||
{
|
||||
sendWifiState(client);
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ public:
|
||||
{
|
||||
}
|
||||
|
||||
void onClientConnect(websockets::WebsocketsClient &client);
|
||||
void onClientConnect(websockets::WebsocketsClient &client, int clientId);
|
||||
bool handleMessage(websockets::WebsocketsClient &client, MessageCode code, const char *payload, size_t size);
|
||||
|
||||
template <typename TServer>
|
||||
|
||||
Reference in New Issue
Block a user