Skip to content

Instantly share code, notes, and snippets.

View Tolriq's full-sized avatar

Tolriq Tolriq

View GitHub Profile
@Tolriq
Tolriq / workerpool.kt
Created September 10, 2022 08:35
Db worker pool
class DatabaseWorkerPool : CoroutineScope {
private const val MAX_TASKS = 4
internal class Task<R>(owner: Job, val request: suspend () -> R) {
val response = CompletableDeferred<R>(owner)
}
@Suppress("MemberVisibilityCanBePrivate")
internal val tasks = Channel<Task<*>>(Channel.UNLIMITED)
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.asCoroutineDispatcher
import kotlinx.coroutines.joinAll
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.yield
import org.junit.Test
@Tolriq
Tolriq / OkHttpWorkerPool.kt
Created November 14, 2018 13:14
OkHttp coroutine WorkerPool with proper exception handling and suspendCancellableCoroutine support.
import kotlinx.coroutines.CompletableDeferred
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.InternalCoroutinesApi
import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.cancel
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.channels.Channel.Factory.UNLIMITED
import kotlinx.coroutines.launch
import kotlinx.coroutines.suspendCancellableCoroutine
@Tolriq
Tolriq / EventClient.java
Created August 18, 2012 17:37
EventClient
package org.leetzone.android.yatselibs.client.xbmceden;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.InetAddress;
import java.util.Stack;
import org.leetzone.android.utils.Logger;
import org.leetzone.android.yatselibs.client.xbmceden.eventclient.Packet;
import org.leetzone.android.yatselibs.client.xbmceden.eventclient.PacketACTION;