package io.bitsquare.p2p.peers.peerexchange.messages; import io.bitsquare.app.Capabilities; import io.bitsquare.app.Version; import io.bitsquare.p2p.NodeAddress; import io.bitsquare.p2p.messaging.SupportedCapabilitiesMessage; import io.bitsquare.p2p.network.messages.SendersNodeAddressMessage; import io.bitsquare.p2p.peers.peerexchange.Peer; import javax.annotation.Nullable; import java.util.ArrayList; import java.util.HashSet; import static com.google.common.base.Preconditions.checkNotNull; public final class GetPeersRequest extends PeerExchangeMessage implements SendersNodeAddressMessage, SupportedCapabilitiesMessage { // That object is sent over the wire, so we need to take care of version compatibility. private static final long serialVersionUID = Version.P2P_NETWORK_VERSION; private final NodeAddress senderNodeAddress; public final int nonce; public final HashSet<Peer> reportedPeers; @Nullable private ArrayList<Integer> supportedCapabilities = Capabilities.getCapabilities(); public GetPeersRequest(NodeAddress senderNodeAddress, int nonce, HashSet<Peer> reportedPeers) { checkNotNull(senderNodeAddress, "senderNodeAddress must not be null at GetPeersRequest"); this.senderNodeAddress = senderNodeAddress; this.nonce = nonce; this.reportedPeers = reportedPeers; } @Override @Nullable public ArrayList<Integer> getSupportedCapabilities() { return supportedCapabilities; } @Override public NodeAddress getSenderNodeAddress() { return senderNodeAddress; } @Override public String toString() { return "GetPeersRequest{" + "senderNodeAddress=" + senderNodeAddress + ", nonce=" + nonce + ", reportedPeers.size()=" + reportedPeers.size() + ", supportedCapabilities=" + supportedCapabilities + "} " + super.toString(); } }