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
- All
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
peerCertificate: Option[Certificate]
Security certificate of the peer
-
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
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[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
-
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: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- 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( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )