Trait

com.twitter.finagle.pushsession

PushChannelHandle

Related Doc: package pushsession

Permalink

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.

Linear Supertypes
Known Subclasses
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. PushChannelHandle
  2. ClientConnection
  3. Closable
  4. AnyRef
  5. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Abstract Value Members

  1. abstract def close(deadline: Time): Future[Unit]

    Permalink
    Definition Classes
    Closable
  2. abstract def localAddress: SocketAddress

    Permalink

    Host/port of the local side of a client connection.

    Host/port of the local side of a client connection.

    Definition Classes
    ClientConnection
  3. abstract def onClose: Future[Unit]

    Permalink

    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
  4. abstract def peerCertificate: Option[Certificate]

    Permalink

    Security certificate of the peer

  5. abstract def registerSession(newSession: PushSession[In, Out]): Unit

    Permalink

    Replaces the current PushSession, directing inbound events to the new session.

    Replaces the current PushSession, directing inbound events to the new session.

    Note

    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.

    ,

    It is unsafe to register a new session from outside of serial executor and to do so will result in undefined behavior.

  6. abstract def remoteAddress: SocketAddress

    Permalink

    Host/port of the client.

    Host/port of the client.

    Definition Classes
    ClientConnection
  7. abstract def send(message: Out)(onComplete: (Try[Unit]) ⇒ Unit): Unit

    Permalink

    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.

  8. abstract def send(messages: Iterable[Out])(onComplete: (Try[Unit]) ⇒ Unit): Unit

    Permalink

    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.

  9. abstract def sendAndForget(messages: Iterable[Out]): Unit

    Permalink

    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).

  10. abstract def sendAndForget(message: Out): Unit

    Permalink

    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).

  11. abstract def serialExecutor: Executor

    Permalink

    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.

  12. abstract def status: Status

    Permalink

    The status of this transport; see com.twitter.finagle.Status for status definitions.

Concrete 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. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  6. def close(after: Duration): Future[Unit]

    Permalink
    Definition Classes
    Closable
  7. final def close(): Future[Unit]

    Permalink
    Definition Classes
    Closable
  8. final def eq(arg0: AnyRef): Boolean

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

    Permalink
    Definition Classes
    AnyRef → Any
  10. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  11. final def getClass(): Class[_]

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

    Permalink
    Definition Classes
    AnyRef → Any
  13. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  14. final def ne(arg0: AnyRef): Boolean

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

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

    Permalink
    Definition Classes
    AnyRef
  17. final def synchronized[T0](arg0: ⇒ T0): T0

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

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

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

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

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from ClientConnection

Inherited from Closable

Inherited from AnyRef

Inherited from Any

Ungrouped