Interface Transport

    • Method Detail

      • send

        void send​(@Nonnull
                  RaftEndpoint target,
                  @Nonnull
                  RaftMessage message)
        Sends the given RaftMessage object to the given endpoint. This method must not block the caller Raft node instance and return promptly so that the caller can continue its execution.

        This method must not throw an exception, for example if the given RaftMessage object has not been sent to the given endpoint or an internal error has occurred. The handling of RaftMessage objects are designed idempotently. Therefore, if a RaftMessage object is not sent to the given endpoint, it implies that the source Raft node will not receive a RaftMessage as response, hence it will re-send the failed RaftMessage again.

        Parameters:
        target - the target endpoint to send the Raft message
        message - the Raft message object to be sent
      • isReachable

        boolean isReachable​(@Nonnull
                            RaftEndpoint endpoint)
        Returns true if the given endpoint is supposedly reachable by the time this method is called, false otherwise.

        This method is not required to return a precise information. For instance, the Transport implementation does not need to ping the given endpoint to check if it is reachable when this method is called. Instead, the local Raft node could use a local information, such as recency of a message sent by or having a TCP connection to the given Raft endpoint.

        Parameters:
        endpoint - the Raft endpoint to check reachability
        Returns:
        true if given endpoint is reachable, false otherwise