Class ProtonEngine
java.lang.Object
org.apache.qpid.protonj2.engine.impl.ProtonEngine
- All Implemented Interfaces:
- Consumer<ProtonBuffer>,- Engine
The default proton Engine implementation.
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionGets the Configuration for this engine.Gets theConnectioninstance that is associated with thisEngineinstance.engineFailed(Throwable cause) Transition theEngineto a failed state if not already closed or closing.errorHandler(EventHandler<Engine> handler) Sets a handler instance that will be notified when the engine encounters a fatal error.ingest(ProtonBuffer input) Provide data input for this Engine from some external source.booleanisFailed()booleanbooleanbooleanReturns true if the engine is accepting input from the ingestion entry points.outputHandler(BiConsumer<ProtonBuffer, Runnable> handler) Sets aBiConsumerinstance that will be notified when data from the engine is ready to be written to some output sink (socket etc).pipeline()Gets the EnginePipeline for this Engine.voidregisterSaslDriver(EngineSaslDriver saslDriver) Allows for registration of a customEngineSaslDriverthat will convey SASL state and configuration for this engine.Gets the SASL driver for this engine, if no SASL layer is configured then a default no-op driver must be returned that indicates this.shutdown()Shutdown the engine preventing any future outbound or inbound processing.shutdownHandler(EventHandler<Engine> handler) Sets a handler instance that will be notified when the engine is shut down via a call to theEngine.shutdown()method is called.start()Starts the engine and returns theConnectioninstance that is bound to this Engine.state()longtick(long currentTime) Prompt the engine to perform idle-timeout/heartbeat handling, and return an absolute deadline in milliseconds that tick must again be called by/at, based on the provided current time in milliseconds, to ensure the periodic work is carried out as necessary.tickAuto(ScheduledExecutorService executor) Allows the engine to manage idle timeout processing by providing it the single threaded executor context where all transport work is done which ensures singled threaded access while removing the need for the client library or server application to manage calls to theEngine.tick(long)methods.Allows the engine to manage idle timeout processing by providing it the single threaded executor context where all transport work is done which ensures singled threaded access while removing the need for the client library or server application to manage calls to theEngine.tick(long)methods.Methods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.qpid.protonj2.engine.Engineaccept, outputConsumer, outputHandler
- 
Constructor Details- 
ProtonEnginepublic ProtonEngine()
 
- 
- 
Method Details- 
connectionDescription copied from interface:EngineGets theConnectioninstance that is associated with thisEngineinstance. It is valid for an engine implementation to not return aConnectioninstance prior to the engine having been started.- Specified by:
- connectionin interface- Engine
- Returns:
- the Connectionthat is linked to this engine instance.
 
- 
isWritablepublic boolean isWritable()Description copied from interface:EngineReturns true if the engine is accepting input from the ingestion entry points.When false any attempts to write more data into the engine will result in an error being returned from the write operation. An engine that has not been started or that has been failed or shutdown will report as not writable. - Specified by:
- isWritablein interface- Engine
- Returns:
- true if the engine is current accepting more input.
 
- 
isRunningpublic boolean isRunning()
- 
isShutdownpublic boolean isShutdown()- Specified by:
- isShutdownin interface- Engine
- Returns:
- true if the Engine has been shutdown and is no longer usable.
 
- 
isFailedpublic boolean isFailed()
- 
failureCause- Specified by:
- failureCausein interface- Engine
- Returns:
- the error that caused the Enginefail and shutdown (or null if not failed).
 
- 
state
- 
startDescription copied from interface:EngineStarts the engine and returns theConnectioninstance that is bound to this Engine. A non-started Engine will not allow ingestion of any inbound data and a Connection linked to the engine that was obtained from theEngine.connection()method cannot produce any outbound data.- Specified by:
- startin interface- Engine
- Returns:
- the Connection instance that is linked to this Engine
- Throws:
- EngineStateException- if the Engine state has already transition to shutdown or failed.
 
- 
shutdownDescription copied from interface:EngineShutdown the engine preventing any future outbound or inbound processing. When the engine is shut down any resources,Connection,SessionorLinkinstances that have an engine shutdown event handler registered will be notified and should react by locally closing that resource if they wish to ensure that the resource's local close event handler gets signaled if that resource is not already locally closed.
- 
tickDescription copied from interface:EnginePrompt the engine to perform idle-timeout/heartbeat handling, and return an absolute deadline in milliseconds that tick must again be called by/at, based on the provided current time in milliseconds, to ensure the periodic work is carried out as necessary. It is an error to call this method if the connection has not been opened. A returned deadline of 0 indicates there is no periodic work necessitating tick be called, e.g. because neither peer has defined an idle-timeout value. The provided milliseconds time values should be derived from a monotonic source such asSystem.nanoTime()to prevent wall clock changes leading to erroneous behaviour. Note that forSystem.nanoTime()derived values in particular that the returned deadline could be a different sign than the originally given value, and so (if non-zero) the returned deadline should have the current time originally provided subtracted from it in order to establish a relative time delay to the next deadline. SupplyingSystem.currentTimeMillis()derived values can lead to erroneous behaviour during wall clock changes and so is not recommended. It is an error to call this method ifEngine.tickAuto(ScheduledExecutorService)was called.- Specified by:
- tickin interface- Engine
- Parameters:
- currentTime- the current time of this tick call.
- Returns:
- the absolute deadline in milliseconds to next call tick by/at, or 0 if there is none.
- Throws:
- IllegalStateException- if the- Engineis already performing auto tick handling.
- EngineStateException- if the Engine state precludes accepting new input.
 
