diff options
Diffstat (limited to 'src/main/kotlin/io/dico/parcels2/storage/Backing.kt')
-rw-r--r-- | src/main/kotlin/io/dico/parcels2/storage/Backing.kt | 41 |
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) } |