summaryrefslogtreecommitdiff
path: root/src/main/kotlin/io/dico/parcels2/storage/Backing.kt
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/kotlin/io/dico/parcels2/storage/Backing.kt')
-rw-r--r--src/main/kotlin/io/dico/parcels2/storage/Backing.kt41
1 files changed, 15 insertions, 26 deletions
diff --git a/src/main/kotlin/io/dico/parcels2/storage/Backing.kt b/src/main/kotlin/io/dico/parcels2/storage/Backing.kt
index bb4cf33..b658d10 100644
--- a/src/main/kotlin/io/dico/parcels2/storage/Backing.kt
+++ b/src/main/kotlin/io/dico/parcels2/storage/Backing.kt
@@ -2,10 +2,8 @@ package io.dico.parcels2.storage
import io.dico.parcels2.*
import kotlinx.coroutines.experimental.CoroutineDispatcher
-import kotlinx.coroutines.experimental.CoroutineScope
import kotlinx.coroutines.experimental.Deferred
import kotlinx.coroutines.experimental.Job
-import kotlinx.coroutines.experimental.channels.ProducerScope
import kotlinx.coroutines.experimental.channels.ReceiveChannel
import kotlinx.coroutines.experimental.channels.SendChannel
import java.util.UUID
@@ -16,58 +14,49 @@ interface Backing {
val isConnected: Boolean
+ val dispatcher: CoroutineDispatcher
+
fun launchJob(job: Backing.() -> Unit): Job
fun <T> launchFuture(future: Backing.() -> T): Deferred<T>
fun <T> openChannel(future: Backing.(SendChannel<T>) -> Unit): ReceiveChannel<T>
+ fun <T> openChannelForWriting(future: Backing.(T) -> Unit): SendChannel<T>
+
fun init()
fun shutdown()
- /**
- * This producer function is capable of constantly reading parcels from a potentially infinite sequence,
- * and provide parcel data for it as read from the database.
- */
- fun produceParcelData(channel: SendChannel<DataPair>, parcels: Sequence<ParcelId>)
+ fun getPlayerUuidForName(name: String): UUID?
- fun produceAllParcelData(channel: SendChannel<DataPair>)
+ fun transmitParcelData(channel: SendChannel<DataPair>, parcels: Sequence<ParcelId>)
+
+ fun transmitAllParcelData(channel: SendChannel<DataPair>)
fun readParcelData(parcel: ParcelId): ParcelData?
- fun getOwnedParcels(user: ParcelOwner): List<ParcelId>
+ fun getOwnedParcels(user: PlayerProfile): List<ParcelId>
- fun getNumParcels(user: ParcelOwner): Int = getOwnedParcels(user).size
+ fun getNumParcels(user: PlayerProfile): Int = getOwnedParcels(user).size
fun setParcelData(parcel: ParcelId, data: ParcelData?)
- fun setParcelOwner(parcel: ParcelId, owner: ParcelOwner?)
+ fun setParcelOwner(parcel: ParcelId, owner: PlayerProfile?)
- fun setLocalPlayerStatus(parcel: ParcelId, player: UUID, status: AddedStatus)
+ fun setLocalPlayerStatus(parcel: ParcelId, player: PlayerProfile, status: AddedStatus)
fun setParcelAllowsInteractInventory(parcel: ParcelId, value: Boolean)
fun setParcelAllowsInteractInputs(parcel: ParcelId, value: Boolean)
- fun produceAllGlobalAddedData(channel: SendChannel<AddedDataPair<ParcelOwner>>)
-
- fun readGlobalAddedData(owner: ParcelOwner): MutableAddedDataMap
-
- fun setGlobalPlayerStatus(owner: ParcelOwner, player: UUID, status: AddedStatus)
-
-}
+ fun transmitAllGlobalAddedData(channel: SendChannel<AddedDataPair<PlayerProfile>>)
-abstract class AbstractBacking(val dispatcher: CoroutineDispatcher) {
-
- fun launchJob(job: Backing.() -> Unit): Job
-
- fun <T> launchFuture(future: Backing.() -> T): Deferred<T>
-
- fun <T> openChannel(future: Backing.(SendChannel<T>) -> Unit): ReceiveChannel<T>
+ fun readGlobalAddedData(owner: PlayerProfile): MutableAddedDataMap
+ fun setGlobalPlayerStatus(owner: PlayerProfile, player: PlayerProfile, status: AddedStatus)
}