Interface EnginePipeline

All Known Implementing Classes:
ProtonEnginePipeline, ProtonEnginePipelineProxy

public interface EnginePipeline
Pipeline of handlers for Engine work.
  • Method Details

    • engine

      Engine engine()
      Returns:
      the Engine that this pipeline is linked to.
    • addFirst

      EnginePipeline addFirst(String name, EngineHandler handler)
      Adds the given handler to the front of the pipeline with the given name stored for later lookup or remove operations. It is not mandatory that each handler have unique names although if handlers do share a name the remove(String) method will only remove them one at a time starting from the first in the pipeline.
      Parameters:
      name - The name to assign to the handler
      handler - The EngineHandler to add into the pipeline.
      Returns:
      this EnginePipeline.
      Throws:
      IllegalArgumentException - if name is null or empty or the handler is null
    • addLast

      EnginePipeline addLast(String name, EngineHandler handler)
      Adds the given handler to the end of the pipeline with the given name stored for later lookup or remove operations. It is not mandatory that each handler have unique names although if handlers do share a name the remove(String) method will only remove them one at a time starting from the first in the pipeline.
      Parameters:
      name - The name to assign to the handler
      handler - The EngineHandler to add into the pipeline.
      Returns:
      this EnginePipeline.
      Throws:
      IllegalArgumentException - if name is null or empty or the handler is null
    • removeFirst

      EnginePipeline removeFirst()
      Removes the first EngineHandler in the pipeline.
      Returns:
      this EnginePipeline.
    • removeLast

      EnginePipeline removeLast()
      Removes the last EngineHandler in the pipeline.
      Returns:
      this EnginePipeline.
    • remove

      EnginePipeline remove(String name)
      Removes the first handler that is found in the pipeline that matches the given name.
      Parameters:
      name - The name to search for in the pipeline moving from first to last.
      Returns:
      this EnginePipeline.
    • remove

      EnginePipeline remove(EngineHandler handler)
      Removes the given EngineHandler from the pipeline if present.
      Parameters:
      handler - The handler instance to remove if contained in the pipeline.
      Returns:
      this EnginePipeline.
    • find

      EngineHandler find(String name)
      Finds and returns first handler that is found in the pipeline that matches the given name.
      Parameters:
      name - The name to search for in the pipeline moving from first to last.
      Returns:
      the EngineHandler that matches the given name or null if none in the pipeline.
    • first

      EngineHandler first()
      Returns:
      the first EngineHandler in the pipeline or null if empty.
    • last

      Returns:
      the last EngineHandler in the pipeline or null if empty.
    • firstContext

      EngineHandlerContext firstContext()
      Returns:
      the first EngineHandlerContext in the pipeline or null if empty.
    • lastContext

      EngineHandlerContext lastContext()
      Returns:
      the last EngineHandlerContext in the pipeline or null if empty.
    • fireEngineStarting

      EnginePipeline fireEngineStarting()
      Fires an engine starting event to each handler in the pipeline. Should be used by the engine implementation to signal its handlers that they should initialize.
      Returns:
      this EnginePipeline.
    • fireEngineStateChanged

      EnginePipeline fireEngineStateChanged()
      Fires an engine state changed event to each handler in the pipeline. Should be used by the engine implementation to signal its handlers that they should respond to the new engine state, e.g. the engine failed or was shutdown.
      Returns:
      this EnginePipeline.
    • fireRead

      EnginePipeline fireRead(ProtonBuffer input)
      Fires a read event consisting of the given ProtonBuffer into the pipeline starting from the last EngineHandler in the pipeline and moving through each until the incoming work is fully processed. If the read events reaches the head of the pipeline and is not handled by any handler an error is thrown and the engine should enter the failed state.
      Parameters:
      input - The ProtonBuffer to inject into the engine pipeline.
      Returns:
      this EnginePipeline.
    • fireRead

      EnginePipeline fireRead(HeaderEnvelope header)
      Fires a read event consisting of the given HeaderEnvelope into the pipeline starting from the last EngineHandler in the pipeline and moving through each until the incoming work is fully processed. If the read events reaches the head of the pipeline and is not handled by any handler an error is thrown and the engine should enter the failed state.
      Parameters:
      header - The HeaderEnvelope to inject into the engine pipeline.
      Returns:
      this EnginePipeline.
    • fireRead

      EnginePipeline fireRead(SASLEnvelope envelope)
      Fires a read event consisting of the given SASLEnvelope into the pipeline starting from the last EngineHandler in the pipeline and moving through each until the incoming work is fully processed. If the read events reaches the head of the pipeline and is not handled by any handler an error is thrown and the engine should enter the failed state.
      Parameters:
      envelope - The SASLEnvelope to inject into the engine pipeline.
      Returns:
      this EnginePipeline.
    • fireRead

      Fires a read event consisting of the given IncomingAMQPEnvelope into the pipeline starting from the last EngineHandler in the pipeline and moving through each until the incoming work is fully processed. If the read events reaches the head of the pipeline and is not handled by any handler an error is thrown and the engine should enter the failed state.
      Parameters:
      envelope - The IncomingAMQPEnvelope to inject into the engine pipeline.
      Returns:
      this EnginePipeline.
    • fireWrite

      EnginePipeline fireWrite(HeaderEnvelope envelope)
      Fires a write event consisting of the given HeaderEnvelope into the pipeline starting from the first EngineHandler in the pipeline and moving through each until the outgoing work is fully processed. If the write events reaches the tail of the pipeline and is not handled by any handler an error is thrown and the engine should enter the failed state. It is expected that after the fire write method returns the given HeaderEnvelope will have been written or if held for later the object must be copied.
      Parameters:
      envelope - The HeaderEnvelope to inject into the engine pipeline.
      Returns:
      this EnginePipeline.
    • fireWrite

      EnginePipeline fireWrite(OutgoingAMQPEnvelope envelope)
      Fires a write event consisting of the given OutgoingAMQPEnvelope into the pipeline starting from the first EngineHandler in the pipeline and moving through each until the outgoing work is fully processed. If the write events reaches the tail of the pipeline and is not handled by any handler an error is thrown and the engine should enter the failed state. It is expected that after the fire write method returns the given OutgoingAMQPEnvelope will have been written or if held for later the object must be copied. When the payload given exceeds the maximum allowed frame size when encoded into an outbound frame the encoding handler should either throw an error in the case that the performative being written cannot truncate its payload or should invoke the payload to large handler of the envelope before re-encoding the outbound performative and truncating the payload.
      Parameters:
      envelope - The OutgoingAMQPEnvelope to inject into the engine pipeline.
      Returns:
      this EnginePipeline.
    • fireWrite

      EnginePipeline fireWrite(SASLEnvelope envelope)
      Fires a write event consisting of the given SASLEnvelope into the pipeline starting from the first EngineHandler in the pipeline and moving through each until the outgoing work is fully processed. If the write events reaches the tail of the pipeline and is not handled by any handler an error is thrown and the engine should enter the failed state. It is expected that after the fire write method returns the given SASLEnvelope will have been written or if held for later the object must be copied.
      Parameters:
      envelope - The SASLEnvelope to inject into the engine pipeline.
      Returns:
      this EnginePipeline.
    • fireWrite

      EnginePipeline fireWrite(ProtonBuffer buffer, Runnable ioComplete)
      Fires a write event consisting of the given ProtonBuffer into the pipeline starting from the first EngineHandler in the pipeline and moving through each until the outgoing work is fully processed. If the write events reaches the tail of the pipeline and is not handled by any handler an error is thrown and the engine should enter the failed state.
      Parameters:
      buffer - The ProtonBuffer to inject into the engine pipeline.
      ioComplete - An optional callback that should be signaled when the underlying transport complete the I/O write
      Returns:
      this EnginePipeline.
    • fireFailed

      Fires an engine failed event into each EngineHandler in the pipeline indicating that the engine is now failed and should not accept or produce new work.
      Parameters:
      failure - The cause of the engine failure.
      Returns:
      this EnginePipeline.