Class/Object

colossus.service

ServiceClient

Related Docs: object ServiceClient | package service

Permalink

class ServiceClient[P <: Protocol] extends Controller[service.ServiceClient.P.Output, service.ServiceClient.P.Input] with ClientConnectionHandler with Sender[P, Callback] with ManualUnbindHandler

A ServiceClient is a non-blocking, synchronous interface that handles sending atomic commands on a connection and parsing their replies

Notice - The client will not begin to connect until it is bound to a worker, so when using the default constructor a service client will not connect on it's own. You must either call bind on the client or use the constructor that accepts a worker

TODO: make underlying output controller data size configurable

Linear Supertypes
ManualUnbindHandler, Sender[P, Callback], ClientConnectionHandler, Controller[P.Output, P.Input], OutputController[P.Output, P.Input], InputController[P.Output, P.Input], MasterController[P.Output, P.Input], IdleCheck, CoreHandler, ConnectionHandler, WorkerItem, AnyRef, Any
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. ServiceClient
  2. ManualUnbindHandler
  3. Sender
  4. ClientConnectionHandler
  5. Controller
  6. OutputController
  7. InputController
  8. MasterController
  9. IdleCheck
  10. CoreHandler
  11. ConnectionHandler
  12. WorkerItem
  13. AnyRef
  14. Any
  1. Hide All
  2. Show all
Visibility
  1. Public
  2. All

Instance Constructors

  1. new ServiceClient(codec: Codec[P.Input, P.Output], config: ClientConfig, worker: WorkerRef)

    Permalink
  2. new ServiceClient(codec: Codec[P.Input, P.Output], config: ClientConfig, context: Context)(implicit tagDecorator: TagDecorator[P.Input, P.Output] = ...)

    Permalink

