コード例 #1
0
 public Context()
 {
     StepDelay           = TimeSpan.FromMilliseconds(20);
     TransactionSource   = Substitute.For <ITxSource>();
     BlockchainProcessor = Substitute.For <IBlockchainProcessor>();
     Sealer               = Substitute.For <ISealer>();
     BlockTree            = Substitute.For <IBlockTree>();
     BlockProcessingQueue = Substitute.For <IBlockProcessingQueue>();
     StateProvider        = Substitute.For <IStateProvider>();
     Timestamper          = Substitute.For <ITimestamper>();
     AuRaStepCalculator   = Substitute.For <IAuRaStepCalculator>();
     NodeAddress          = TestItem.AddressA;
     TransactionSource.GetTransactions(Arg.Any <BlockHeader>(), Arg.Any <long>()).Returns(Array.Empty <Transaction>());
     Sealer.CanSeal(Arg.Any <long>(), Arg.Any <Keccak>()).Returns(true);
     Sealer.SealBlock(Arg.Any <Block>(), Arg.Any <CancellationToken>()).Returns(c => Task.FromResult(c.Arg <Block>()));
     Sealer.Address.Returns(TestItem.AddressA);
     BlockProcessingQueue.IsEmpty.Returns(true);
     AuRaStepCalculator.TimeToNextStep.Returns(StepDelay);
     BlockTree.BestKnownNumber.Returns(1);
     BlockTree.Head.Returns(Build.A.Block.WithHeader(Build.A.BlockHeader.WithAura(10, Array.Empty <byte>()).TestObject).TestObject);
     BlockchainProcessor.Process(Arg.Any <Block>(), ProcessingOptions.ProducingBlock, Arg.Any <IBlockTracer>()).Returns(returnThis: c =>
     {
         Block block = c.Arg <Block>();
         block.TrySetTransactions(TransactionSource.GetTransactions(BlockTree.Head !.Header, block.GasLimit).ToArray());
         return(block);
     });
コード例 #2
0
 public PaintLineManager(CustomForm customForm)
 {
     this.customForm = customForm;
     hopper          = new Hopper(this);
     casePacker      = new CasePacker(this);
     weighStation    = new WeighStation(this);
     fillHead        = new FillHead(this);
     labeller        = new Labeller(this);
     sealer          = new Sealer(this);
 }
コード例 #3
0
        public Boolean Start(HostControl _)
        {
            Sealer = new Sealer(Bootstrapper.Configuration);
            Sealer.Seal();
            Channel = new SymmetricEncryptedUdpCommunicationChannelReceiver(Bootstrapper.Configuration);
            Channel.OpenPortRequestReceived += ChannelOpenPortRequestReceived;

            foreach (var rule in Bootstrapper.Configuration.Rules)
            {
                Channel.StartListeningOnPort(rule.UdpPort);
            }

            return(true);
        }
コード例 #4
0
        private void ChannelOpenPortRequestReceived(object sender, OpenPortRequestEventArgs e)
        {
            var rule = Bootstrapper.Configuration.GetRuleFromTcpPort(e.Request.PortToOpen);

            if (rule == null)
            {
                Log.Error("Received message from unknown port {port} - Check firewall because it should be closed received from ip {ip}", e.Request.PortToOpen, e.Request.IpAddress);
                return;
            }
            Log.Information("Checking udp message in port {port} bound to rule for tcp port {tcpport} received from ip {ip}", e.Request.PortToOpen, rule.TcpPort, e.Request.IpAddress);
            if (rule.TcpPort != e.Request.PortToOpen)
            {
                Log.Error("Received wrong requesto to open port {port} bound to rule for tcp port {tcpport} received from ip {ip}", e.Request.PortToOpen, rule.TcpPort, e.Request.IpAddress);
                return;
            }

            Log.Information("CORRECT! udp message in port {port} bound to rule for tcp port {tcpport} received from ip {ip}", e.Request.PortToOpen, rule.TcpPort, e.Request.IpAddress);
            Sealer.OpenPortWithTimeout(rule.TcpPort, IPEndPoint.Parse(e.Request.IpAddress), new DateTime(Math.Min(e.Request.EndOpeningDate.Ticks, DateTime.Now.AddHours(4).Ticks)));
        }