Class DiscoveryMessage

java.lang.Object
org.drasyl.handler.remote.protocol.DiscoveryMessage
All Implemented Interfaces:
FullReadMessage<DiscoveryMessage>, RemoteMessage

public abstract class DiscoveryMessage extends Object
  • Field Details

  • Constructor Details

    • DiscoveryMessage

      public DiscoveryMessage()
  • Method Details

    • getRecipient

      @Nullable public abstract DrasylAddress getRecipient()
      Returns the IdentityPublicKey of the message recipient. If the message has no recipient (e.g. because it is a multicast message) null is returned.
      Returns:
    • getTime

      public abstract long getTime()
      Returns the time this message has been sent.
    • getChildrenTime

      public abstract long getChildrenTime()
      If the value is greater than 0, it indicates that this node wants to join the receiver as a child. For this, the receiver must be configured as a super node. In all other cases, the message is used to announce this node's presence to the recipient.
    • incrementHopCount

      public DiscoveryMessage incrementHopCount()
      Description copied from interface: FullReadMessage
      Returns this message with incremented hop count.
      Returns:
      this message with incremented hop count.
    • writePrivateHeaderTo

      protected void writePrivateHeaderTo(io.netty.buffer.ByteBuf out)
    • writeBodyTo

      protected void writeBodyTo(io.netty.buffer.ByteBuf out)
    • of

      public static DiscoveryMessage of(HopCount hopCount, boolean isArmed, int networkId, Nonce nonce, DrasylAddress recipient, DrasylAddress sender, ProofOfWork proofOfWork, long time, long joinTime)
      Creates new application message.
      Parameters:
      hopCount - the hop count
      isArmed - if the message is armed or not
      networkId - the network id
      nonce - the nonce
      recipient - the public key of the recipient
      sender - the public key of the sender
      proofOfWork - the proof of work of sender
      time -
      joinTime - the join time
      Throws:
      NullPointerException - if nonce, sender, proofOfWork, recipient, or hopCount is null
    • of

      public static DiscoveryMessage of(int networkId, DrasylAddress recipient, IdentityPublicKey sender, ProofOfWork proofOfWork, long time, long childrenTime)
      Creates a new DiscoveryMessage message.
      Parameters:
      networkId - the network of the joining node
      recipient - the public key of the node to join
      sender - the public key of the joining node
      proofOfWork - the proof of work
      time - time in millis when this message was sent
      childrenTime - if 0 greater then 0, node will join a children.
      Throws:
      NullPointerException - if sender, proofOfWork, or recipient is null
    • of

      public static DiscoveryMessage of(int networkId, DrasylAddress recipient, IdentityPublicKey sender, ProofOfWork proofOfWork, long childrenTime)
      Creates a new DiscoveryMessage message.
      Parameters:
      networkId - the network of the joining node
      recipient - the public key of the node to join
      sender - the public key of the joining node
      proofOfWork - the proof of work
      childrenTime - if 0 greater then 0, node will join a children.
      Throws:
      NullPointerException - if sender, proofOfWork, or recipient is null
    • of

      public static DiscoveryMessage of(int networkId, IdentityPublicKey sender, ProofOfWork proofOfWork)
      Creates a new multicast DiscoveryMessage message (sent by LocalNetworkDiscovery}.
      Parameters:
      networkId - the network of the joining node
      sender - the public key of the joining node
      proofOfWork - the proof of work
      Throws:
      NullPointerException - if sender, or proofOfWork is null
    • arm

      public ArmedProtocolMessage arm(io.netty.buffer.ByteBuf byteBuf, Crypto cryptoInstance, SessionPair sessionPair) throws InvalidMessageFormatException
      Description copied from interface: FullReadMessage
      Returns an armed version (ArmedProtocolMessage) of this message for sending it through untrustworthy channels.
      Specified by:
      arm in interface FullReadMessage<T extends FullReadMessage<?>>
      Parameters:
      byteBuf - the ByteBuf to write through
      cryptoInstance - the crypto instance that should be used
      sessionPair - will be used for encryption
      Returns:
      the armed version of this message
      Throws:
      InvalidMessageFormatException - if arming was not possible
    • writeTo

      public void writeTo(io.netty.buffer.ByteBuf out)
      Description copied from interface: RemoteMessage
      Writes this message to the buffer out.
      Specified by:
      writeTo in interface RemoteMessage
      Parameters:
      out - writes this envelope to this buffer
    • writePublicHeaderTo

      protected void writePublicHeaderTo(io.netty.buffer.ByteBuf out)