java.lang.Object
org.glassfish.grizzly.AbstractTransport
- All Implemented Interfaces:
MonitoringAware<TransportProbe>
,Transport
- Direct Known Subclasses:
NIOTransport
Abstract
Transport
. Implements common transport functionality.- Author:
- Alexey Stashok
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.glassfish.grizzly.Transport
Transport.State
-
Field Summary
Modifier and TypeFieldDescriptionprotected AttributeBuilder
Transport AttributeBuilder, which will be used to create Attributesprotected final DefaultMonitoringConfig<ConnectionProbe>
Connection probesprotected boolean
Transport modeprotected boolean
Deprecated.protected ExecutorService
Kernel thread pool.protected ThreadPoolConfig
protected boolean
protected MemoryManager
Transport MemoryManagerprotected String
Transport nameprotected Processor
Transport default Processorprotected ProcessorSelector
Transport default ProcessorSelectorprotected int
Transport default buffer size for read operationsprotected long
protected final StateHolder<Transport.State>
Transport state controllerprotected IOStrategy
Transport strategyprotected final DefaultMonitoringConfig<ThreadPoolProbe>
Thread pool probesprotected final DefaultMonitoringConfig<TransportProbe>
Transport probesprotected ThreadPoolConfig
protected ExecutorService
Worker thread poolprotected int
Transport default buffer size for write operationsprotected long
Fields inherited from interface org.glassfish.grizzly.Transport
DEFAULT_READ_BUFFER_SIZE, DEFAULT_READ_TIMEOUT, DEFAULT_WRITE_BUFFER_SIZE, DEFAULT_WRITE_TIMEOUT
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected abstract void
closeConnection
(Connection connection) Close the connection, managed by Transportvoid
configureBlocking
(boolean isBlocking) Sets theTransport
mode.protected abstract Object
Create the Transport JMX management object.GetTransport
associatedAttributeBuilder
, which will be used byTransport
and itsConnection
s to store customAttribute
s.Get the monitoring configuration for TransportConnection
s.Get theTransport
associatedMemoryManager
, which will be used by theTransport
, itsConnection
s and by during processing I/O events, occurred onConnection
s.Get the Transport monitoring configurationMonitoringConfig
.getName()
Gets theTransport
name.Gets the defaultProcessor
, which will processConnection
I/O events in case, ifConnection
doesn't have ownProcessor
preferences.Gets the defaultProcessorSelector
, which will be used to getProcessor
to processConnection
I/O events, in case if thisTransport
'sProcessor
is null andConnection
doesn't have neither preferredProcessor
norProcessorSelector
.int
Get the default size ofBuffer
s, which will be allocated for reading data fromTransport
'sConnection
s.long
getReadTimeout
(TimeUnit timeUnit) Returns the current value for the blocking read timeout converted to the providedTimeUnit
specification.getState()
Return theTransport
state controller.Get the monitoring configuration for Transport thread pool.Get a thread pool, which will run IOEvent processing (depending on TransportIOStrategy
) to let kernel threads continue their job.int
Get the default size ofBuffer
s, which will be allocated for writing data toTransport
'sConnection
s.long
getWriteTimeout
(TimeUnit timeUnit) Returns the current value for the blocking write timeout converted to the providedTimeUnit
specification.boolean
Returns theTransport
mode.boolean
isPaused()
boolean
boolean
Returns true, if this Transport is in stopped state, false otherwise.protected static void
notifyProbesBeforePause
(AbstractTransport transport) Notify registeredTransportProbe
s about the before-pause event.protected static void
notifyProbesBeforeResume
(AbstractTransport transport) Notify registeredTransportProbe
s about the before-resume event.protected static void
notifyProbesBeforeStart
(AbstractTransport transport) Notify registeredTransportProbe
s about the before-start event.protected static void
notifyProbesBeforeStop
(AbstractTransport transport) Notify registeredTransportProbe
s about the before-stop event.protected static void
notifyProbesConfigChanged
(AbstractTransport transport) Notify registeredTransportProbe
s about the config changed event.protected static void
notifyProbesPause
(AbstractTransport transport) Notify registeredTransportProbe
s about the pause event.protected static void
notifyProbesStop
(AbstractTransport transport) Notify registeredTransportProbe
s about the stop event.obtainProcessor
(IOEvent ioEvent, Connection connection) Gets the defaultProcessor
, which will process TransportConnection
s I/O events in case, ifConnection
doesn't have ownProcessor
preferences.void
setAttributeBuilder
(AttributeBuilder attributeBuilder) SetTransport
associatedAttributeBuilder
, which will be used byTransport
and itsConnection
s to store customAttribute
s.void
setIOStrategy
(IOStrategy IOStrategy) protected void
setKernelPool0
(ExecutorService kernelPool) void
setKernelThreadPool
(ExecutorService kernelPool) Set a thread pool which will run Transport internal tasks.void
setKernelThreadPoolConfig
(ThreadPoolConfig kernelPoolConfig) Set theThreadPoolConfig
to be used by the Transport internal thread pool.void
setMemoryManager
(MemoryManager memoryManager) Set theTransport
associatedMemoryManager
, which will be used by theTransport
, itsConnection
s and by during processing I/O events, occurred onConnection
s.void
Sets theTransport
name.void
setProcessor
(Processor processor) Sets the defaultProcessor
, which will processConnection
I/O events in case, ifConnection
doesn't have ownProcessor
preferences.void
setProcessorSelector
(ProcessorSelector selector) Sets the defaultProcessorSelector
, which will be used to getProcessor
to processConnection
I/O events, in case if thisTransport
'sProcessor
is null andConnection
doesn't have neither preferredProcessor
norProcessorSelector
.void
setReadBufferSize
(int readBufferSize) Set the default size ofBuffer
s, which will be allocated for reading data fromTransport
'sConnection
s.void
setReadTimeout
(long timeout, TimeUnit timeUnit) Specifies the timeout for the blocking reads.void
setWorkerThreadPool
(ExecutorService threadPool) Set a thread pool, which will run IOEvent processing (depending on TransportIOStrategy
) to let kernel threads continue their job.protected void
setWorkerThreadPool0
(ExecutorService threadPool) void
setWorkerThreadPoolConfig
(ThreadPoolConfig workerPoolConfig) Set theThreadPoolConfig
to be used by the worker thread pool.void
setWriteBufferSize
(int writeBufferSize) Set the default size ofBuffer
s, which will be allocated for writing data toTransport
'sConnection
s.void
setWriteTimeout
(long timeout, TimeUnit timeUnit) Specifies the timeout for the blocking writes.void
stop()
Deprecated.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.glassfish.grizzly.Transport
addShutdownListener, configureStandalone, fireIOEvent, getReader, getReader, getWriter, getWriter, notifyTransportError, pause, resume, shutdown, shutdown, shutdownNow, start
-
Field Details
-
name
Transport name -
isBlocking
protected volatile boolean isBlockingTransport mode -
isStandalone
Deprecated. -
state
Transport state controller -
processor
Transport default Processor -
processorSelector
Transport default ProcessorSelector -
strategy
Transport strategy -
memoryManager
Transport MemoryManager -
workerThreadPool
Worker thread pool -
kernelPool
Kernel thread pool. -
attributeBuilder
Transport AttributeBuilder, which will be used to create Attributes -
readBufferSize
protected int readBufferSizeTransport default buffer size for read operations -
writeBufferSize
protected int writeBufferSizeTransport default buffer size for write operations -
workerPoolConfig
-
kernelPoolConfig
-
managedWorkerPool
protected boolean managedWorkerPool -
writeTimeout
protected long writeTimeout -
readTimeout
protected long readTimeout -
transportMonitoringConfig
Transport probes -
connectionMonitoringConfig
Connection probes -
threadPoolMonitoringConfig
Thread pool probes
-
-
Constructor Details
-
AbstractTransport
-
-
Method Details
-
getName
Gets theTransport
name. -
setName
Sets theTransport
name. -
isBlocking
public boolean isBlocking()Returns theTransport
mode. true, ifTransport
is operating in blocking mode, or false otherwise. SpecificTransport
Connection
s may override this setting byConnection.isBlocking()
.- Specified by:
isBlocking
in interfaceTransport
- Returns:
- the
Transport
mode. true, ifTransport
is operating in blocking mode, or false otherwise.
-
configureBlocking
public void configureBlocking(boolean isBlocking) Sets theTransport
mode. SpecificTransport
Connection
s may override this setting byConnection.configureBlocking(boolean)
.- Specified by:
configureBlocking
in interfaceTransport
- Parameters:
isBlocking
- theTransport
mode. true, ifTransport
should operate in blocking mode, or false otherwise.
-
isStandalone
public boolean isStandalone()- Specified by:
isStandalone
in interfaceTransport
-
getState
Return theTransport
state controller. Using the state controller, it is possible to get/set theTransport
state in thread-safe manner.- Specified by:
getState
in interfaceTransport
- Returns:
StateHolder
state controller.
-
getReadBufferSize
public int getReadBufferSize()Get the default size ofBuffer
s, which will be allocated for reading data fromTransport
'sConnection
s. For particularConnection
, this setting could be overridden byConnection.getReadBufferSize()
.- Specified by:
getReadBufferSize
in interfaceTransport
- Returns:
- the default size of
Buffer
s, which will be allocated for reading data fromTransport
'sConnection
s.
-
setReadBufferSize
public void setReadBufferSize(int readBufferSize) Set the default size ofBuffer
s, which will be allocated for reading data fromTransport
'sConnection
s. For particularConnection
, this setting could be overridden byConnection.setReadBufferSize(int)
. If not explicitly configured, this value will be set toTransport.DEFAULT_READ_BUFFER_SIZE
.- Specified by:
setReadBufferSize
in interfaceTransport
- Parameters:
readBufferSize
- the default size ofBuffer
s, which will be allocated for reading data fromTransport
'sConnection
s.
-
getWriteBufferSize
public int getWriteBufferSize()Get the default size ofBuffer
s, which will be allocated for writing data toTransport
'sConnection
s. For particularConnection
, this setting could be overridden byConnection.getWriteBufferSize()
.- Specified by:
getWriteBufferSize
in interfaceTransport
- Returns:
- the default size of
Buffer
s, which will be allocated for writing data toTransport
'sConnection
s.
-
setWriteBufferSize
public void setWriteBufferSize(int writeBufferSize) Set the default size ofBuffer
s, which will be allocated for writing data toTransport
'sConnection
s. For particularConnection
, this setting could be overridden byConnection.setWriteBufferSize(int)
.- Specified by:
setWriteBufferSize
in interfaceTransport
- Parameters:
writeBufferSize
- the default size ofBuffer
s, which will be allocated for writing data toTransport
'sConnection
s.
-
isStopped
public boolean isStopped()Returns true, if this Transport is in stopped state, false otherwise. -
isPaused
public boolean isPaused() -
obtainProcessor
Gets the defaultProcessor
, which will process TransportConnection
s I/O events in case, ifConnection
doesn't have ownProcessor
preferences. IfTransport
associatedProcessor
is null, andConnection
doesn't have any preferredProcessor
- thenTransport
will try to getProcessor
usingProcessorSelector.select(IOEvent, Connection)
.- Specified by:
obtainProcessor
in interfaceTransport
- Parameters:
ioEvent
- the type of events the Processor should handleconnection
- connection to obtain Processor for- Returns:
- the default
Processor
, which will processConnection
I/O events, if one doesn't have ownProcessor
preferences.
-
getProcessor
Gets the defaultProcessor
, which will processConnection
I/O events in case, ifConnection
doesn't have ownProcessor
preferences. IfTransport
associatedProcessor
is null, andConnection
doesn't have any preferredProcessor
- thenTransport
will try to getProcessor
usingProcessorSelector.select(IOEvent, Connection)
.- Specified by:
getProcessor
in interfaceTransport
- Returns:
- the default
Processor
, which will processConnection
I/O events, if one doesn't have ownProcessor
preferences.
-
setProcessor
Sets the defaultProcessor
, which will processConnection
I/O events in case, ifConnection
doesn't have ownProcessor
preferences.- Specified by:
setProcessor
in interfaceTransport
- Parameters:
processor
- the defaultProcessor
, which will processConnection
I/O events, if one doesn't have ownProcessor
preferences.
-
getProcessorSelector
Gets the defaultProcessorSelector
, which will be used to getProcessor
to processConnection
I/O events, in case if thisTransport
'sProcessor
is null andConnection
doesn't have neither preferredProcessor
norProcessorSelector
.Transport
'sProcessorSelector
is the last place, whereTransport
will try to getProcessor
to processConnection
I/O event. IfProcessorSelector
is not set -IllegalStateException
will be thrown.- Specified by:
getProcessorSelector
in interfaceTransport
- Returns:
- the default
ProcessorSelector
, which will be used to getProcessor
to processConnection
I/O events, in case if thisTransport
'sProcessor
is null andConnection
doesn't have neither preferredProcessor
norProcessorSelector
.
-
setProcessorSelector
Sets the defaultProcessorSelector
, which will be used to getProcessor
to processConnection
I/O events, in case if thisTransport
'sProcessor
is null andConnection
doesn't have neither preferredProcessor
norProcessorSelector
.Transport
'sProcessorSelector
is the last place, whereTransport
will try to getProcessor
to processConnection
I/O event. IfProcessorSelector
is not set -IllegalStateException
will be thrown.- Specified by:
setProcessorSelector
in interfaceTransport
- Parameters:
selector
- the defaultProcessorSelector
, which will be used to getProcessor
to processConnection
I/O events, in case if thisTransport
'sProcessor
is null andConnection
doesn't have neither preferredProcessor
norProcessorSelector
.
-
getIOStrategy
Get theIOStrategy
implementation, which will be used byTransport
to processIOEvent
.IOStrategy
is responsible for choosing the way, how I/O event will be processed: using currentThread
, workerThread
; or make any other decisions.- Specified by:
getIOStrategy
in interfaceTransport
- Returns:
- the
IOStrategy
implementation, which will be used byTransport
to processIOEvent
.
-
setIOStrategy
Set theIOStrategy
implementation, which will be used byTransport
to processIOEvent
.IOStrategy
is responsible for choosing the way, how I/O event will be processed: using currentThread
, workerThread
; or make any other decisions.- Specified by:
setIOStrategy
in interfaceTransport
- Parameters:
IOStrategy
- theIOStrategy
implementation, which will be used byTransport
to processIOEvent
.
-
getMemoryManager
Get theTransport
associatedMemoryManager
, which will be used by theTransport
, itsConnection
s and by during processing I/O events, occurred onConnection
s.- Specified by:
getMemoryManager
in interfaceTransport
- Returns:
- the
Transport
associatedMemoryManager
, which will be used by theTransport
, itsConnection
s and by during processing I/O events, occurred onConnection
s.
-
setMemoryManager
Set theTransport
associatedMemoryManager
, which will be used by theTransport
, itsConnection
s and by during processing I/O events, occurred onConnection
s.- Specified by:
setMemoryManager
in interfaceTransport
- Parameters:
memoryManager
- theTransport
associatedMemoryManager
, which will be used by theTransport
, itsConnection
s and by during processing I/O events, occurred onConnection
s.
-
getWorkerThreadPool
Get a thread pool, which will run IOEvent processing (depending on TransportIOStrategy
) to let kernel threads continue their job.- Specified by:
getWorkerThreadPool
in interfaceTransport
- Returns:
ExecutorService
transport worker thread pool.
-
getKernelThreadPool
- Specified by:
getKernelThreadPool
in interfaceTransport
- Returns:
ExecutorService
responsible for running Transport internal tasks. For exampleSelectorRunner
threads for NIO.
-
setKernelThreadPool
Set a thread pool which will run Transport internal tasks. For exampleSelectorRunner
threads for NIO.- Specified by:
setKernelThreadPool
in interfaceTransport
- Parameters:
kernelPool
-ExecutorService
forSelectorRunner
s
-
setKernelThreadPoolConfig
Set theThreadPoolConfig
to be used by the Transport internal thread pool.- Specified by:
setKernelThreadPoolConfig
in interfaceTransport
- Parameters:
kernelPoolConfig
- kernel thread pool configuration.
-
setWorkerThreadPoolConfig
Set theThreadPoolConfig
to be used by the worker thread pool.- Specified by:
setWorkerThreadPoolConfig
in interfaceTransport
- Parameters:
workerPoolConfig
- worker thread pool configuration.
-
getKernelThreadPoolConfig
- Specified by:
getKernelThreadPoolConfig
in interfaceTransport
- Returns:
- the
ThreadPoolConfig
that will be used to construct theExecutorService
which will run theTransport
's internal tasks. For exampleSelectorRunner
s for NIO.
-
getWorkerThreadPoolConfig
- Specified by:
getWorkerThreadPoolConfig
in interfaceTransport
- Returns:
- the
ThreadPoolConfig
that will be used to construct theExecutorService
forIOStrategies
that require worker threads. Depending on theIOStrategy
being used, this may returnnull
.
-
setWorkerThreadPool
Set a thread pool, which will run IOEvent processing (depending on TransportIOStrategy
) to let kernel threads continue their job.- Specified by:
setWorkerThreadPool
in interfaceTransport
- Parameters:
threadPool
-ExecutorService
transport worker thread pool.
-
setWorkerThreadPool0
-
setKernelPool0
-
getAttributeBuilder
GetTransport
associatedAttributeBuilder
, which will be used byTransport
and itsConnection
s to store customAttribute
s.- Specified by:
getAttributeBuilder
in interfaceTransport
- Returns:
Transport
associatedAttributeBuilder
, which will be used byTransport
and itsConnection
s to store customAttribute
s.
-
setAttributeBuilder
SetTransport
associatedAttributeBuilder
, which will be used byTransport
and itsConnection
s to store customAttribute
s.- Specified by:
setAttributeBuilder
in interfaceTransport
- Parameters:
attributeBuilder
-Transport
associatedAttributeBuilder
, which will be used byTransport
and itsConnection
s to store customAttribute
s.
-
closeConnection
Close the connection, managed by Transport- Parameters:
connection
-NIOConnection
to close- Throws:
IOException
- not used
-
getConnectionMonitoringConfig
Get the monitoring configuration for TransportConnection
s.- Specified by:
getConnectionMonitoringConfig
in interfaceTransport
- Returns:
- the configuration
-
getMonitoringConfig
Get the Transport monitoring configurationMonitoringConfig
.- Specified by:
getMonitoringConfig
in interfaceMonitoringAware<TransportProbe>
- Specified by:
getMonitoringConfig
in interfaceTransport
- Returns:
- the object associated
MonitoringConfig
.
-
getThreadPoolMonitoringConfig
Get the monitoring configuration for Transport thread pool.- Specified by:
getThreadPoolMonitoringConfig
in interfaceTransport
- Returns:
- the configuration
-
getReadTimeout
Returns the current value for the blocking read timeout converted to the providedTimeUnit
specification. If this value hasn't been explicitly set, it will default to 30 seconds.- Specified by:
getReadTimeout
in interfaceTransport
- Parameters:
timeUnit
- theTimeUnit
to convert the returned result to.- Returns:
- the value of the read timeout
-
setReadTimeout
Specifies the timeout for the blocking reads. This may be overridden on a per-connection basis. A value of zero or less effectively disables the timeout.- Specified by:
setReadTimeout
in interfaceTransport
- Parameters:
timeout
- the new timeout valuetimeUnit
- theTimeUnit
specification of the provided value.- See Also:
-
getWriteTimeout
Returns the current value for the blocking write timeout converted to the providedTimeUnit
specification. If this value hasn't been explicitly set, it will default to 30 seconds.- Specified by:
getWriteTimeout
in interfaceTransport
- Parameters:
timeUnit
- theTimeUnit
to convert the returned result to.- Returns:
- the value of the write timeout
-
setWriteTimeout
Specifies the timeout for the blocking writes. This may be overridden on a per-connection basis. A value of zero or less effectively disables the timeout.- Specified by:
setWriteTimeout
in interfaceTransport
- Parameters:
timeout
- the new timeout valuetimeUnit
- theTimeUnit
specification of the provided value.- See Also:
-
notifyProbesBeforeStart
Notify registeredTransportProbe
s about the before-start event.- Parameters:
transport
- the Transport event occurred on.- Since:
- 3.0
-
notifyProbesBeforeStop
Notify registeredTransportProbe
s about the before-stop event.- Parameters:
transport
- the Transport event occurred on.- Since:
- 3.0
-
notifyProbesStop
Notify registeredTransportProbe
s about the stop event.- Parameters:
transport
- the Transport event occurred on.
-
notifyProbesBeforePause
Notify registeredTransportProbe
s about the before-pause event.- Parameters:
transport
- the Transport event occurred on.- Since:
- 3.0
-
notifyProbesPause
Notify registeredTransportProbe
s about the pause event.- Parameters:
transport
- the Transport event occurred on.
-
notifyProbesBeforeResume
Notify registeredTransportProbe
s about the before-resume event.- Parameters:
transport
- the Transport event occurred on.- Since:
- 3.0
-
notifyProbesConfigChanged
Notify registeredTransportProbe
s about the config changed event.- Parameters:
transport
- the Transport event occurred on.
-
stop
Deprecated.Stops the transport and closes all the connections- Specified by:
stop
in interfaceTransport
- Throws:
IOException
- if there was an error shutting down
-
createJmxManagementObject
Create the Transport JMX management object.- Returns:
- the Transport JMX management object.
-