示例#1
0
        /*
         * public void SendTunnelGateway( I2NPMessage msg )
         * {
         *  lock ( SendQueue )
         *  {
         *      SendRawQueue.AddFirst( new TunnelGateway( new I2NPHeader16( msg ), SendTunnelId ) );
         *  }
         * }*/

        public I2NPMessage CreateBuildRequest(InboundTunnel replytunnel)
        {
            var vtb = VariableTunnelBuildMessage.BuildOutboundTunnel(TunnelSetup,
                                                                     replytunnel.Destination, replytunnel.GatewayTunnelId,
                                                                     TunnelBuildReplyMessageId);

            //Logging.Log( vtb.ToString() );

            return(vtb);
        }
示例#2
0
        public I2NPMessage CreateBuildRequest()
        {
            //TunnelSetup.Hops.Insert( 0, new HopInfo( RouterContext.Inst.MyRouterIdentity ) );

            var vtb = VariableTunnelBuildMessage.BuildInboundTunnel(Config.Info);

            //Logging.Log( vtb.ToString() );

            return(vtb);
        }
示例#3
0
        public void VariableTunnelBuildMessageTest()
        {
            var msg = VariableTunnelBuildMessage.BuildInboundTunnel(
                new TunnelInfo(
                    new List <HopInfo>
            {
                new HopInfo(new I2PDestination(Public, PublicSigning), BufUtils.RandomUint()),
                new HopInfo(new I2PDestination(Public, PublicSigning), BufUtils.RandomUint()),
                new HopInfo(new I2PDestination(Public, PublicSigning), BufUtils.RandomUint()),
            })
                );

            var msgdata = msg.CreateHeader16.HeaderAndPayload;

            var msg2     = new VariableTunnelBuildMessage(new BufRefLen(msg.Payload));
            var msg2data = msg2.CreateHeader16.HeaderAndPayload;

            Assert.IsTrue(msgdata == msg2data);
        }
示例#4
0
        public static I2NPMessage GetMessage(
            I2NPMessage.MessageTypes messagetype,
            BufRef reader,
            uint?msgid = null)
        {
            I2NPMessage result = null;

            try
            {
                switch (messagetype)
                {
                case I2NPMessage.MessageTypes.Garlic:
                    result = new GarlicMessage(reader);
                    break;

                case I2NPMessage.MessageTypes.Data:
                    result = new DataMessage(reader);
                    break;

                case I2NPMessage.MessageTypes.DatabaseSearchReply:
                    result = new DatabaseSearchReplyMessage(reader);
                    break;

                case I2NPMessage.MessageTypes.DatabaseStore:
                    result = new DatabaseStoreMessage(reader);
                    break;

                case I2NPMessage.MessageTypes.DeliveryStatus:
                    result = new DeliveryStatusMessage(reader);
                    break;

                case I2NPMessage.MessageTypes.TunnelData:
                    result = new TunnelDataMessage(reader);
                    break;

                case I2NPMessage.MessageTypes.TunnelGateway:
                    result = new TunnelGatewayMessage(reader);
                    break;

                case I2NPMessage.MessageTypes.DatabaseLookup:
                    result = new DatabaseLookupMessage(reader);
                    break;

                case I2NPMessage.MessageTypes.VariableTunnelBuild:
                    result = new VariableTunnelBuildMessage(reader);
                    break;

                case I2NPMessage.MessageTypes.TunnelBuild:
                    result = new TunnelBuildMessage(reader);
                    break;

                case I2NPMessage.MessageTypes.TunnelBuildReply:
                    result = new TunnelBuildReplyMessage(reader);
                    break;

                case I2NPMessage.MessageTypes.VariableTunnelBuildReply:
                    result = new VariableTunnelBuildReplyMessage(reader);
                    break;

                default:
                    Logging.LogDebug($"GetMessage: '{messagetype}' is not a known message type!");
                    throw new NotImplementedException();
                }
            }
            catch (Exception ex)
            {
                Logging.Log("GetMessage", ex);
                throw;
            }

            if (result != null && msgid.HasValue)
            {
                result.MessageId = msgid.Value;
            }

            return(result);
        }