trait PushChannelHandle[In, Out] extends Closable with ClientConnection
Abstraction for interacting with the underlying I/O pipeline.
The ChannelHandle
provides tools for writing messages to the peer, an Executor
which
provides single threaded behavior for executed tasks, and information about the peer and
state of the pipeline.
All method calls on the ChannelHandle
are guaranteed not to result in re-entrance into
the PushSession so long as these methods are called from within the serialExecutor
.
Specifically, if a session invokes a method on the handle it will not result in a new event
reaching the session before the method call has returned. This avoids situations such as a
session performing a write and before the call returns a new inbound message arrives and
mutates session state in an unexpected way.
All failures are fatal to the PushChannelHandle including write failures. Specifically,
any failure results in the onClose
promise being completed with the exception in the
Throw
pathway and the underlying socket will be closed.
- Alphabetic
- By Inheritance
- PushChannelHandle
- ClientConnection
- Closable
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Abstract Value Members
- abstract def close(deadline: Time): Future[Unit]
- Definition Classes
- Closable
- abstract def localAddress: SocketAddress
Host/port of the local side of a client connection.
Host/port of the local side of a client connection.
- Definition Classes
- ClientConnection
- abstract def onClose: Future[Unit]
Expose a
Future
that is satisfied when the connection is closed.Expose a
Future
that is satisfied when the connection is closed.- Definition Classes
- ClientConnection
- abstract def registerSession(newSession: PushSession[In, Out]): Unit
Replaces the current
PushSession
, directing inbound events to the new session.Replaces the current
PushSession
, directing inbound events to the new session.- Note
It is unsafe to register a new session from outside of serial executor and to do so will result in undefined behavior.
,other than no longer receiving inbound messages, the previous session is still active and it is the responsibility of the caller to release any resources held by the previous session.
- abstract def remoteAddress: SocketAddress
Host/port of the client.
Host/port of the client.
- Definition Classes
- ClientConnection
- abstract def send(message: Out)(onComplete: (Try[Unit]) => Unit): Unit
Write a message to the underlying IO pipeline.
Write a message to the underlying IO pipeline.
- Note
the provided continuation is guaranteed to be executed later, meaning that this method call will return before
onComplete
is run.
- abstract def send(messages: Iterable[Out])(onComplete: (Try[Unit]) => Unit): Unit
Write multiple messages to the underlying IO pipeline.
Write multiple messages to the underlying IO pipeline.
- Note
the provided continuation is guaranteed to be executed later, meaning that this method call will return before
onComplete
is run.
- abstract def sendAndForget(messages: Iterable[Out]): Unit
Write a collection of messages to the underlying IO pipeline.
Write a collection of messages to the underlying IO pipeline.
Any errors in writing result in closing the pipeline and are propagated through the
onClose
Future (provided it has not yet resolved). - abstract def sendAndForget(message: Out): Unit
Write a message to the underlying IO pipeline.
Write a message to the underlying IO pipeline.
Any errors in writing result in closing the pipeline and are propagated through the
onClose
Future (provided it has not yet resolved). - abstract def serialExecutor: Executor
Single threaded executor meaning that every computation is run sequentially and provides a happens-before relationship with respect to every other computation executed by the Executor.
Single threaded executor meaning that every computation is run sequentially and provides a happens-before relationship with respect to every other computation executed by the Executor. Messages from the pipeline are guaranteed to be processed in this
Executor
. - abstract def sslSessionInfo: SslSessionInfo
SSL/TLS session information associated with the push channel handle.
SSL/TLS session information associated with the push channel handle.
- Definition Classes
- PushChannelHandle → ClientConnection
- Note
If SSL/TLS is not being used a
NullSslSessionInfo
will be returned instead.
- abstract def status: Status
The status of this transport; see com.twitter.finagle.Status for status definitions.
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
- 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(after: Duration): Future[Unit]
- Definition Classes
- Closable
- final def close(): Future[Unit]
- Definition Classes
- Closable
- 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 isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- 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()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- 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()