diff --git a/framework/areglogger/client/private/LoggerClient.cpp b/framework/areglogger/client/private/LoggerClient.cpp index 9df23ac7f..df1ab3225 100644 --- a/framework/areglogger/client/private/LoggerClient.cpp +++ b/framework/areglogger/client/private/LoggerClient.cpp @@ -329,7 +329,7 @@ String LoggerClient::getConfigDatabaseName(void) const if (isSqliteEngine()) { LogConfiguration config; - result = File::getFileFullPath(config.getDatabaseName().getString()); + result = config.getDatabaseName().getString(); } return result; diff --git a/framework/areglogger/client/private/ObserverMessageProcessor.cpp b/framework/areglogger/client/private/ObserverMessageProcessor.cpp index 5961ead44..8b5aa2a9e 100644 --- a/framework/areglogger/client/private/ObserverMessageProcessor.cpp +++ b/framework/areglogger/client/private/ObserverMessageProcessor.cpp @@ -105,7 +105,10 @@ void ObserverMessageProcessor::notifyLogRegisterScopes(const RemoteMessage& msgR callback(cookie, scopes, count); } - delete[] scopes; + if (scopes != nullptr) + { + delete[] scopes; + } } void ObserverMessageProcessor::notifyLogUpdateScopes(const RemoteMessage& msgReceived) @@ -151,7 +154,10 @@ void ObserverMessageProcessor::notifyLogUpdateScopes(const RemoteMessage& msgRec callback(cookie, scopes, count); } - delete[] scopes; + if (scopes != nullptr) + { + delete[] scopes; + } } void ObserverMessageProcessor::notifyLogMessage(const RemoteMessage& msgReceived) @@ -218,59 +224,66 @@ void ObserverMessageProcessor::_clientsConnected(const RemoteMessage& msgReceive TEArrayList< NEService::sServiceConnectedInstance > listConnected; msgReceived >> listConnected; - if (listConnected.isEmpty() == false) - { - FuncInstancesConnect callback{ nullptr }; - sLogInstance * listInstances{ nullptr }; - DateTime now(DateTime::getNow()); + FuncInstancesConnect callback{ nullptr }; + sLogInstance* listInstances{ nullptr }; + int size{ static_cast(listConnected.getSize()) }; + do + { + Lock lock(mLoggerClient.mLock); if (LogObserverBase::_theLogObserver == nullptr) { callback = mLoggerClient.mCallbacks != nullptr ? mLoggerClient.mCallbacks->evtInstConnected : nullptr; - listInstances = new sLogInstance[listConnected.getSize()]; } - mLoggerClient.mLock.lock(NECommon::WAIT_INFINITE); - - int size = static_cast(listConnected.getSize()); - for (int i = 0; i < size; ++i) + if (size > 0) { - const NEService::sServiceConnectedInstance& client{ listConnected[static_cast(i)] }; - auto added = mLoggerClient.mInstances.addIfUnique(client.ciCookie, client, false); - if (added.second) - { - mLoggerClient.mLogDatabase.logInstanceConnected(client, now); - } + DateTime now(DateTime::getNow()); + listInstances = new sLogInstance[size]; - if (listInstances != nullptr) + for (int i = 0; i < size; ++i) { + const NEService::sServiceConnectedInstance& client{ listConnected[static_cast(i)] }; + auto added = mLoggerClient.mInstances.addIfUnique(client.ciCookie, client, false); + if (added.second) + { + mLoggerClient.mLogDatabase.logInstanceConnected(client, now); + } + + if (listInstances != nullptr) + { sLogInstance& inst{ listInstances[i] }; inst.liSource = static_cast(client.ciSource); inst.liBitness = static_cast(client.ciBitness); inst.liCookie = client.ciCookie; inst.liTimestamp = client.ciTimestamp; - NEString::copyString( inst.liName + NEString::copyString(inst.liName , static_cast(LENGTH_NAME) , client.ciInstance.c_str() , static_cast(client.ciInstance.length())); - NEString::copyString( inst.liLocation + NEString::copyString(inst.liLocation , static_cast(LENGTH_LOCATION) , client.ciLocation.c_str() , static_cast(client.ciLocation.length())); + } } - } - mLoggerClient.mLogDatabase.commit(true); - mLoggerClient.mLock.unlock(); - if (LogObserverBase::_theLogObserver != nullptr) - { - LogObserverBase::_theLogObserver->onLogInstancesConnect(listConnected.getData()); - } - else if (callback != nullptr) - { - callback(listInstances, size); + mLoggerClient.mLogDatabase.commit(true); } + } while (false); + + if (LogObserverBase::_theLogObserver != nullptr) + { + LogObserverBase::_theLogObserver->onLogInstancesConnect(listConnected.getData()); + } + else if (callback != nullptr) + { + callback(listInstances, size); + } + + if (listInstances != nullptr) + { delete[] listInstances; } } @@ -281,52 +294,62 @@ void ObserverMessageProcessor::_clientsDisconnected(const RemoteMessage& msgRece TEArrayList< NEService::sServiceConnectedInstance > listDisconnected; msgReceived >> listClients; - if (listClients.isEmpty() == false) + FuncInstancesDisconnect callback{ nullptr }; + ITEM_ID* listInstances{ nullptr }; + int size{ static_cast(listClients.getSize()) }; + int count{ 0 }; + + do { - FuncInstancesDisconnect callback{ nullptr }; - ITEM_ID* listInstances{ nullptr }; - int count{ 0 }; - int size{ static_cast(listClients.getSize()) }; - DateTime now(DateTime::getNow()); + Lock lock(mLoggerClient.mLock); if (LogObserverBase::_theLogObserver == nullptr) { callback = mLoggerClient.mCallbacks != nullptr ? mLoggerClient.mCallbacks->evtInstDisconnected : nullptr; - listInstances = new ITEM_ID[size]; } - mLoggerClient.mLock.lock(NECommon::WAIT_INFINITE); - for (int i = 0; i < size; ++i) + + if (size > 0) { - const ITEM_ID& client{ listClients[static_cast(i)] }; - if (mLoggerClient.mInstances.contains(client)) - { - const NEService::sServiceConnectedInstance& instance = mLoggerClient.mInstances.getAt(client); - listDisconnected.add(instance); - if (mLoggerClient.mInstances.removeAt(client)) - { - mLoggerClient.mLogDatabase.logInstanceDisconnected(client, now); - } + DateTime now(DateTime::getNow()); + listInstances = new ITEM_ID[size]; - if (listInstances != nullptr) + for (int i = 0; i < size; ++i) + { + const ITEM_ID& client{ listClients[static_cast(i)] }; + if (mLoggerClient.mInstances.contains(client)) { - listInstances[i] = client; - ++count; + const NEService::sServiceConnectedInstance& instance = mLoggerClient.mInstances.getAt(client); + listDisconnected.add(instance); + if (mLoggerClient.mInstances.removeAt(client)) + { + mLoggerClient.mLogDatabase.logInstanceDisconnected(client, now); + } + + if (listInstances != nullptr) + { + listInstances[i] = client; + ++count; + } } } - } - mLoggerClient.mLogDatabase.commit(true); - mLoggerClient.mLock.unlock(); - if (LogObserverBase::_theLogObserver != nullptr) - { - LogObserverBase::_theLogObserver->onLogInstancesDisconnect(listDisconnected.getData()); - } - else if (callback != nullptr) - { - callback(listInstances, count); + mLoggerClient.mLogDatabase.commit(true); } + } while (false); + + if (LogObserverBase::_theLogObserver != nullptr) + { + LogObserverBase::_theLogObserver->onLogInstancesDisconnect(listDisconnected.getData()); + } + else if (callback != nullptr) + { + callback(listInstances, count); + } + + if (listInstances != nullptr) + { delete[] listInstances; } }