Uses of Interface
io.netty.channel.Channel
Packages that use Channel
Package
Description
The helper classes with fluent API which enable an easy implementation of
typical client side and server side channel initialization.
The core channel API which is asynchronous and event-driven abstraction of
various transports such as a
NIO Channel.
A virtual
Channel that helps wrapping a series of handlers to
unit test the handlers or use them in non-I/O context.Optimized transport for linux which uses EPOLL Edge-Triggered Mode
for maximal performance.
A channel registry which helps a user maintain the list of open
Channels and perform bulk operations on them.BSD specific transport.
A virtual transport that enables the communication between the two
parties in the same virtual machine.
NIO-based channel
API implementation - recommended for a large number of connections (>= 1000).
Old blocking I/O based channel API implementation - recommended for
a small number of connections (< 1000).
Implementations and API for
Channel pools.A serial and parallel port communication transport based on RXTX.
Abstract SCTP socket interfaces which extend the core channel API.
NIO-based SCTP Channel
API implementation - recommended for a large number of connections (>= 1000).
Old blocking I/O based SCTP channel API implementation - recommended for
a small number of connections (< 1000).
Abstract TCP and UDP socket interfaces which extend the core channel API.
NIO-based socket channel
API implementation - recommended for a large number of connections (>= 1000).
Old blocking I/O based socket channel API implementation - recommended for
a small number of connections (< 1000).
UDT Transport.
UDT Transport for NIO Channels.
Unix specific transport.
io_uring is a high I/O performance scalable interface for fully
asynchronous Linux syscalls.
Encoder, decoder, handshakers and their related message types for
Web Socket data frames.
Handlers for sending and receiving HTTP/2 frames.
HTTP/3 implementation.
QUIC implementation
Adds support for client connections via proxy protocols such as
SOCKS and
HTTP CONNECT tunneling
-
Uses of Channel in io.netty.bootstrap
Classes in io.netty.bootstrap with type parameters of type ChannelModifier and TypeClassDescriptionclassAbstractBootstrap<B extends AbstractBootstrap<B,C>, C extends Channel> AbstractBootstrapis a helper class that makes it easy to bootstrap aChannel.classAbstractBootstrapConfig<B extends AbstractBootstrap<B,C>, C extends Channel> Exposes the configuration of anAbstractBootstrap.interfaceChannelFactory<T extends Channel>Deprecated.Subclasses with type arguments of type Channel in io.netty.bootstrapMethods in io.netty.bootstrap with parameters of type ChannelModifier and TypeMethodDescriptionvoidChannelInitializerExtension.postInitializeClientChannel(Channel channel) Called byBootstrapafter the initialization of the given client channel.voidChannelInitializerExtension.postInitializeServerChildChannel(Channel channel) Called byServerBootstrapafter the initialization of the given child channel. -
Uses of Channel in io.netty.channel
Classes in io.netty.channel with type parameters of type ChannelModifier and TypeInterfaceDescriptioninterfaceChannelFactory<T extends Channel>Creates a newChannel.classChannelInitializer<C extends Channel>A specialChannelInboundHandlerwhich offers an easy way to initialize aChannelonce it was registered to itsEventLoop.classReflectiveChannelFactory<T extends Channel>AChannelFactorythat instantiates a newChannelby invoking its default constructor reflectively.protected static final classSubinterfaces of Channel in io.netty.channelModifier and TypeInterfaceDescriptioninterfaceClasses in io.netty.channel that implement ChannelModifier and TypeClassDescriptionclassA skeletalChannelimplementation.classA skeletal server-sideChannelimplementation.Subinterfaces with type arguments of type Channel in io.netty.channelModifier and TypeInterfaceDescriptioninterfaceA nexus to a network socket or a component which is capable of I/O operations such as read, write, connect, and bind.Classes in io.netty.channel that implement interfaces with type arguments of type ChannelModifier and TypeClassDescriptionprotected static final classFields in io.netty.channel declared as ChannelMethods in io.netty.channel that return ChannelModifier and TypeMethodDescriptionChannelFuture.channel()Returns a channel where the I/O operation associated with this future takes place.ChannelHandlerContext.channel()Return theChannelwhich is bound to theChannelHandlerContext.ChannelPipeline.channel()Returns theChannelthat this pipeline is attached to.ChannelPromise.channel()final ChannelDefaultChannelPipeline.channel()DefaultChannelProgressivePromise.channel()DefaultChannelPromise.channel()DelegatingChannelPromiseNotifier.channel()VoidChannelPromise.channel()default ChannelChannel.flush()SingleThreadEventLoop.ChannelsReadOnlyIterator.next()AbstractChannel.parent()Channel.parent()Returns the parent of this channel.default ChannelChannel.read()Methods in io.netty.channel that return types with arguments of type ChannelMethods in io.netty.channel with parameters of type ChannelModifier and TypeMethodDescriptionfinal intEventLoopGroup.register(Channel channel, ChannelPromise promise) Deprecated.UseEventLoopGroup.register(ChannelPromise)instead.default ChannelFutureDeprecated.final ChannelFutureDeprecated.final ChannelFutureManualIoEventLoop.register(Channel channel, ChannelPromise promise) Deprecated.MultithreadEventLoopGroup.register(Channel channel, ChannelPromise promise) Deprecated.SingleThreadEventLoop.register(Channel channel, ChannelPromise promise) Deprecated.ThreadPerChannelEventLoop.register(Channel channel, ChannelPromise promise) Deprecated.Deprecated.ThreadPerChannelEventLoopGroup.register(Channel channel, ChannelPromise promise) Deprecated.Constructors in io.netty.channel with parameters of type ChannelModifierConstructorDescriptionprotectedAbstractChannel(Channel parent) Creates a new instance.protectedAbstractChannel(Channel parent, ChannelId id) Creates a new instance.protectedAbstractCoalescingBufferQueue(Channel channel, int initSize) Create a new instance.CoalescingBufferQueue(Channel channel) CoalescingBufferQueue(Channel channel, int initSize) CoalescingBufferQueue(Channel channel, int initSize, boolean updateWritability) DefaultChannelConfig(Channel channel) protectedDefaultChannelConfig(Channel channel, RecvByteBufAllocator allocator) protectedDefaultChannelPipeline(Channel channel) DefaultChannelProgressivePromise(Channel channel) Creates a new instance.DefaultChannelProgressivePromise(Channel channel, EventExecutor executor) Creates a new instance.DefaultChannelPromise(Channel channel) Creates a new instance.DefaultChannelPromise(Channel channel, EventExecutor executor) Creates a new instance.PendingWriteQueue(Channel channel) VoidChannelPromise(Channel channel, boolean fireException) Creates a new instance. -
Uses of Channel in io.netty.channel.embedded
Classes in io.netty.channel.embedded that implement ChannelModifier and TypeClassDescriptionclassBase class forChannelimplementations that are used in an embedded fashion.Methods in io.netty.channel.embedded that return ChannelMethods in io.netty.channel.embedded with parameters of type ChannelConstructors in io.netty.channel.embedded with parameters of type ChannelModifierConstructorDescriptionEmbeddedChannel(Channel parent, ChannelId channelId, boolean register, boolean hasDisconnect, ChannelHandler... handlers) Create a new instance with the channel ID set to the given ID and the pipeline initialized with the specified handlers. -
Uses of Channel in io.netty.channel.epoll
Classes in io.netty.channel.epoll that implement ChannelModifier and TypeClassDescriptionclassclassfinal classDatagramChannelimplementation that uses linux EPOLL Edge-Triggered Mode for maximal performance.final classfinal classfinal classfinal classServerSocketChannelimplementation that uses linux EPOLL Edge-Triggered Mode for maximal performance.final classSocketChannelimplementation that uses linux EPOLL Edge-Triggered Mode for maximal performance.Methods in io.netty.channel.epoll that return ChannelModifier and TypeMethodDescriptionprotected abstract ChannelAbstractEpollServerChannel.newChildChannel(int fd, byte[] remote, int offset, int len) protected ChannelEpollServerDomainSocketChannel.newChildChannel(int fd, byte[] addr, int offset, int len) protected ChannelEpollServerSocketChannel.newChildChannel(int fd, byte[] address, int offset, int len) Methods in io.netty.channel.epoll that return types with arguments of type ChannelConstructors in io.netty.channel.epoll with parameters of type ChannelModifierConstructorDescriptionprotectedAbstractEpollStreamChannel(Channel parent, int fd) protectedAbstractEpollStreamChannel(Channel parent, LinuxSocket fd, SocketAddress remote) protectedEpollChannelConfig(Channel channel) protectedEpollChannelConfig(Channel channel, RecvByteBufAllocator recvByteBufAllocator) EpollDomainSocketChannel(Channel parent, LinuxSocket fd) -
Uses of Channel in io.netty.channel.group
Subclasses with type arguments of type Channel in io.netty.channel.groupSubinterfaces with type arguments of type Channel in io.netty.channel.groupModifier and TypeInterfaceDescriptioninterfaceClasses in io.netty.channel.group that implement interfaces with type arguments of type ChannelModifier and TypeClassDescriptionclassChannelExceptionwhich holdsChannelFutures that failed because of an error.Methods in io.netty.channel.group that return ChannelModifier and TypeMethodDescriptionMethods in io.netty.channel.group that return types with arguments of type ChannelModifier and TypeMethodDescriptionChannelGroupException.iterator()DefaultChannelGroup.iterator()Methods in io.netty.channel.group with parameters of type ChannelModifier and TypeMethodDescriptionbooleanReturns theChannelFutureof the individual I/O operation which is associated with the specifiedChannel.static ChannelMatcherReturns aChannelMatcherthat matches the givenChannel.static ChannelMatcherReturns aChannelMatcherthat matches allChannels except the given.booleanReturnstrueif the operation should be also executed on the givenChannel.Method parameters in io.netty.channel.group with type arguments of type ChannelModifier and TypeMethodDescriptionstatic ChannelMatcherChannelMatchers.isInstanceOf(Class<? extends Channel> clazz) Returns aChannelMatcherthat matches allChannels that are an instance of sub-type of the given class.static ChannelMatcherChannelMatchers.isNotInstanceOf(Class<? extends Channel> clazz) Returns aChannelMatcherthat matches allChannels that are not an instance of sub-type of the given class.Constructor parameters in io.netty.channel.group with type arguments of type ChannelModifierConstructorDescriptionChannelGroupException(Collection<Map.Entry<Channel, Throwable>> causes) -
Uses of Channel in io.netty.channel.kqueue
Classes in io.netty.channel.kqueue that implement ChannelModifier and TypeClassDescriptionclassclassfinal classfinal classfinal classfinal classfinal classfinal classMethods in io.netty.channel.kqueue that return ChannelModifier and TypeMethodDescriptionprotected ChannelKQueueServerDomainSocketChannel.newChildChannel(int fd, byte[] addr, int offset, int len) protected ChannelKQueueServerSocketChannel.newChildChannel(int fd, byte[] address, int offset, int len) -
Uses of Channel in io.netty.channel.local
Classes in io.netty.channel.local that implement ChannelModifier and TypeClassDescriptionclassAChannelfor the local transport.classAServerChannelfor the local transport which allows in VM communication. -
Uses of Channel in io.netty.channel.nio
Classes in io.netty.channel.nio that implement ChannelModifier and TypeClassDescriptionclassAbstractNioChannelbase class forChannels that operate on bytes.classAbstract base class forChannelimplementations which use a Selector based approach.classAbstractNioChannelbase class forChannels that operate on messages.Methods in io.netty.channel.nio that return types with arguments of type ChannelConstructors in io.netty.channel.nio with parameters of type ChannelModifierConstructorDescriptionprotectedAbstractNioByteChannel(Channel parent, SelectableChannel ch) Create a new instanceprotectedAbstractNioChannel(Channel parent, SelectableChannel ch, int readOps) Create a new instanceprotectedAbstractNioChannel(Channel parent, SelectableChannel ch, NioIoOps readOps) protectedAbstractNioMessageChannel(Channel parent, SelectableChannel ch, int readInterestOp) protectedAbstractNioMessageChannel(Channel parent, SelectableChannel ch, NioIoOps readOps) -
Uses of Channel in io.netty.channel.oio
Classes in io.netty.channel.oio that implement ChannelModifier and TypeClassDescriptionclassDeprecated.use NIO / EPOLL / KQUEUE transport.classDeprecated.use NIO / EPOLL / KQUEUE transport.classDeprecated.use NIO / EPOLL / KQUEUE transport.classDeprecated.use NIO / EPOLL / KQUEUE transport.Constructors in io.netty.channel.oio with parameters of type ChannelModifierConstructorDescriptionprotectedAbstractOioByteChannel(Channel parent) Deprecated.protectedAbstractOioChannel(Channel parent) Deprecated.protectedAbstractOioMessageChannel(Channel parent) Deprecated.protectedOioByteStreamChannel(Channel parent) Deprecated.Create a new instance -
Uses of Channel in io.netty.channel.pool
Methods in io.netty.channel.pool that return ChannelModifier and TypeMethodDescriptionprotected ChannelSimpleChannelPool.pollChannel()Poll aChannelout of the internal storage to reuse it.Methods in io.netty.channel.pool that return types with arguments of type ChannelModifier and TypeMethodDescriptionChannelPool.acquire()Acquire aChannelfrom thisChannelPool.Acquire aChannelfrom thisChannelPool.SimpleChannelPool.acquire()Methods in io.netty.channel.pool with parameters of type ChannelModifier and TypeMethodDescriptionvoidAbstractChannelPoolHandler.channelAcquired(Channel ch) NOOP implementation, sub-classes may override this.voidChannelPoolHandler.channelAcquired(Channel ch) Called once aChannelwas acquired by callingChannelPool.acquire()orChannelPool.acquire(Promise).voidChannelPoolHandler.channelCreated(Channel ch) Called once a newChannelis created in theChannelPool.voidAbstractChannelPoolHandler.channelReleased(Channel ch) NOOP implementation, sub-classes may override this.voidChannelPoolHandler.channelReleased(Channel ch) Called once aChannelwas released by callingChannelPool.release(Channel)orChannelPool.release(Channel, Promise).Check if the given channel is healthy which means it can be used.protected booleanSimpleChannelPool.offerChannel(Channel channel) Offer aChannelback to the internal storage.Release aChannelback to thisChannelPool.Release aChannelback to thisChannelPool.Method parameters in io.netty.channel.pool with type arguments of type Channel -
Uses of Channel in io.netty.channel.rxtx
Classes in io.netty.channel.rxtx that implement ChannelModifier and TypeClassDescriptionclassDeprecated.this transport will be removed in the next major version. -
Uses of Channel in io.netty.channel.sctp
Subinterfaces of Channel in io.netty.channel.sctpModifier and TypeInterfaceDescriptioninterfaceA SCTP/IPChannelinterface for single SCTP association.interfaceA SCTP/IPServerChannelwhich accepts incoming SCTP/IP associations. -
Uses of Channel in io.netty.channel.sctp.nio
Classes in io.netty.channel.sctp.nio that implement ChannelModifier and TypeClassDescriptionclassSctpChannelimplementation which use non-blocking mode and allows to read / writeSctpMessages to the underlyingSctpChannel.classSctpServerChannelimplementation which use non-blocking mode to accept new connections and create theNioSctpChannelfor them.Constructors in io.netty.channel.sctp.nio with parameters of type ChannelModifierConstructorDescriptionNioSctpChannel(Channel parent, SctpChannel sctpChannel) Create a new instance -
Uses of Channel in io.netty.channel.sctp.oio
Classes in io.netty.channel.sctp.oio that implement ChannelModifier and TypeClassDescriptionclassDeprecated.useNioSctpChannel.classDeprecated.useNioSctpServerChannel.Constructors in io.netty.channel.sctp.oio with parameters of type ChannelModifierConstructorDescriptionOioSctpChannel(Channel parent, SctpChannel ch) Deprecated.Create a new instance from the givenSctpChannel. -
Uses of Channel in io.netty.channel.socket
Subinterfaces of Channel in io.netty.channel.socketModifier and TypeInterfaceDescriptioninterfaceA UDP/IPChannel.interfaceA duplexChannelthat has two sides that can be shutdown independently.interfaceA TCP/IPServerChannelwhich accepts incoming TCP/IP connections.interfaceA TCP/IP socketChannel. -
Uses of Channel in io.netty.channel.socket.nio
Classes in io.netty.channel.socket.nio that implement ChannelModifier and TypeClassDescriptionfinal classAn NIO datagramChannelthat sends and receives anAddressedEnvelopeinvalid input: '<'ByteBuf, SocketAddress>.final classDuplexChannelwhich uses NIO selector based implementation to support UNIX Domain Sockets.final classAServerChannelimplementation which uses NIO selector based implementation to support UNIX Domain Sockets.classAServerSocketChannelimplementation which uses NIO selector based implementation to accept new connections.classSocketChannelwhich uses NIO selector based implementation.Constructors in io.netty.channel.socket.nio with parameters of type ChannelModifierConstructorDescriptionNioDomainSocketChannel(Channel parent, SocketChannel socket) Create a new instanceNioSocketChannel(Channel parent, SocketChannel socket) Create a new instance -
Uses of Channel in io.netty.channel.socket.oio
Classes in io.netty.channel.socket.oio that implement ChannelModifier and TypeClassDescriptionclassDeprecated.use NIO / EPOLL / KQUEUE transport.classDeprecated.use NIO / EPOLL / KQUEUE transport.classDeprecated.use NIO / EPOLL / KQUEUE transport.Constructors in io.netty.channel.socket.oio with parameters of type ChannelModifierConstructorDescriptionOioSocketChannel(Channel parent, Socket socket) Deprecated.Create a new instance from the givenSocket -
Uses of Channel in io.netty.channel.udt
Subinterfaces of Channel in io.netty.channel.udtModifier and TypeInterfaceDescriptioninterfaceDeprecated.The UDT transport is no longer maintained and will be removed.interfaceDeprecated.The UDT transport is no longer maintained and will be removed. -
Uses of Channel in io.netty.channel.udt.nio
Classes in io.netty.channel.udt.nio that implement ChannelModifier and TypeClassDescriptionclassDeprecated.The UDT transport is no longer maintained and will be removed.classDeprecated.The UDT transport is no longer maintained and will be removed.classDeprecated.The UDT transport is no longer maintained and will be removed.classDeprecated.The UDT transport is no longer maintained and will be removed.classDeprecated.The UDT transport is no longer maintained and will be removed.classDeprecated.The UDT transport is no longer maintained and will be removed.classDeprecated.The UDT transport is no longer maintained and will be removed.Methods in io.netty.channel.udt.nio with parameters of type ChannelModifier and TypeMethodDescriptionstatic com.barchart.udt.nio.ChannelUDTNioUdtProvider.channelUDT(Channel channel) Deprecated.Expose underlyingChannelUDTfor debugging and monitoring.static com.barchart.udt.SocketUDTDeprecated.Expose underlyingSocketUDTfor debugging and monitoring.Constructors in io.netty.channel.udt.nio with parameters of type ChannelModifierConstructorDescriptionNioUdtByteConnectorChannel(Channel parent, com.barchart.udt.nio.SocketChannelUDT channelUDT) Deprecated.NioUdtMessageConnectorChannel(Channel parent, com.barchart.udt.nio.SocketChannelUDT channelUDT) Deprecated. -
Uses of Channel in io.netty.channel.unix
Subinterfaces of Channel in io.netty.channel.unixModifier and TypeInterfaceDescriptioninterfaceAUnixChannelthat supports communication via UNIX domain datagram sockets.interfaceAUnixChannelthat supports communication via Unix Domain Socket.interfaceinterfaceChannelthat expose operations that are only present onUNIXlike systems. -
Uses of Channel in io.netty.channel.uring
Classes in io.netty.channel.uring that implement ChannelModifier and TypeClassDescriptionfinal classfinal classDomainSocketChannelimplementation that uses linux io_uringfinal classfinal classfinal class -
Uses of Channel in io.netty.handler.codec.http.websocketx
Methods in io.netty.handler.codec.http.websocketx with parameters of type ChannelModifier and TypeMethodDescriptionWebSocketClientHandshaker.close(Channel channel, CloseWebSocketFrame frame) Performs the closing handshake.WebSocketClientHandshaker.close(Channel channel, CloseWebSocketFrame frame, ChannelPromise promise) Performs the closing handshake When called from within aChannelHandleryou most likely want to useWebSocketClientHandshaker.close(ChannelHandlerContext, CloseWebSocketFrame, ChannelPromise).WebSocketServerHandshaker.close(Channel channel, CloseWebSocketFrame frame) Performs the closing handshake.WebSocketServerHandshaker.close(Channel channel, CloseWebSocketFrame frame, ChannelPromise promise) Performs the closing handshake.WebSocketServerHandshaker00.close(Channel channel, CloseWebSocketFrame frame, ChannelPromise promise) Echo back the closing framefinal voidWebSocketClientHandshaker.finishHandshake(Channel channel, FullHttpResponse response) Validates and finishes the opening handshake initiated byWebSocketClientHandshaker.handshake(Channel)}.Begins the opening handshakefinal ChannelFutureWebSocketClientHandshaker.handshake(Channel channel, ChannelPromise promise) Begins the opening handshakeWebSocketServerHandshaker.handshake(Channel channel, FullHttpRequest req) Performs the opening handshake.final ChannelFutureWebSocketServerHandshaker.handshake(Channel channel, FullHttpRequest req, HttpHeaders responseHeaders, ChannelPromise promise) Performs the opening handshake When call this method you MUST NOT retain theFullHttpRequestwhich is passed in.WebSocketServerHandshaker.handshake(Channel channel, HttpRequest req) Performs the opening handshake.final ChannelFutureWebSocketServerHandshaker.handshake(Channel channel, HttpRequest req, HttpHeaders responseHeaders, ChannelPromise promise) Performs the opening handshake When call this method you MUST NOT retain theHttpRequestwhich is passed in.final ChannelFutureWebSocketClientHandshaker.processHandshake(Channel channel, HttpResponse response) Process the opening handshake initiated byWebSocketClientHandshaker.handshake(Channel)}.final ChannelFutureWebSocketClientHandshaker.processHandshake(Channel channel, HttpResponse response, ChannelPromise promise) Process the opening handshake initiated byWebSocketClientHandshaker.handshake(Channel)}.static ChannelFutureWebSocketServerHandshakerFactory.sendUnsupportedVersionResponse(Channel channel) Return that we need cannot support the web socket versionstatic ChannelFutureWebSocketServerHandshakerFactory.sendUnsupportedVersionResponse(Channel channel, ChannelPromise promise) Return that we need cannot support the web socket versionstatic voidWebSocketServerHandshakerFactory.sendUnsupportedWebSocketVersionResponse(Channel channel) -
Uses of Channel in io.netty.handler.codec.http2
Subinterfaces of Channel in io.netty.handler.codec.http2Constructors in io.netty.handler.codec.http2 with parameters of type Channel -
Uses of Channel in io.netty.handler.codec.http3
Methods in io.netty.handler.codec.http3 with parameters of type ChannelModifier and TypeMethodDescriptionstatic @Nullable QuicStreamChannelHttp3.getLocalControlStream(Channel channel) Returns the local initiated control stream for the HTTP/3 connection. -
Uses of Channel in io.netty.handler.codec.quic
Subinterfaces of Channel in io.netty.handler.codec.quicMethods in io.netty.handler.codec.quic with parameters of type ChannelModifier and TypeMethodDescriptionprotected abstract voidQuicCodecDispatcher.initChannel(Channel channel, int localConnectionIdLength, QuicConnectionIdGenerator idGenerator) Init theChanneland add all the neededChannelHandlerto the pipeline.static QuicChannelBootstrapQuicChannel.newBootstrap(Channel channel) Creates a newQuicChannelBootstrapthat can be used to create and connect newQuicChannels to endpoints using the givenChannelas transport layer.Constructors in io.netty.handler.codec.quic with parameters of type ChannelModifierConstructorDescriptionQuicChannelBootstrap(Channel parent) Deprecated.Use QuicChannel.newBootstrap() instead. -
Uses of Channel in io.netty.handler.proxy
Methods in io.netty.handler.proxy that return types with arguments of type ChannelModifier and TypeMethodDescriptionProxyHandler.connectFuture()Returns aFuturethat is notified when the connection to the destination has been established or the connection attempt has failed. -
Uses of Channel in io.netty.handler.ssl
Methods in io.netty.handler.ssl that return types with arguments of type ChannelModifier and TypeMethodDescriptionSslHandler.handshakeFuture()Returns aFuturethat will get notified once the current TLS handshake completes.SslHandler.renegotiate()Performs TLS renegotiation.SslHandler.renegotiate(Promise<Channel> promise) Performs TLS renegotiation.SslHandler.sslCloseFuture()Method parameters in io.netty.handler.ssl with type arguments of type ChannelModifier and TypeMethodDescriptionSslHandler.renegotiate(Promise<Channel> promise) Performs TLS renegotiation.
ChannelFactoryinstead.