public async Task OnGossipMessageAsync(SourceSignedMessage msg) { var m = msg as ChatMsg; if (m == null) { return; } switch (m.MsgType) { case ChatMessageType.NodeUp: await SendNodesInfoToGroupAsync(); break; case ChatMessageType.AuthorizerPrePrepare: case ChatMessageType.AuthorizerPrepare: //case ChatMessageType.AuthorizerCommit: // var typStr = string.Join(" ", Regex.Split(m.Type.ToString(), @"(?<!^)(?=[A-Z])")); // var text = $"*From*: {m.From}\n*Event*: {typStr}\n*Block Number*: {m.BlockUIndex}"; // await SendGroupMessageAsync(text); // break; default: var typStr2 = string.Join(" ", Regex.Split(m.MsgType.ToString(), @"(?<!^)(?=[A-Z])")); var text2 = $"*From*: {m.From}\n*Event*: {typStr2}\n*Text*: {m.Text}"; await SendGroupMessageAsync(text2); break; } }
/* * private void OnGetHeadersMessageReceived(GetBlocksPayload payload) * { * UInt256 hash = payload.HashStart; * int count = payload.Count < 0 ? HeadersPayload.MaxHeadersCount : payload.Count; * DataCache<UInt256, TrimmedBlock> cache = Blockchain.Singleton.Store.GetBlocks(); * TrimmedBlock state = cache.TryGet(hash); * if (state == null) return; * List<Header> headers = new List<Header>(); * for (uint i = 1; i <= count; i++) * { * uint index = state.Index + i; * hash = Blockchain.Singleton.GetBlockHash(index); * if (hash == null) break; * Header header = cache.TryGet(hash)?.Header; * if (header == null) break; * headers.Add(header); * } * if (headers.Count == 0) return; * Context.Parent.Tell(Message.Create(MessageCommand.Headers, HeadersPayload.Create(headers))); * } * * private void OnHeadersMessageReceived(HeadersPayload payload) * { * if (payload.Headers.Length == 0) return; * system.Blockchain.Tell(payload.Headers, Context.Parent); * } * * private void OnInventoryReceived(IInventory inventory) * { * system.TaskManager.Tell(new TaskManager.TaskCompleted { Hash = inventory.Hash }, Context.Parent); * system.LocalNode.Tell(new LocalNode.Relay { Inventory = inventory }); * } * * private void OnInvMessageReceived(InvPayload payload) * { * UInt256[] hashes = payload.Hashes.Where(p => knownHashes.Add(p) && !sentHashes.Contains(p)).ToArray(); * if (hashes.Length == 0) return; * switch (payload.Type) * { * case InventoryType.Block: * using (Snapshot snapshot = Blockchain.Singleton.GetSnapshot()) * hashes = hashes.Where(p => !snapshot.ContainsBlock(p)).ToArray(); * break; * case InventoryType.TX: * using (Snapshot snapshot = Blockchain.Singleton.GetSnapshot()) * hashes = hashes.Where(p => !snapshot.ContainsTransaction(p)).ToArray(); * break; * } * if (hashes.Length == 0) return; * system.TaskManager.Tell(new TaskManager.NewTasks { Payload = InvPayload.Create(payload.Type, hashes) }, Context.Parent); * }*/ //private void OnMemPoolMessageReceived() //{ // foreach (InvPayload payload in InvPayload.CreateGroup(InventoryType.TX, Blockchain.Singleton.MemPool.GetVerifiedTransactions().Select(p => p.Hash).ToArray())) // Context.Parent.Tell(Message.Create(MessageCommand.Inv, payload)); //} private void OnSignedMessageReceived(SourceSignedMessage msg) { //system.TaskManager.Tell(new TaskManager.TaskCompleted { Hash = inventory.Hash }, Context.Parent); system.LocalNode.Tell(new LocalNode.SignedMessageRelay { signedMessage = msg }); }