Class RoutingContext


  • public class RoutingContext
    extends java.lang.Object

    This context object is what is seen by RoutingPolicy when doing both select() and merge(). It contains the necessary accessors to everything a policy is expected to need. An instance of this is created for every RoutingNode that contains a policy.

    Author:
    Simon Thoresen Hult
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addChild​(Route route)
      Adds a child routing context to this based on a given route.
      void addChildren​(java.util.List<Route> routes)
      This is a convenience method to more easily add a list of children to this.
      void addConsumableError​(int errorCode)
      Adds the given error code to the list of codes that the associated routing policy may consume.
      java.util.List<Route> getAllRecipients()
      Returns all configured recipients for this hop.
      RoutingNodeIterator getChildIterator()
      Returns an iterator for the child routing nodes of the owning node.
      java.lang.Object getContext()
      Returns the policy specific context object.
      PolicyDirective getDirective()
      Returns the policy directive that spawned this.
      int getDirectiveIndex()
      Returns the index of the hop directive that spawned this.
      Hop getHop()
      Returns the hop that contains the routing policy that spawned this.
      java.lang.String getHopPrefix()
      Returns the part of the route string that precedes the active policy directive.
      java.lang.String getHopSuffix()
      Returns the remainder of the route string immediately following the active policy directive.
      java.util.List<Route> getMatchedRecipients()
      Returns a list of all configured recipients whose first hop matches this.
      Message getMessage()
      Returns the message being routed.
      MessageBus getMessageBus()
      Returns the message bus instance on which this is running.
      com.yahoo.jrt.slobrok.api.IMirror getMirror()
      Returns the local mirror of the system's name server.
      int getNumChildren()
      Returns the number of children the owning routing node has.
      int getNumRecipients()
      Returns the number of configured recipients for this hop.
      Route getRecipient​(int idx)
      Returns the configured recipient at the given index.
      Reply getReply()
      Returns the reply generated by the associated routing policy.
      Route getRoute()
      Returns the route that contains the routing policy that spawned this.
      boolean getSelectOnRetry()
      Returns whether or not the policy is required to reselect if resending occurs.
      boolean hasChildren()
      Returns whether or not the owning routing node has any child nodes.
      boolean hasRecipients()
      Returns whether or not this hop has any configured recipients.
      boolean hasReply()
      Returns whether or not a reply is available.
      boolean isConsumableError​(int errorCode)
      Returns whether or not the given error code may be consumed by the associated routing policy.
      RoutingContext setContext​(java.lang.Object context)
      Sets a policy specific context object that will be available at merge().
      RoutingContext setError​(int code, java.lang.String msg)
      This is a convenience method to call setError(Error).
      RoutingContext setError​(Error err)
      This is a convenience method to assign an EmptyReply containing a single error to this.
      RoutingContext setReply​(Reply reply)
      Sets the reply generated by the associated routing policy.
      RoutingContext setSelectOnRetry​(boolean selectOnRetry)
      Sets whether or not the policy is required to reselect if resending occurs.
      boolean shouldTrace​(int level)
      Indicates if tracing is enabled at this level.
      java.lang.String toString()  
      void trace​(int level, java.lang.String note)
      Adds a string to the trace of the message being routed.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Method Detail

      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • hasRecipients

        public boolean hasRecipients()

        Returns whether or not this hop has any configured recipients.

        Returns:
        True if there is at least one recipient.
      • getNumRecipients

        public int getNumRecipients()

        Returns the number of configured recipients for this hop.

        Returns:
        The recipient count.
      • getRecipient

        public Route getRecipient​(int idx)

        Returns the configured recipient at the given index.

        Parameters:
        idx - The index of the recipient to return.
        Returns:
        The reipient at the given index.
      • getAllRecipients

        public java.util.List<Route> getAllRecipients()

        Returns all configured recipients for this hop.

        Returns:
        An unmodifiable list of recipients.
      • getMatchedRecipients

        public java.util.List<Route> getMatchedRecipients()

        Returns a list of all configured recipients whose first hop matches this.

        Returns:
        A modifiable list of recipients.
      • getSelectOnRetry

        public boolean getSelectOnRetry()

        Returns whether or not the policy is required to reselect if resending occurs.

        Returns:
        True to invoke RoutingPolicy.select(RoutingContext) on resend.
      • setSelectOnRetry

        public RoutingContext setSelectOnRetry​(boolean selectOnRetry)

        Sets whether or not the policy is required to reselect if resending occurs.

        Parameters:
        selectOnRetry - The value to set.
        Returns:
        This, to allow chaining.
      • getRoute

        public Route getRoute()

        Returns the route that contains the routing policy that spawned this.

        Returns:
        The route.
      • getHop

        public Hop getHop()

        Returns the hop that contains the routing policy that spawned this.

        Returns:
        The hop.
      • getDirectiveIndex

        public int getDirectiveIndex()

        Returns the index of the hop directive that spawned this.

        Returns:
        The directive index.
      • getDirective

        public PolicyDirective getDirective()

        Returns the policy directive that spawned this.

        Returns:
        The directive object.
      • getHopPrefix

        public java.lang.String getHopPrefix()

        Returns the part of the route string that precedes the active policy directive. This is the same as calling getHop().getPrefix(getDirectiveIndex()).

        Returns:
        The hop prefix.
      • getHopSuffix

        public java.lang.String getHopSuffix()

        Returns the remainder of the route string immediately following the active policy directive. This is the same as calling getHop().getSuffix(getDirectiveIndex()).

        Returns:
        The hop suffix.
      • getContext

        public java.lang.Object getContext()

        Returns the policy specific context object.

        Returns:
        The context.
      • setContext

        public RoutingContext setContext​(java.lang.Object context)

        Sets a policy specific context object that will be available at merge().

        Parameters:
        context - An arbitrary object.
        Returns:
        This, to allow chaining.
      • getMessage

        public Message getMessage()

        Returns the message being routed.

        Returns:
        The message.
      • trace

        public void trace​(int level,
                          java.lang.String note)

        Adds a string to the trace of the message being routed.

        Parameters:
        level - The level of the trace note.
        note - The note to add.
      • shouldTrace

        public boolean shouldTrace​(int level)
        Indicates if tracing is enabled at this level.
        Parameters:
        level - the level
        Returns:
        true if tracing is enabled at this level
      • hasReply

        public boolean hasReply()

        Returns whether or not a reply is available.

        Returns:
        True if a reply is set.
      • getReply

        public Reply getReply()

        Returns the reply generated by the associated routing policy.

        Returns:
        The reply.
      • setReply

        public RoutingContext setReply​(Reply reply)

        Sets the reply generated by the associated routing policy.

        Parameters:
        reply - The reply to set.
        Returns:
        This, to allow chaining.
      • setError

        public RoutingContext setError​(int code,
                                       java.lang.String msg)

        This is a convenience method to call setError(Error).

        Parameters:
        code - The code of the error to set.
        msg - The message of the error to set.
        Returns:
        This, to allow chaining.
      • setError

        public RoutingContext setError​(Error err)

        This is a convenience method to assign an EmptyReply containing a single error to this. This also fiddles with the trace object so that the error gets written to it.

        Parameters:
        err - The error to set.
        Returns:
        This, to allow chaining.
        See Also:
        setReply(Reply)
      • getMessageBus

        public MessageBus getMessageBus()

        Returns the message bus instance on which this is running.

        Returns:
        The message bus.
      • hasChildren

        public boolean hasChildren()

        Returns whether or not the owning routing node has any child nodes.

        Returns:
        True if there is at least one child.
      • getNumChildren

        public int getNumChildren()

        Returns the number of children the owning routing node has.

        Returns:
        The child count.
      • getChildIterator

        public RoutingNodeIterator getChildIterator()

        Returns an iterator for the child routing nodes of the owning node.

        Returns:
        The iterator.
      • addChild

        public void addChild​(Route route)

        Adds a child routing context to this based on a given route. This is the typical entry point a policy will use to select recipients during a RoutingPolicy.select(RoutingContext) invokation.

        Parameters:
        route - The route to contain in the child context.
      • addChildren

        public void addChildren​(java.util.List<Route> routes)

        This is a convenience method to more easily add a list of children to this. It will simply call the addChild(com.yahoo.messagebus.routing.Route) method for each element in the list.

        Parameters:
        routes - A list of routes to add as children.
      • getMirror

        public com.yahoo.jrt.slobrok.api.IMirror getMirror()

        Returns the local mirror of the system's name server.

        Returns:
        The mirror api.
      • addConsumableError

        public void addConsumableError​(int errorCode)

        Adds the given error code to the list of codes that the associated routing policy may consume. This is used to verify whether or not a resolved routing tree can succeed if sent. Because verification is only done before sending, the error types that must be added here are only those that can be generated by message bus itself.

        Parameters:
        errorCode - The code that might be consumed.
        See Also:
        RoutingNode.getUnconsumedErrors(), ErrorCode
      • isConsumableError

        public boolean isConsumableError​(int errorCode)

        Returns whether or not the given error code may be consumed by the associated routing policy.

        Parameters:
        errorCode - The code to check.
        Returns:
        True if the code may be consumed.
        See Also:
        addConsumableError(int)