/* * 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); }
public I2NPMessage CreateBuildRequest() { //TunnelSetup.Hops.Insert( 0, new HopInfo( RouterContext.Inst.MyRouterIdentity ) ); var vtb = VariableTunnelBuildMessage.BuildInboundTunnel(Config.Info); //Logging.Log( vtb.ToString() ); return(vtb); }
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); }
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); }