public final class NioNetworking extends Object implements Networking, DynamicMetricsProvider
Networking
implementation that makes use of
Selector
to have a limited set of io threads, handle
an arbitrary number of connections.
Each NioChannel
has 2 parts:
NioInboundPipeline
: triggered by the NioThread when data is available
in the socket. The NioInboundPipeline takes care of reading data from the socket
and calling the appropriate
InboundHandler
NioOutboundPipeline
: triggered by the NioThread when either space
is available in the socket for writing, or when there is something that needs to
be written e.g. a Packet. The NioOutboundPipeline takes care of calling the
appropriate OutboundHandler
to convert the OutboundFrame
to bytes
in in the ByteBuffer and writing it to the socket.
By default the NioThread
blocks on the Selector, but it can be put in a
'selectNow' mode that makes it spinning on the selector. This is an experimental
feature and will cause the io threads to run hot. For this reason, when this feature
is enabled, the number of io threads should be reduced (preferably 1).
Modifier and Type | Class and Description |
---|---|
static class |
NioNetworking.Context |
Constructor and Description |
---|
NioNetworking(NioNetworking.Context ctx) |
Modifier and Type | Method and Description |
---|---|
Set<NioChannel> |
getChannels() |
NioThread[] |
getInputThreads() |
IOBalancer |
getIOBalancer() |
NioThread[] |
getOutputThreads() |
void |
provideDynamicMetrics(MetricTaggerSupplier taggerSupplier,
MetricsExtractor extractor)
Metrics collection callback that is called in every metric collection
cycle.
|
Channel |
register(EndpointQualifier endpointQualifier,
ChannelInitializerProvider channelInitializerProvider,
SocketChannel socketChannel,
boolean clientMode)
Registers the SocketChannel to the EventLoop group and returns the
created Channel.
|
void |
restart()
Restarts Networking.
|
void |
shutdown()
Shuts down Networking and closes all registered channels.
|
public NioNetworking(NioNetworking.Context ctx)
public NioThread[] getInputThreads()
public NioThread[] getOutputThreads()
public Set<NioChannel> getChannels()
public IOBalancer getIOBalancer()
public void restart()
Networking
Networking.shutdown()
has been completed. This is useful if you
temporarily want to disable networking (e.g. dealing with merging). You should not call this
method when the Networking is still running; first you need to call Networking.shutdown()
.restart
in interface Networking
public void shutdown()
Networking
shutdown
in interface Networking
public Channel register(EndpointQualifier endpointQualifier, ChannelInitializerProvider channelInitializerProvider, SocketChannel socketChannel, boolean clientMode) throws IOException
Networking
Channel.start()
needs to be called.
In the future we need to think about passing the socket channel because
it binds Networking to tcp and this is not desirable.register
in interface Networking
endpointQualifier
- the endpoint qualifier for this server socketchannelInitializerProvider
- the class used for initializing the Channel after creationsocketChannel
- the socketChannel to registerclientMode
- if the channel is made in clientMode or server modeIOException
- when something failed while registering the
socketChannelpublic void provideDynamicMetrics(MetricTaggerSupplier taggerSupplier, MetricsExtractor extractor)
DynamicMetricsProvider
MetricsExtractor
passed in argument.provideDynamicMetrics
in interface DynamicMetricsProvider
extractor
- The consumer of the collected metricsCopyright © 2019 Hazelcast, Inc.. All rights reserved.