diff --git a/modules/internal/src/main/scala/client/monixCalls.scala b/modules/internal/src/main/scala/client/monixCalls.scala index 6bc10a93d..91a8efe6f 100644 --- a/modules/internal/src/main/scala/client/monixCalls.scala +++ b/modules/internal/src/main/scala/client/monixCalls.scala @@ -19,12 +19,13 @@ package internal package client import cats.effect.{Async, LiftIO} -import freestyle.async.guava.implicits._ -import freestyle.async.catsEffect.implicits._ -import io.grpc.{CallOptions, Channel, MethodDescriptor} +import com.google.common.util.concurrent._ import io.grpc.stub.{ClientCalls, StreamObserver} +import io.grpc.{CallOptions, Channel, MethodDescriptor} +import java.util.concurrent.{Executor => JavaExecutor} import monix.execution.Scheduler import monix.reactive.Observable +import scala.concurrent.ExecutionContext object monixCalls { @@ -79,4 +80,20 @@ object monixCalls { outputObserver )) ) + + private[this] def listenableFuture2Async[F[_], A]( + fa: => ListenableFuture[A])(implicit F: Async[F], E: ExecutionContext): F[A] = + F.async { cb => + Futures.addCallback( + fa, + new FutureCallback[A] { + override def onSuccess(result: A): Unit = cb(Right(result)) + + override def onFailure(t: Throwable): Unit = cb(Left(t)) + }, + new JavaExecutor { + override def execute(command: Runnable): Unit = E.execute(command) + } + ) + } } diff --git a/project/ProjectPlugin.scala b/project/ProjectPlugin.scala index 22d6259ee..9aa2f3076 100644 --- a/project/ProjectPlugin.scala +++ b/project/ProjectPlugin.scala @@ -51,7 +51,6 @@ object ProjectPlugin extends AutoPlugin { lazy val internalSettings: Seq[Def.Setting[_]] = Seq( libraryDependencies ++= Seq( %%("frees-async-cats-effect", V.frees), - %%("frees-async-guava", V.frees) exclude ("com.google.guava", "guava"), %("grpc-stub", V.grpc), %%("monix"), %%("fs2-reactive-streams", V.fs2ReactiveStreams),