- 
tickAutopublic ProtonEngine tickAuto(ScheduledExecutorService executor) throws IllegalStateException, EngineStateException Description copied from interface:EngineAllows the engine to manage idle timeout processing by providing it the single threaded executor context where all transport work is done which ensures singled threaded access while removing the need for the client library or server application to manage calls to theEngine.tick(long)methods.- Specified by:
- tickAutoin interface- Engine
- Parameters:
- executor- The single threaded execution context where all engine work takes place.
- Returns:
- this Engine
- Throws:
- IllegalStateException- if the- Engineis already performing auto tick handling.
- EngineStateException- if the Engine state precludes accepting new input.
 
- 
tickAutoDescription copied from interface:EngineAllows the engine to manage idle timeout processing by providing it the single threaded executor context where all transport work is done which ensures singled threaded access while removing the need for the client library or server application to manage calls to theEngine.tick(long)methods.- Specified by:
- tickAutoin interface- Engine
- Parameters:
- executor- The single threaded execution context where all engine work takes place.
- Returns:
- this Engine
- Throws:
- IllegalStateException- if the- Engineis already performing auto tick handling.
- EngineStateException- if the Engine state precludes accepting new input.
 
- 
ingestDescription copied from interface:EngineProvide data input for this Engine from some external source. If the engine is not writable when this method is called anEngineNotWritableExceptionwill be thrown if unless the reason for the not writable state is due to engine failure or the engine already having been shut down in which case the appropriateEngineStateExceptionwill be thrown to indicate the reason.- Specified by:
- ingestin interface- Engine
- Parameters:
- input- The data to feed into to Engine.
- Returns:
- this Engine
- Throws:
- EngineStateException- if the Engine state precludes accepting new input.
 
- 
engineFailedDescription copied from interface:EngineTransition theEngineto a failed state if not already closed or closing. If called when the engine has not failed the engine will be transitioned to the failed state and the method will return an appropriateEngineFailedExceptionthat wraps the given cause. If called after the engine was shutdown the method returns anEngineShutdownExceptionindicating that the engine was already shutdown. Repeated calls to this method while the engine is in the failed state must not alter the original failure error or elicit new engine failed event notifications.- Specified by:
- engineFailedin interface- Engine
- Parameters:
- cause- The exception that caused the engine to be forcibly transitioned to the failed state.
- Returns:
- an EngineStateExceptionthat can be thrown indicating the failure and engine state.
 
- 
outputHandlerDescription copied from interface:EngineSets aBiConsumerinstance that will be notified when data from the engine is ready to be written to some output sink (socket etc). TheRunnablevalue provided (if non-null) should be invoked once the I/O operation has completely successfully. If the event of an error writing the data the handler should throw an error or if performed asynchronously theEngineshould be marked failed via a call toEngine.engineFailed(Throwable).- Specified by:
- outputHandlerin interface- Engine
- Parameters:
- handler- The- ProtonBufferhandler instance that performs IO for the engine output.
- Returns:
- this Engine
 
- 
errorHandlerDescription copied from interface:EngineSets a handler instance that will be notified when the engine encounters a fatal error.- Specified by:
- errorHandlerin interface- Engine
- Parameters:
- handler- The- ProtonExceptionhandler instance that will be notified if the engine fails.
- Returns:
- this Engine
 
- 
shutdownHandlerDescription copied from interface:EngineSets a handler instance that will be notified when the engine is shut down via a call to theEngine.shutdown()method is called.- Specified by:
- shutdownHandlerin interface- Engine
- Parameters:
- handler- The- Engineinstance that was was explicitly shut down.
- Returns:
- this Engine
 
- 
pipelineDescription copied from interface:EngineGets the EnginePipeline for this Engine.- Specified by:
- pipelinein interface- Engine
- Returns:
- the EnginePipelinefor thisEngine.
 
- 
configurationDescription copied from interface:EngineGets the Configuration for this engine.- Specified by:
- configurationin interface- Engine
- Returns:
- the configuration object for this engine.
 
- 
saslDriverDescription copied from interface:EngineGets the SASL driver for this engine, if no SASL layer is configured then a default no-op driver must be returned that indicates this. The SASL driver provides the engine with client and server side SASL handshaking support. AnEngineimplementation can support pluggable SASL drivers or exert tight control over the driver as it sees fit.- Specified by:
- saslDriverin interface- Engine
- Returns:
- the SASL driver for the engine.
 
- 
registerSaslDriverAllows for registration of a customEngineSaslDriverthat will convey SASL state and configuration for this engine.- Parameters:
- saslDriver- The- EngineSaslDriverthat this engine will use.
- Throws:
- EngineStateException- if the engine state doesn't allow for changes
 
 
-