abstract class GenPipeliningDispatcher[Req, Rep, In, Out, T] extends GenSerialClientDispatcher[Req, Rep, In, Out]
A generic pipelining dispatcher, which assumes that servers will respect normal pipelining semantics, and that replies will be sent in the same order as requests were sent. Exploits GenSerialClientDispatcher to serialize requests.
Because many requests might be sharing the same transport, Futures returned by GenPipeliningDispatcher#apply are masked, and will only propagate the interrupt if the future doesn't return after a configurable amount of time after the interruption. This ensures that interrupting a Future in one request won't change the result of another request unless the connection is stuck, and does not look like it will make progress. Use StalledPipelineTimeout to configure this timeout.
- Self Type
- GenPipeliningDispatcher[Req, Rep, In, Out, T]
- Alphabetic
- By Inheritance
- GenPipeliningDispatcher
- GenSerialClientDispatcher
- Service
- Closable
- Function1
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new GenPipeliningDispatcher(trans: Transport[In, Out], statsReceiver: StatsReceiver, stallTimeout: Duration, timer: Timer)
- statsReceiver
typically scoped to
clientName/dispatcher
Abstract Value Members
- abstract def pipeline(req: Req, p: Promise[Rep]): Future[T]
Send a request
req
to the server and provide a valueT
to insert into the pipeline queue.Send a request
req
to the server and provide a valueT
to insert into the pipeline queue. The value is provided back torespond
to handle the corresponding request.- req
the request to send
- p
the promise to fulfill when the request is handled.
- returns
a value associated with
req
that is handed back during response handling.
- Attributes
- protected
- abstract def respond(value: T, p: Promise[Rep], out: Try[Out]): Unit
Handle the server response
out
given the corresponding elementvalue
enqueued during dispatch.Handle the server response
out
given the corresponding elementvalue
enqueued during dispatch.This typically involves fulfilling
p
with a function of(T, Try[Out]) => Rep
- value
the corresponding element returned by
pipeline
during dispatch- p
the promise to fulfill the rpc
- out
the server response
- Attributes
- protected
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def andThen[A](g: (Future[Rep]) => A): (Req) => A
- Definition Classes
- Function1
- Annotations
- @unspecialized()
- def apply(req: Req): Future[Rep]
This is the method to override/implement to create your own Service.
This is the method to override/implement to create your own Service.
- Definition Classes
- GenPipeliningDispatcher → GenSerialClientDispatcher → Service → Function1
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def close(deadline: Time): Future[Unit]
- Definition Classes
- GenSerialClientDispatcher → Service → Closable
- def close(after: Duration): Future[Unit]
- Definition Classes
- Closable
- final def close(): Future[Unit]
- Definition Classes
- Closable
- def compose[A](g: (A) => Req): (A) => Future[Rep]
- Definition Classes
- Function1
- Annotations
- @unspecialized()
- def dispatch(req: Req, p: Promise[Rep]): Future[Unit]
Dispatch a request, satisfying Promise
p
with the response; the returned Future is satisfied when the dispatch is complete: only one request is admitted at any given time.Dispatch a request, satisfying Promise
p
with the response; the returned Future is satisfied when the dispatch is complete: only one request is admitted at any given time.Note that GenSerialClientDispatcher manages interrupts, satisfying
p
should it be interrupted -- implementors beware: use onlyupdateIfEmpty
variants for satisfying the Promise.GenSerialClientDispatcher will also attempt to satisfy the promise if the returned
Future[Unit]
fails.- Attributes
- protected
- Definition Classes
- GenPipeliningDispatcher → GenSerialClientDispatcher
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isAvailable: Boolean
Determines whether this
Service
is available (can accept requests with a reasonable likelihood of success).Determines whether this
Service
is available (can accept requests with a reasonable likelihood of success).- Definition Classes
- Service
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def map[Req1](f: (Req1) => Req): Service[Req1, Rep]
- Definition Classes
- Service
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- def status: Status
The current availability Status of this
Service
.The current availability Status of this
Service
.- Definition Classes
- GenSerialClientDispatcher → Service
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- Service → Function1 → AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()