Interface Link<L extends Link<L>>

    • Method Detail

      • detach

        L detach()
        Detach this end of the link.
        Returns:
        this Link.
        Throws:
        EngineStateException - if an error occurs detaching the Link or the Engine is shutdown.
      • getState

        LinkState getState()
        Returns:
        the local link state
      • getCredit

        int getCredit()
        Get the credit that is currently available or assigned to this link.
        Returns:
        the current link credit.
      • isDraining

        boolean isDraining()
        Indicates if the link is draining. For a Sender link this indicates that the remote has requested that the Sender transmit deliveries up to the currently available credit or indicate that it has no more to send. For a Receiver this indicates that the Receiver has requested that the Sender consume its outstanding credit.
        Returns:
        true if the Link is currently marked as draining.
      • getRole

        Role getRole()
        Returns:
        the Role that this end of the link is performing.
      • isSender

        boolean isSender()
        Returns:
        true if this link is acting in a sender Role.
      • isReceiver

        boolean isReceiver()
        Returns:
        true if this link is acting in a receiver Role.
      • getName

        java.lang.String getName()
        Returns:
        the link name that is assigned to this Link
      • setSenderSettleMode

        L setSenderSettleMode​(SenderSettleMode senderSettleMode)
                       throws java.lang.IllegalStateException
        Sets the sender settle mode.

        Should only be called during link set-up, i.e. before calling Endpoint.open(). If this endpoint is the initiator of the link, this method can be used to set a value other than the default.

        If this endpoint is not the initiator, this method should be used to set a local value. According to the AMQP spec, the application may choose to accept the sender's suggestion (accessed by calling getRemoteSenderSettleMode()) or choose another value. The value has no effect on Proton, but may be useful to the application at a later point.

        In order to be AMQP compliant the application is responsible for honoring the settlement mode. See Link.

        Parameters:
        senderSettleMode - The SenderSettleMode that will be set on the local end of this link.
        Returns:
        this Link.
        Throws:
        java.lang.IllegalStateException - if the Link has already been opened.
      • setReceiverSettleMode

        L setReceiverSettleMode​(ReceiverSettleMode receiverSettleMode)
                         throws java.lang.IllegalStateException
        Sets the receiver settle mode.

        Should only be called during link set-up, i.e. before calling Endpoint.open(). If this endpoint is the initiator of the link, this method can be used to set a value other than the default. Used in analogous way to setSenderSettleMode(SenderSettleMode)

        Parameters:
        receiverSettleMode - The ReceiverSettleMode that will be set on the local end of this link.
        Returns:
        this Link.
        Throws:
        java.lang.IllegalStateException - if the Link has already been opened.
      • setSource

        L setSource​(Source source)
             throws java.lang.IllegalStateException
        Sets the Source to assign to the local end of this Link.

        Must be called during link setup, i.e. before calling the Endpoint.open() method.

        Parameters:
        source - The Source that will be set on the local end of this link.
        Returns:
        this Link.
        Throws:
        java.lang.IllegalStateException - if the Link has already been opened.
      • getSource

        Source getSource()
        Returns:
        the Source for the local end of this link.
      • setTarget

        L setTarget​(Target target)
             throws java.lang.IllegalStateException
        Sets the Target to assign to the local end of this Link. Must be called during link setup, i.e. before calling the Endpoint.open() method.
        Parameters:
        target - The Target that will be set on the local end of this link.
        Returns:
        this Link.
        Throws:
        java.lang.IllegalStateException - if the Link has already been opened.
      • setTarget

        L setTarget​(Coordinator coordinator)
             throws java.lang.IllegalStateException
        Sets the Coordinator target to assign to the local end of this Link.

        Must be called during link setup, i.e. before calling the Endpoint.open() method.

        Parameters:
        coordinator - The Coordinator target that will be set on the local end of this link.
        Returns:
        this Link.
        Throws:
        java.lang.IllegalStateException - if the Link has already been opened.
      • getTarget

        <T extends Terminus> T getTarget()
        Returns the currently set Target for this Link. A link target can be either a Target type for a Sender or Receiver link or if the link is to be transaction resource then the target type will be a Coordinator instance.
        Type Parameters:
        T - The terminus type that the target should be cast to on return.
        Returns:
        the link target Terminus for the local end of this link.
      • setMaxMessageSize

        L setMaxMessageSize​(UnsignedLong maxMessageSize)
                     throws java.lang.IllegalStateException
        Sets the local link max message size, to be conveyed to the peer via the Attach frame when attaching the link to the session. Null or 0 means no limit.

        Must be called during link setup, i.e. before calling the Endpoint.open() method.

        Parameters:
        maxMessageSize - the local max message size value, or null to clear. 0 also means no limit.
        Returns:
        this Link.
        Throws:
        java.lang.IllegalStateException - if the Link has already been opened.
      • getMaxMessageSize

        UnsignedLong getMaxMessageSize()
        Gets the local link max message size.
        Returns:
        the local max message size, or null if none was set. 0 also means no limit.
        See Also:
        setMaxMessageSize(UnsignedLong)
      • isRemotelyDetached

        boolean isRemotelyDetached()
        Returns true if this Link is currently remotely detached meaning the state returned from getRemoteState() is equal to LinkState.DETACHED. A link is remotely detached after an Detach has been received from the remote with the close flag equal to false.
        Returns:
        true if the link is remotely detached.
        See Also:
        isRemotelyOpen(), isRemotelyClosed()
      • getRemoteSource

        Source getRemoteSource()
        Returns:
        the source Terminus for the remote end of this link.
      • getRemoteTarget

        <T extends Terminus> T getRemoteTarget()
        Returns the remote target Terminus cast to the given type. This can be used when the underlying type is known by the caller or as a control to validate the assumption of the underlying type.

        the currently set Target for this Link. A link target can be either a Target type for a Sender or Receiver link or if the link is to be transaction resource then the target type will be a Coordinator instance.

        Type Parameters:
        T - The type that the remote Terminus will be cast to on return.
        Returns:
        the source Terminus for the remote end of this link.
      • getRemoteSenderSettleMode

        SenderSettleMode getRemoteSenderSettleMode()
        Gets the remote link sender settlement mode, as conveyed from the peer via the Attach frame when attaching the link to the session.
        Returns:
        the sender settlement mode conveyed by the peer, or null if there was none.
        See Also:
        setSenderSettleMode(SenderSettleMode)
      • getRemoteReceiverSettleMode

        ReceiverSettleMode getRemoteReceiverSettleMode()
        Gets the remote link receiver settlement mode, as conveyed from the peer via the Attach frame when attaching the link to the session.
        Returns:
        the sender receiver mode conveyed by the peer, or null if there was none.
        See Also:
        setReceiverSettleMode(ReceiverSettleMode)
      • getRemoteMaxMessageSize

        UnsignedLong getRemoteMaxMessageSize()
        Gets the remote link max message size, as conveyed from the peer via the Attach frame when attaching the link to the session.
        Returns:
        the remote max message size conveyed by the peer, or null if none was set. 0 also means no limit.
      • getRemoteState

        LinkState getRemoteState()
        Returns:
        the remote link state (as last communicated)
      • localDetachHandler

        L localDetachHandler​(EventHandler<L> localDetachHandler)
        Sets a EventHandler for when an this link is detached locally via a call to detach() This is a convenience event that supplements the normal Endpoint.localCloseHandler(EventHandler) event point if set. If no local detached event handler is set the endpoint will route the detached event to the local closed event handler if set and allow it to process the event in one location.

        Typically used by clients for logging or other state update event processing. Clients should not perform any blocking calls within this context. It is an error for the handler to throw an exception and the outcome of doing so is undefined.

        Parameters:
        localDetachHandler - The EventHandler to notify when this link is locally detached.
        Returns:
        the link for chaining.
      • detachHandler

        L detachHandler​(EventHandler<L> remoteDetachHandler)
        Sets a EventHandler for when an AMQP Detach frame is received from the remote peer for this Link which would have been locally opened previously, the Detach from would have been marked as not having been closed.

        This is a convenience event that supplements the normal Endpoint.closeHandler(EventHandler) event point if set. If no detached event handler is set the endpoint will route the detached event to the closed event handler if set and allow it to process the event in one location.

        Parameters:
        remoteDetachHandler - The EventHandler to notify when this link is remotely closed.
        Returns:
        the Link for chaining.
      • creditStateUpdateHandler

        L creditStateUpdateHandler​(EventHandler<L> handler)
        Handler for link credit updates that occur after a remote Flow arrives.
        Parameters:
        handler - An event handler that will be signaled when the link credit is updated by a remote flow.
        Returns:
        the Link for chaining.
      • parentEndpointClosedHandler

        L parentEndpointClosedHandler​(EventHandler<L> handler)
        Sets a EventHandler for when the parent Session or Connection of this link is locally closed.

        Typically used by clients for logging or other state update event processing. Clients should not perform any blocking calls within this context. It is an error for the handler to throw an exception and the outcome of doing so is undefined.

        Parameters:
        handler - The EventHandler to notify when this link's parent Session is locally closed.
        Returns:
        the link for chaining.