public void Start() { if (Running) { return; } Running = true; ConfigManager.LoadConfigAsync().ContinueWith((Task loadTask) => { Logger.Log("Config loaded successfully"); ConfigManager.SaveConfigAsync().ContinueWith((Task saveTask) => { Logger.Log("Config saved"); }); WallpaperRenderer.Initialize(); ThreadManager.Run(InputThread = new InputThread(UpdateInput)); ThreadManager.Run(BrowserThread = new BrowserThread(BrowserInit)); ThreadManager.Run(WallpaperThread = new RenderThread(RenderInit)); ThreadManager.Run(ControllerThread = new ControllerThread(ControllerInit)); }); while (Running) { System.Threading.Thread.Sleep(1); } ; }
public void TestOpenFirstBlock() { _controller = new ControllerThread(_chain, default(OptimizedLineage), _inbox = BoundedInbox.Create(), _outbox = BoundedInbox.Create()); var messageAllocation = new Span <byte>(new byte[OpenBlock.SizeInBytes]); var openBlock = new OpenBlock(1, 5, BlockAlias.GenesisParent); // Serialize message to put it into the inbox MessageSerializers.ClientSerializeOpenBlock(openBlock, messageAllocation); _inbox.TryWrite(messageAllocation); _controller.DoWork(); var result = _outbox.Peek(); Assert.Equal(MessageType.OpenedBlock, ClientServerMessage.GetMessageType(result)); var response = MessageSerializers.ClientDeserializeOpenedBlock(result); Assert.Equal(1U, response.RequestId); Assert.Equal(5U, response.ClientId); Assert.Equal(_1, response.Alias); var tmpId = response.UncommittedBlockId; Console.WriteLine(tmpId); }
public void Setup() { var sharedInboxDispatcherController = BoundedInbox.Create(); var sharedOutboxDispatcherController = BoundedInbox.Create(); var clientQueue = new ConcurrentQueue <ClientConnection>(); _dispatcher = new Dispatcher(clientQueue, 3, sharedOutboxDispatcherController, new BoundedInbox[4], sharedInboxDispatcherController); _chain = new SimpleBlockchain(); _controllerThread = new ControllerThread(_chain, default(OptimizedLineage), sharedInboxDispatcherController, sharedOutboxDispatcherController); _clientConn = new ClientConnection(_socket, ClientId.Next(), ClientServerMessage.MaxSizeInBytes); clientQueue.Enqueue(_clientConn); _dispatcher.DequeueNewClients(); // TODO there should really be three threads, one for each component. However, I do not know how to test this. }
public void Setup() { var id = _chain.OpenFirstBlock().Alias; _chain.CommitBlock(id, BlockId.Genesis); id = _chain.OpenBlock(_1).Alias; _chain.CommitBlock(id, new BlockId(new Hash256(0x11111111UL, 0x22222222UL, 0x33333333UL, 0x44444444UL))); id = _chain.OpenBlock(_2).Alias; _chain.CommitBlock(id, new BlockId(new Hash256(0xFFFFFFFFUL, 0xEEEEEEEEUL, 0xDDDDDDDDUL, 0xCCCCCCCCUL))); // Second child for block 2 id = _chain.OpenBlock(_2).Alias; _chain.CommitBlock(id, new BlockId(new Hash256(0x1111111122UL, 0x2222222233UL, 0x3333333344UL, 0x4444444455UL))); // main chain prolonged id = _chain.OpenBlock(_3).Alias; _chain.CommitBlock(id, new BlockId(new Hash256(0x1111111122UL, 0x2222222233UL, 0x3333333344UL, 0x4444444455UL))); // side chain prolonged id = _chain.OpenBlock(_4).Alias; _chain.CommitBlock(id, new BlockId(new Hash256(0x1111111122UL, 0x2222222233UL, 0x3333333344UL, 0x4444444455UL))); // fork on end of main chain id = _chain.OpenBlock(_5).Alias; _chain.CommitBlock(id, new BlockId(new Hash256(0x1111111122UL, 0x2222222233UL, 0x3333333344UL, 0x4444444455UL))); id = _chain.OpenBlock(_5).Alias; _chain.CommitBlock(id, new BlockId(new Hash256(0x1111111122UL, 0x2222222233UL, 0x3333333344UL, 0x4444444455UL))); var chainStrategy = new BlockchainStrategies(); var opti = new OptimizedLineage(chainStrategy.GetQuasiOrphans(_chain), _2); _controller = new ControllerThread(_chain, opti, _inbox = BoundedInbox.Create(), _outbox = BoundedInbox.Create()); }