Type Members

  1. type I = P.Input

    Permalink
  2. type O = P.Output

    Permalink
  3. type ResponseHandler = (Try[O]) ⇒ Unit

    Permalink
  4. case class SourcedRequest(message: I, handler: ResponseHandler, queueTime: Long, sendTime: Long) extends Product with Serializable

    Permalink

Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  5. final def become(nh: () ⇒ ConnectionHandler): Boolean

    Permalink

    Replace this connection handler with the given handler.

    Replace this connection handler with the given handler. The actual swap only occurs when the shutdown process complete

    Definition Classes
    CoreHandler
  6. def canPush: Boolean

    Permalink
    Attributes
    protected
    Definition Classes
    OutputController
  7. def canSend: Boolean

    Permalink

    returns true if the client is potentially able to send.

    returns true if the client is potentially able to send. This does not necessarily mean any new requests will actually be sent, but rather that the client will make an attempt to send it. This returns false when the client either failed to connect (including retries) or when it has been shut down.

  8. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  9. val codec: Codec[P.Input, P.Output]

    Permalink
    Definition Classes
    ControllerMasterController
  10. val config: ClientConfig

    Permalink
  11. def connected(endpoint: WriteEndpoint): Unit

    Permalink

    This handler is called when a Worker new Connection is established.

    This handler is called when a Worker new Connection is established. A Connection can be either an incoming (ie: something to connected to the server), or outgoing(ie: the server connected to a remote system).

    endpoint

    The endpoint which wraps the java NIO layer.

    Definition Classes
    ServiceClientControllerCoreHandlerConnectionHandler
  12. def connectionClosed(cause: DisconnectCause): Unit

    Permalink

    Connection was closed on our end, either by a shutdown, or by normal means

    Connection was closed on our end, either by a shutdown, or by normal means

    cause

    why the connection was closed

    Attributes
    protected
    Definition Classes
    ServiceClientControllerConnectionHandler
  13. final def connectionHandle: Option[ConnectionHandle]

    Permalink

    Returns a read-only trait containing live information about the connection.

    Returns a read-only trait containing live information about the connection.

    Definition Classes
    CoreHandler
  14. def connectionLost(cause: DisconnectError): Unit

    Permalink

    Connection lost is caused by termination, closed, etc

    Connection lost is caused by termination, closed, etc

    cause

    why the connection was lost

    Attributes
    protected
    Definition Classes
    ServiceClientControllerConnectionHandler
  15. def connectionState: ConnectionState

    Permalink
    Definition Classes
    CoreHandler
  16. def connectionStatus: ConnectionStatus

    Permalink
  17. def connectionTerminated(cause: DisconnectCause): Unit

    Permalink

    Called from Worker when a connection has been terminated either by an error or by normal means.

    Called from Worker when a connection has been terminated either by an error or by normal means.

    cause

    why the connection was terminated

    Definition Classes
    CoreHandlerConnectionHandler
  18. val context: Context

    Permalink
    Definition Classes
    WorkerItem
  19. val controllerConfig: ControllerConfig

    Permalink
    Definition Classes
    ControllerMasterController
  20. final def disconnect(): Unit

    Permalink

    Close the underlying connection.

    Close the underlying connection. This is a "graceful" disconnect process, in that any action mid-completion will be given a chance to finish what they're doing before the connection actually closes. For example, for a service this will allow any requests being processed to complete.

    Definition Classes
    CoreHandler
  21. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  22. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  23. def fatalInputError(reason: Throwable): Unit

    Permalink
    Definition Classes
    ServiceClientControllerInputController
  24. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  25. final def forceDisconnect(): Unit

    Permalink

    Immediately terminate the connection.

    Immediately terminate the connection. this is a kill action and completely bypasses the shutdown process.

    Definition Classes
    CoreHandler
  26. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  27. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  28. def id: Long

    Permalink
    Definition Classes
    WorkerItem
  29. def idleCheck(period: FiniteDuration): Unit

    Permalink

    Called periodically on every attached connection handler, this can be used for checking if an ongoing operation has timed out.

    Called periodically on every attached connection handler, this can be used for checking if an ongoing operation has timed out.

    Be aware that this is totally independant of a connection's idle timeout, which is only based on the last time there was any I/O.

    period

    the frequency at which this method is called. Currently this is hardcoded to WorkerManager.IdleCheckFrequency, but may become application dependent in the future.

    Definition Classes
    ServiceClientOutputControllerIdleCheck
  30. lazy val inputSizeHistogram: Option[Histogram]

    Permalink
    Definition Classes
    InputController
  31. lazy val inputSizeTracker: ParserSizeTracker

    Permalink
    Definition Classes
    InputController
  32. def isBound: Boolean

    Permalink
    Definition Classes
    WorkerItem
  33. def isConnected: Boolean

    Permalink
    Definition Classes
    CoreHandler
  34. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  35. lazy val log: LoggingAdapter

    Permalink
  36. val maxIdleTime: Duration

    Permalink

    If no data is either sent or received in this amount of time, the connection is closed.

    If no data is either sent or received in this amount of time, the connection is closed. Defaults to Duration.Inf but handlers can override it

    Definition Classes
    ServiceClientClientConnectionHandler
  37. implicit val namespace: MetricContext

    Permalink
    Definition Classes
    ServiceClientMasterController
  38. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  39. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  40. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  41. def onBind(): Unit

    Permalink

    Called when the item is bound to a worker.

    Called when the item is bound to a worker.

    Definition Classes
    ServiceClientWorkerItem
  42. def onUnbind(): Unit

    Permalink

    Called when the item has been unbound from a worker

    Called when the item has been unbound from a worker

    Attributes
    protected
    Definition Classes
    WorkerItem
  43. def pauseReads(): Unit

    Permalink
    Attributes
    protected
    Definition Classes
    InputController
  44. def pauseWrites(): Unit

    Permalink

    Pauses writing of the next item in the queue.

    Pauses writing of the next item in the queue. If there is currently a message in the process of writing, it will be unaffected. New messages can still be pushed to the queue as long as it is not full

    Attributes
    protected
    Definition Classes
    OutputController
  45. def pendingBufferSize: Int

    Permalink
    Attributes
    protected
    Definition Classes
    OutputController
  46. def processBadRequest(reason: Throwable): Option[P.Input]

    Permalink
    Attributes
    protected
    Definition Classes
    InputController
  47. def processMessage(response: O): Unit

    Permalink
    Definition Classes
    ServiceClientInputController
  48. def purgePending(reason: Throwable): Unit

    Permalink

    Purge all pending messages

    Purge all pending messages

    If a message is currently being written, it is not affected

    Attributes
    protected
    Definition Classes
    OutputController
  49. def push(item: P.Input, createdMillis: Long = System.currentTimeMillis)(postWrite: PostWrite): Boolean

    Permalink

    Push a message to be written

    Push a message to be written

    Pushing a message does not necessarily mean it will be written, but rather that the message is queued to be written. Messages can be queue regardless of the state of the underlying connection, even if the connection is never reconnected. It is up to the caller to determine whether a message should be pushed based on connection state.

    item

    the message to push

    createdMillis

    the timestamp of when the message was created, defaults to now if not specified

    postWrite

    called either when writing has completed or failed

    returns

    true if the message was successfully enqueued, false if the queue is full

    Attributes
    protected
    Definition Classes
    OutputController
  50. def readsEnabled: Boolean

    Permalink
    Definition Classes
    InputController
  51. def readyForData(buffer: DataOutBuffer): MoreDataResult

    Permalink
    Definition Classes
    OutputControllerConnectionHandler
  52. def receivedData(data: DataBuffer): Unit

    Permalink

    Handler which is called when data is received from a Connection.

    Handler which is called when data is received from a Connection.

    data

    DataBuffer read from the underlying Connection.

    Definition Classes
    InputControllerConnectionHandler
  53. def receivedMessage(message: Any, sender: ActorRef): Unit

    Permalink

    Provides a way to send this WorkerItem a message from an Actor by way of WorkerCommand.Message.

    Provides a way to send this WorkerItem a message from an Actor by way of WorkerCommand.Message.

    message

    The message that was sent

    sender

    The sender who sent the message

    Definition Classes
    ServiceClientWorkerItem
  54. def resumeReads(): Unit

    Permalink
    Attributes
    protected
    Definition Classes
    InputController
  55. def resumeWrites(): Unit

    Permalink

    Resumes writing of messages if currently paused, otherwise has no affect

    Resumes writing of messages if currently paused, otherwise has no affect

    Attributes
    protected
    Definition Classes
    OutputController
  56. def send(request: I): Callback[O]

    Permalink

    Create a callback for sending a request.

    Create a callback for sending a request. this allows you to do something like service.send("request"){response => "YAY"}.map{str => println(str)}.execute()

    Definition Classes
    ServiceClientSender
  57. def shutdown(): Unit

    Permalink
    Definition Classes
    ServiceClientControllerCoreHandler
  58. final def shutdownRequest(): Unit

    Permalink

    A Request has been made to shutdown this WorkerItem.

    A Request has been made to shutdown this WorkerItem. By default this will simply unbind the item from its Worker, but this can be overriden to add in custom shutdown behaviors. Be aware that in some cases this method may not be called and the item will be unbound, such as when an IOSystem is shutting down.

    Definition Classes
    CoreHandlerWorkerItem
  59. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  60. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  61. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  62. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  63. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  64. def worker: WorkerRef

    Permalink
    Definition Classes
    WorkerItem
  65. def writesEnabled: Boolean

    Permalink
    Attributes
    protected
    Definition Classes
    OutputController

Inherited from ManualUnbindHandler

Inherited from Sender[P, Callback]

Inherited from ClientConnectionHandler

Inherited from Controller[P.Output, P.Input]

Inherited from OutputController[P.Output, P.Input]

Inherited from InputController[P.Output, P.Input]

Inherited from MasterController[P.Output, P.Input]

Inherited from IdleCheck

Inherited from CoreHandler

Inherited from ConnectionHandler

Inherited from WorkerItem

Inherited from AnyRef

Inherited from Any

Ungrouped