All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.com.apadmi.mockzilla.lib.internal.service.MockServerMonitor.kt Maven / Gradle / Ivy

The newest version!
package com.apadmi.mockzilla.lib.internal.service

import com.apadmi.mockzilla.lib.internal.models.LogEvent
import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock

internal interface MockServerMonitor {
    suspend fun log(event: LogEvent)
    suspend fun consumeCurrentLogs(): List
}

internal class MockServerMonitorImpl : MockServerMonitor {
    private val lockingMutex = Mutex()
    private val events: MutableList = mutableListOf()

    override suspend fun log(event: LogEvent) = lockingMutex.withLock {
        events.add(event)
        Unit
    }

    override suspend fun consumeCurrentLogs(): List = lockingMutex.withLock {
        val copy = mutableListOf().apply { addAll(events) }
        events.clear()
        copy
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy