Exemplo n.º 1
0
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()));

}
Exemplo n.º 2
0
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()));
            });
}