void LogCollector::addLogRecord(const KaaUserLogRecord& record) { LogRecordPtr serializedRecord(new LogRecord(record)); KAA_MUTEX_LOCKING("storageGuard_"); KAA_MUTEX_UNIQUE_DECLARE(lock, storageGuard_); KAA_MUTEX_LOCKED("storageGuard_"); storage_->addLogRecord(serializedRecord); KAA_MUTEX_UNLOCKING("storageGuard_"); KAA_UNLOCK(lock); KAA_MUTEX_UNLOCKED("storageGuard_"); processLogUploadDecision(uploadStrategy_->isUploadNeeded(storage_->getStatus())); }
void LogCollector::addLogRecord(const KaaUserLogRecord& record) { /* * To avoid overhead on copying big-sized log records while capturing in lambdas, * serialization has been performed before adding task to executor. */ LogRecordPtr serializedRecord(new LogRecord(record)); executorContext_.getApiExecutor().add([this, serializedRecord] () { KAA_MUTEX_LOCKING("storageGuard_"); KAA_MUTEX_UNIQUE_DECLARE(lock, storageGuard_); KAA_MUTEX_LOCKED("storageGuard_"); storage_->addLogRecord(serializedRecord); KAA_MUTEX_UNLOCKING("storageGuard_"); KAA_UNLOCK(lock); KAA_MUTEX_UNLOCKED("storageGuard_"); processLogUploadDecision(uploadStrategy_->isUploadNeeded(storage_->getStatus())); }); }