orbit.client.mesh.AddressableLeaser.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of orbit-client Show documentation
Show all versions of orbit-client Show documentation
Orbit is a system to make building highly scalable realtime services easier.
/*
Copyright (C) 2015 - 2019 Electronic Arts Inc. All rights reserved.
This file is part of the Orbit Project .
See license in LICENSE.
*/
package orbit.client.mesh
import kotlinx.coroutines.guava.await
import orbit.client.net.GrpcClient
import orbit.shared.addressable.AddressableReference
import orbit.shared.proto.AddressableManagementGrpc
import orbit.shared.proto.AddressableManagementOuterClass
import orbit.shared.proto.toAddressableLease
import orbit.shared.proto.toAddressableReferenceProto
internal class AddressableLeaser(grpcClient: GrpcClient) {
private val addressableManagementStub = AddressableManagementGrpc.newFutureStub(grpcClient.channel)
suspend fun renewLease(reference: AddressableReference) =
addressableManagementStub.renewLease(
AddressableManagementOuterClass.RenewAddressableLeaseRequestProto.newBuilder()
.setReference(reference.toAddressableReferenceProto())
.build()
).await()?.lease?.toAddressableLease()
suspend fun abandonLease(reference: AddressableReference) =
addressableManagementStub.abandonLease(
AddressableManagementOuterClass.AbandonAddressableLeaseRequestProto.newBuilder()
.setReference(reference.toAddressableReferenceProto())
.build()
).await()?.abandoned ?: false
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy