All Classes and Interfaces
Class
Description
Skeleton handler that arms (encrypt) outbound and disarms (decrypt) inbound messages.
Acknowledges a
HelloMessage
.Signals that a direct routing path has been discovered to
PathEvent.getAddress()
and that this peer is registered at us as a children.Signals that a direct routing path has been discovered to
PathEvent.getAddress()
and that we are registered as a children as this peer.Signals that a direct routing path has been discovered to
PathEvent.getAddress()
.This object represents a session key agreement between two nodes.
This class represents an identifier for an
Agreement
between to nodes.Utility to colorize and style Strings with ANSI escape sequences.
Describes a message sent by an application running on drasyl.
This codec converts
ApplicationMessage
s to the embedded payload and vice versa.Describes a protocol message whose contents has been armed by using authenticated encryption with
associated data.
Utility class for operations on arrays.
The behavior of an node defines how it reacts to the events that it receives.
Immutable builder for creating
Behavior
by chaining event handlers.Describes a
DrasylNode
as a finite state machine.Factories for
Behavior
.A bloom filter is a probabilistic data structure that can quickly and efficiently check whether
an element is included in a set.
This Serializer (de)serializes
Boolean
objects.This Serializer (de)serializes byte arrays (just returns the byte array unchanged/uncopied).
Encodes
ByteBuf
s to InetAddressedMessage
s and vice versa.This Serializer (de)serializes
Byte
objects.Encodes
ByteBuf
s to GoBackNArqData
s and vice versa.This codec converts
ByteBuf
s to RemoteMessage
s an vice versa.Encodes
ByteBuf
s to StopAndWaitArqData
s and vice versa.Utility class for operations on bytes.
Signals that the path to the remote peer has been changed from direct to relayed or vice versa.
This Serializer (de)serializes
Character
objects.Exceptions related to the Chord protocol.
Chord routing table.
This handler performs some housekeeping tasks keeping the Chord circle stable.
Joins the Chord circle or will close the
Channel
.Triggers a lookup in the Chord circle to find the closest node for given
id
.This handler performs a lookup in the Chord table once an outbound
ChordLookup
message is
written to the channel.Reply sent in response to
ChordLookup
including the closest node for a given id
.Utility class for Chord-related operations.
Aggregates
MessageChunk
s to a ReassembledMessage
.Wraps each chunk of the specified
io.netty.handler.stream.ChunkedInput<io.netty.buffer.ByteBuf>
into a series of sortable MessageChunk
s, allowing the receiver to reassemble the ByteBuf
in correct order.This class wraps an object of type
T
and serves as a write many read many memory.This exception is thrown when a SEND CALL is performed on an already opened connection.
This exception is thrown when a OPEN call on an already opened connection is called.
This
ChannelInitializer
create a channel providing reliable and ordered delivery of bytes
between hosts.Signals that the connection is closing.
This exception is thrown when a connection is closing.
This exception is thrown when a
ChannelOutboundHandler.write(ChannelHandlerContext, Object, ChannelPromise)
call,
ChannelOutboundHandler.read(ChannelHandlerContext)
call,
ConnectionHandler.userCallStatus()
call,
ChannelOutboundHandler.close(ChannelHandlerContext, ChannelPromise)
call
is performed on a closed connection.Events emitted by
ConnectionHandler
.Exceptions thrown by
ConnectionHandler
.This handler provides reliable and ordered delivery of bytes between hosts.
Deprecated.
Deprecated.
Deprecated.
Signals that the handshake was completed successfully.
Deprecated.
Deprecated.
Deprecated.
Deprecated.
Deprecated.
Deprecated.
This exception is thrown, when the remote peer refuses to establish a connection with us.
This exception is thrown when a connection is aborted.
A special
BloomFilter
that allows you to remove elements.Util class that provides cryptography functions for drasyl.
A CryptoException is thrown by
Crypto
when errors occur.Encodes
CyclonMessage
messages to ByteBuf
s and vice versa.Interface to denote messages used by CYCLON.
A CYCLON neighbor.
Requests a CYCLON shuffle.
Response of a CYCLON shuffle request.
Initiates the "Enhanced Shuffling" algorithm of CYCLON.
Waits for
CyclonShuffleRequest
s sent by CyclonShufflingClientHandler
.Local peer's (partial) view of the network.
This class is responsible for storing the groups plugin options.
This exception signals an error occurred during execution in
DatabaseAdapter
implementations.Encodes
DatagramPacket
s to InetAddressedMessage
s and vice versa.This handler denies any (de)serialization and can be used to disable existing serializers.
Helper class for resolving hostnames to IP addresses.
This Serializer (de)serializes
Double
objects.Models the address to a peer in the overlay.
A virtual
Channel
for peer communication.This class represents the configuration for a
DrasylNode
.An
Exception
which is thrown by DrasylConfig
.All checked exceptions in drasyl inherit from this exception class.
Represents a node in the drasyl Overlay Network.
Initialize child
DrasylChannel
s used by DrasylNode
.Initialize the
DrasylServerChannel
used by DrasylNode
.Holds parent and child
EventLoop
s that are shared across all
DrasylNode
s.This interface is implemented by all drasyl plugins.
A virtual
ServerChannel
used for overlay network management.This class loads and binds the JNA
Sodium
.Simple wrapper class that make native class easier.
This class can be used to filter equal events for a given peer (identifies by
PathEvent.getAddress()
).Utility class for operations on
Duration
s.Describes an Event that provides the application with information about the local node, other
peers, connections or incoming messages.
This utility class can be used to monitor the number of pending tasks of
EventLoop
s.Utility class for operations on
EventLoopGroup
s.An implementation of
DrasylNode
that provides distinct methods for handling various
Event
types.A
Queue
that evicts head elements to ensure that the queue will not exceed its capacity
when new elements are enqueued.A
Map
that expires entries based on oldest age (when maximum size has been exceeded),
write time, or last access time.A
Set
that expires elements based on oldest age (when maximum size has been exceeded) or
writeThis Serializer (de)serializes
Float
objects.Describes a message whose content has been read completely.
This utility class lat you chain up
Future
s.Utility class for future-related operations.
Ack message of the Go-Back-N ARQ protocol.
Encodes
GoBackNArqMessage
s to ByteBuf
s and vice versa.Data message of the Go-Back-N ARQ protocol.
Message of the Go-Back-N ARQ protocol.
Performs the Go-Back-N ARQ receiver protocol.
Performs the Go-Back-N ARQ sender protocol.
A simple POJO that models a group.
Class is used to model the state of a group.
An event that is related to a
Group
.An event that signals that this node has successfully joined a group.
An event that signals, that a joining a specific group has failed.
This message is sent by the groups server to the client when the join to a group was not
successful.
Specifies the reason of the
GroupJoinFailedMessage
.This message is send by the groups client to the server to join a group.
This message is send by the groups client to the server to leave a group.
An event that signals that this node has left a group.
An event that signals that a new member joined a group.
An event that signals that a member has left a group.
This class represents the configuration for the
GroupsClientPlugin
.Implements the builder-pattern for this configuration.
This message is send by the groups client to the server.
Decodes
ByteBuf
s to GroupsClientMessage
s.Encodes
GroupsClientMessage
s to ByteBuf
s.The Groups Membership Client Plugin allows drasyl nodes to connect to membership managers at
startup to join groups.
This class starts a HTTP server with a REST API to manage groups and memberships.
This class represents the configuration for the
GroupsManagerPlugin
.Implements the builder-pattern for this configuration.
Starting point for the groups master plugin.
Default class for all messages of the groups plugin.
This message is send by the groups server to the client.
Encodes
GroupsServerMessage
s to ByteBuf
s.This class models the connection/join setting of a group.
This message is sent by the groups server to the client when the join to a group was successful.
Util class that provides hashing functions for drasyl.
Hash table based implementation of the
SetMultimap
interface.Describes a message that is used to announce this node to peers or to join a super node.
Util class that provides hexadecimal functions for drasyl.
This is an immutable object.
Represents the private identity of a peer (includes the proof of work, the public and private
key).
Class to read/write a
Identity
from/to a file.This class models an ed25519 public key that is used as node's unique overlay address.
This class models a ed25519 private key.
Closes inactive channels (to free up memory).
Immutable byte array implementation, that do not allow any modifications to the original input.
This event signals that the node was unable to process an inbound message.
A
SortedSet
where elements are ordered using their
natural ordering, or by a Comparator
provided at set creation
time, depending on which constructor is used.A message that wraps another message with an
InetSocketAddress
.Utility class for operations on
InetAddress
s.Utility class for operations on
URL
s.Class that provides utils for
InputStream
s.This Serializer (de)serializes
Integer
objects.Joins one or multiple super peer(s) as a children.
Operates as a super peer allowing other nodes to join as children.
Represents a pool of unique objects of type
T
.Uses shared memory to discover other drasyl nodes running on same JVM.
This exception is thrown when reading a
RemoteMessage
fails due to an invalid format.This handler filters out all messages received with invalid proof of work.
Signals that a message was received with an invalid
ProofOfWork
and was dropped.A serializer based on the Jackson Library for
converting java objects to and from JSON.
This Serializer (de)serializes
Serializable
objects.DatabaseAdapter
implementation that supports SQL databases.java.util.logging
logger.
Logger factory which creates a
java.util.logging
logger.
Holder for the JSON serializer and JSON deserializer.
This class models a curve25519 public key that is used for x25519 key exchange.
This class models a curve25519 private key that is used for x25519 key exchange.
This class is a simple holder for a key pair (a
IdentityPublicKey
and a IdentitySecretKey
).Encodes
ByteBuf
s exceeding LargeByteBufToChunkedMessageEncoder.maxChunkLength
to ChunkedMessageInput
s.Represents the very last chunk of a message that is too large to be transmitted as a whole.
Helper class to load the libsodium library from the preferred location.
Our local Chord node.
Uses the file system to discover other drasyl nodes running on the local computer.
This handler, along with the
UdpMulticastServer
or UdpBroadcastServer
, is used to
discover other nodes on the local network via IP multicast or broadcast.Provides loggers.
Utility class for logging-related operations.
Defines the set of logging levels.
This Serializer (de)serializes
Long
objects.Arms (encrypt) outbound and disarms (decrypt) inbound messages.
This event signals, that currently all messages from and to the
#peer
are only
encrypted with a long time key.Converts outbound messages addresses to us into inbound messages.
This exception is thrown when reading a
RemoteMessage
fails due to a mismatched magic
number (expected magic number: RemoteMessage.MAGIC_NUMBER
).Represents a confidential string (like a password or a secret token) whose content is masked in
MaskedString.toString()
.A decoder that splits received
ByteBuf
s into frames not larger then MaxLengthFrameDecoder.maxFrameLength
.An encoder that splits received
ByteBuf
s into frames not larger then MaxLengthFrameEncoder.maxFrameLength
.Class is used to model the state of a member.
This message is sent by the groups server to the client when a new member has joined a group.
This message is sent by the groups server to the client when a member has left a group.
Class is used to model the state of a group member.
Represents a chunk of a message that is too large to be transmitted as a whole.
Decodes
ByteBuf
s with correct magic number to MessageChunk
s.Encodes
MessageChunk
s to ByteBuf
s.Buffers until all
MessageChunk
s belonging to the same message have been collected, then
passes them in the correct order.Special
List
implementation which is used within our MessageChunksBuffer
.This event signals that the node has received a message addressed to it.
This handler serializes messages to
ByteBuf
and vice versa.Helper class to visualize the number of inbound and outbound messages per second.
A map in which more than one value may be associated with and returned for a given key
This class contains methods for MurmurHash3 generation.
This class helps to load native libraries, used with JNA.
Port Forwarding on NAT-enabled routers via NAT-PMP.
Utility class for NAT Port Mapping Protocol (NAT-PMP)-related stuff.
Utility class for network-related operations.
Used by
Event
to describe an event related to the local Node (e.g.This event signals that the node is shut down.
Events that refer to a
Node
.This event signals that the node has terminated normally.
This event signals that the node is currently not connected to a super peer.
This event signals that the node is currently connected to a super peer.
This event signals that the node encountered an unrecoverable error.
This event signals that the node has been started.
A
RemoteMessage
is uniquely identified by its Nonce.NONCE_LENGTH
bytes long nonce.A common annotation to declare that annotated elements cannot be
null
.As
null
values cannot be processed by a Channel
, we need a
special type representation this kind of messages.A common annotation to declare that annotated elements can be
null
under some
circumstance.This Serializer (de)serializes
null
only.Utility class for number-related operations.
Utility class that can be used to detect properties specific to the current runtime
environment/operating system, such as os name.
This handler filters out all messages received from other networks.
Signals that a message was received from another network and was dropped.
Traffic shaping handler that limits the number of outgoing messages per second.
Represents the outgoing segment queue that holds segments to be sent over a connection.
A message that wraps another message with a
DrasylAddress
.Encodes
OverlayAddressedMessage
s to AddressedEnvelope
messages and vice versa.A tuple of two elements.
Describes a message whose content has been read partially.
Classes implementing this interface signals that a direct routing path availability and/or the
relation (children/super peer) to a peer has changed.
Signals that a new RTT measurement for a routing path has been performed to
PathEvent.getAddress()
.Utility class for operations on
Path
es.Port Forwarding on NAT-enabled routers via PCP.
Utility class for Port Control Protocol (PCP)-related stuff.
Used by
Event
to describe an event related to a Peer (e.g.This event signals that the node has established a direct connection to a peer.
Represents an endpoint of a drasyl node.
Events that refer to a
Peer
.This event signals that communication with this peer is only possible by relaying messages via a
super peer.
A
ChannelHandler
that tracks all emitted PathEvent
s and
generates a list of all peers retrievable through PeersHandler.getPeers()
.This handler track received
PathEvent
s and will contain an internal state of all peers,
super peers, children, and available paths.This event signals, that currently all messages from and to the
#peer
are encrypted with
an ephemeral session key.Arms (encrypt) outbound and disarms (decrypt) inbound messages.
Utility class that can be used to detect properties specific to the current runtime environment,
such as Java version and the availability of the
sun.misc.Unsafe
object.Models environment information of a
DrasylPlugin
that are required by the plugin.This handler tries to create a port forwarding for the UDP server using different methods (PCP,
NAT-PMP, UPnP-IGD, etc.).
Represents a method for creating port forwarding (e.g., PCP, NAT-PMP, or UPnP-IGD).
Static convenience methods that help a method or constructor check whether it was invoked
correctly (that is, whether its preconditions were met).
This class models the private header of a drasyl protocol message.
This class models the proof of work for a given public key.
This Serializer (de)serializes
Message
objects.This class models the public header of a drasyl protocol message.
This handler handles subscribers and publications.
Encodes
PubSubMessage
s to ByteBuf
s and vice versa.Published
DefaultByteBufHolder.content()
()} to topic PubSubPublish.getTopic()
.Confirmation of a previous sent
PubSubPublish
message.This handler sends
PubSubPublish
messages to the PubSubPublishHandler.broker
.Subscribes to topic
PubSubSubscribe.getTopic()
.Confirmation of a previous sent
PubSubSubscribe
message.This handler subscribes to topics.
Unsubscribes from topic
PubSubUnsubscribe.getTopic()
.Confirmation of a previous sent
PubSubUnsubscribe
message.Utility class for receiving pseudorandom values.
This handler rate limits
AcknowledgementMessage
, HelloMessage
, and UniteMessage
messages addressed to us.Represents a message that has been reassembled from
MessageChunk
s.Decodes
ReassembledMessage
s to ByteBuf
s.Represents the receive buffer that holds incoming data received over a connection.
A
ChannelInitializer
for DrasylServerChannel
s that relays all messages through
super peers.Remote interface of a Chord node.
Describes a message that is sent to remote peers via UDP/TCP.
Signals that
PathEvent.getAddress()
is no longer registered at us as a
children because the direct routing path to that peer is no longer available.Signals that a direct routing path to
PathEvent.getAddress()
is no longer
available.Signals that we are no longer registered at as a children at
PathEvent.getAddress()
as the direct routing path to that peer is no longer
available.Represents the retransmission queue that holds segments that need to be retransmitted due to
timeout or loss in a connection.
Defines a cache for method invocation results of this
Class
or methods.The caller of the current remote message invocation will be written to the field with this
annotation.
Signals that a remove message invocation should be canceled.
A
ChannelHandler
that can invoke methods on remote objects that are
served on other nodes by RmiServerHandler
.Encodes
RmiMessage
messages to ByteBuf
s and vice versa.Indicates that a remote message invocation erroed.
Exception related to remote message invocations.
Remote message invocation-related message.
A invocation of a remote method.
The result of a remote message invocation.
A
ChannelHandler
that can serve local object whose methods then can be
invoked by remote nodes using RmiClientHandler
.Defines a timeout for all method invocations of this
Class
or methods.Utility class for remote method invocation-related operations.
Utility class for security-related operations.
Message used by
ConnectionHandler
to provide reliable and ordered delivery of bytes
between hosts.Encodes
ByteBuf
s to Segment
s and vice versa.Represents the send buffer that holds outgoing segments waiting to be sent over a connection.
Holds a
Map
with all available Serializer
s and the classes each serializer should
be used for.This class models the serialized payload of a drasyl application message.
A Serializer represents a bimap between an object and an array of bytes representing that
object.
This class contains some constants with the identifiers of default serializers.
Utility class for serial number arithmetic.
This class holds the current (long time/session | active/inactive/stale)
Agreements
between two nodes.Utility class for operations on
Set
s.This Serializer (de)serializes
Integer
objects.A simple wrapper for the given connection, that does not automatically close in a
try-with-resources block.
SLF4J logger.
Logger factory which creates a SLF4J logger.
A
DefaultEventLoop
that is aware of slow task executions.A
DefaultEventLoopGroup
that is aware of slow task executions.This handler measures the execution time of
ChannelInboundHandler.channelRead(ChannelHandlerContext, Object)
for every
ChannelInboundHandler
.This class presents a restricted view to the native sodium library.
Connection states.
This handler uses preconfigured static routes to deliver messages.
ACK message of the Stop-and-wait ARQ protocol.
Encodes
StopAndWaitArqMessage
s to ByteBuf
s and vice versa.DATA message of the Stop-and-wait ARQ protocol.
Performs the Stop-and-wait ARQ protocol.
Message of the Stop-and-wait ARQ protocol.
This Serializer (de)serializes
String
objects.Represents an IP range..
This handler monitors how long the node has not received a response from any super peer.
This handler passes messages from the
SocketChannel
to the
DrasylServerChannel
's context.Starts a TCP-based server, allowing clients in very restrictive networks that do not allow
UDP-based traffic to connect to this super peer via TCP.
Signals that the
TcpServer
was unable to bind to port.Signals that the
TcpServer
is bind to TcpServer.TcpServerBound.getPort()
.This handler passes all receiving messages to the pipeline and updates
TcpServerHandler.clients
on
new/closed connections.Send telemetry data (Neighbour list and, if desired, also the peers' ip addresses) to a given
http endpoint.
Utility class for operations on
Throwable
s.BiConsumer
that can throw checked Exception
s.BiFunction
that can throw checked Exception
s.This class implements the token bucket
algorithm as a leaky bucket.
Uses emitted
PathEvent
s to build the node's current world view of the overlay network.
Send Sequence Space
1 2 3 4
----------|----------|----------|----------
SND.UNA SND.NXT SND.UNA
+SND.WND
1 - old sequence numbers which have been acknowledged
2 - sequence numbers of unacknowledged data
3 - sequence numbers allowed for new data transmission
4 - future sequence numbers which are not yet allowed
A
ChannelInitializer
for DrasylServerChannel
s that tries to traverse (if any)
NATs with a fallback to relaying all messages through super peers.Extends
InternetDiscoveryChildrenHandler
by performing a rendezvous initiated by one of
our super peers.Extends
InternetDiscoverySuperPeerHandler
by performing a rendezvous on communication
between two children peers.A tuple of three elements.
Adapted from netty
TypeParameterMatcher
This class is used for obtaining full generics type information by sub-classing.
Starts an UDP broadcast server and together with the
LocalNetworkDiscovery
is responsible
for discovering other nodes in the local network.Starts an UDP server which joins a IP multicast group and together with the
LocalNetworkDiscovery
is responsible for discovering other nodes in the local network.Binds to an udp port, sends outgoing messages via udp, and sends received udp packets to the
Channel
.Signals that the
UdpServer
was unable to bind to given address.Signals that the
UdpServer
is bound to UdpServer.UdpServerBound.getBindAddress()
.This handler passes messages from the
DatagramChannel
to the
DrasylServerChannel
's context.Decodes
UnarmedProtocolMessage
s to FullReadMessage
s.Describes an unencrypted protocol message whose only public header has been read so far.
Re-uses address from messages with unconfirmed peers as last-resort.
This message is sent by a super node for NAT traversal.
This handler fails and drops all outbound
OverlayAddressedMessage
s.This class represents an unsigned short in a rang of [0, 256).
This class represents an unsigned integer in a rang of [0, 2^32)
This class represents an unsigned integer in a rang of [0, 2^24)
This class represents an unsigned short in a rang of [0, 2^16)
Indicates a public API that can change at any time (even in minor/bugfix releases).
Port Forwarding on NAT-enabled routers via UPnP-IGD.
Utility class for Universal Plug and Play (UPnP) Internet Gateway Device-related stuff.
Utility class for operations on
URI
s.Utility class for operations on
URL
s.A
EmbeddedChannel
that record all received user events.Helper class to visualize the
ChannelHandler
order of a given
ChannelPipeline
.Utility class for operations on websocket
URI
s (e.g.This class does model a sliding window in the Go-Back-N ARQ protocol.
This class wraps an object of type
T
and serves as a write once read many (worm) memory.