Beispiel #1
0
        public FindNodeMessage(Node from, byte[] target_id)
            : base(UdpMessageType.DISCOVER_FIND_NODE, null)
        {
            Protocol.Endpoint endpoint_from = new Protocol.Endpoint();
            endpoint_from.NodeId  = ByteString.CopyFrom(from.Id);
            endpoint_from.Port    = from.Port;
            endpoint_from.Address = ByteString.CopyFrom(Encoding.UTF8.GetBytes(from.Host));

            this.message           = new Protocol.FindNeighbours();
            this.message.From      = endpoint_from;
            this.message.TargetId  = ByteString.CopyFrom(target_id);
            this.message.Timestamp = Helper.CurrentTimeMillis();
            this.data = this.message.ToByteArray();
        }
Beispiel #2
0
        public PongMessage(Node from, long sequence)
            : base(UdpMessageType.DISCOVER_PONG, null)
        {
            Protocol.Endpoint endpoint_from = new Protocol.Endpoint();
            endpoint_from.NodeId  = ByteString.CopyFrom(from.Id);
            endpoint_from.Port    = from.Port;
            endpoint_from.Address = ByteString.CopyFrom(Encoding.UTF8.GetBytes(from.Host));

            this.message           = new Protocol.PongMessage();
            this.message.From      = endpoint_from;
            this.message.Echo      = (int)Args.Instance.Node.P2P.Version;
            this.message.Timestamp = sequence;
            this.data = this.message.ToByteArray();
        }
Beispiel #3
0
        public PingMessage(Node from, Node to)
            : base(UdpMessageType.DISCOVER_PING, null)
        {
            Protocol.Endpoint endpoint_from = new Protocol.Endpoint();
            endpoint_from.NodeId  = ByteString.CopyFrom(from.Id);
            endpoint_from.Port    = from.Port;
            endpoint_from.Address = ByteString.CopyFrom(Encoding.UTF8.GetBytes(from.Host));

            Protocol.Endpoint endpoint_to = new Protocol.Endpoint();
            endpoint_to.NodeId  = ByteString.CopyFrom(to.Id);
            endpoint_to.Port    = to.Port;
            endpoint_to.Address = ByteString.CopyFrom(Encoding.UTF8.GetBytes(to.Host));

            this.message           = new Protocol.PingMessage();
            this.message.Version   = (int)Args.Instance.Node.P2P.Version;
            this.message.From      = endpoint_from;
            this.message.To        = endpoint_to;
            this.message.Timestamp = Helper.CurrentTimeMillis();
            this.data = this.message.ToByteArray();
        }
Beispiel #4
0
        public NeighborsMessage(Node from, List <Node> neighbours, long sequence)
            : base(UdpMessageType.DISCOVER_NEIGHBORS, null)
        {
            this.message           = new Protocol.Neighbours();
            this.message.Timestamp = sequence;

            neighbours.ForEach(neighbour =>
            {
                Protocol.Endpoint endpoint = new Protocol.Endpoint();
                endpoint.NodeId            = ByteString.CopyFrom(neighbour.Id);
                endpoint.Port    = neighbour.Port;
                endpoint.Address = ByteString.CopyFrom(Encoding.UTF8.GetBytes(neighbour.Host));

                this.message.Neighbours_.Add(endpoint);
            });

            this.message.From         = new Protocol.Endpoint();
            this.message.From.NodeId  = ByteString.CopyFrom(from.Id);
            this.message.From.Port    = from.Port;
            this.message.From.Address = ByteString.CopyFrom(Encoding.UTF8.GetBytes(from.Host));
            this.data = this.message.ToByteArray();
        }