public async Task Actualize() { IPAddress senpai = IPAddress.Parse("78.139.208.149"); int port = 6879; IPEndPoint sen = new IPEndPoint(senpai, port); byte[] message; if (!window.admin) { message = Encoding.UTF8.GetBytes("signature"); message = server.AddOperation(getlogic.request_template, UDPServer.operation_size, message); await server.Send(sen, message); } await blocks.BlockChainActualize(); window.WriteLine("Actualization started"); await info.ActualizeSelfSignature(); }
private async Task AnswerLogic(byte[] incoming_data, IPEndPoint source) { try { TwoBytesArrays TWdata = new TwoBytesArrays(); byte[] data = new byte[0]; string operation = string.Empty; string path = string.Empty; int size = 0; string name; TWdata = ByteArrayCut(incoming_data, GetLogic.operation_size); operation = BytesToOperation(TWdata.part1); window.WriteLine("Got AnswerLogic: " + operation); if (TWdata.part2.Length != 0) { switch (operation) { case "signature": path = filesystem.FSConfig.root_path + @"\signature"; window.WriteLine("Writing: " + path + " " + TWdata.part2.Length); await filesystem.AddInfoToFileAsync(path, TWdata.part2, true); await information.ActualizeSelfSignature(); break; case "actualblock": if (waitingforactual) { string new_actual = Encoding.UTF8.GetString(TWdata.part2); path = filesystem.FSConfig.db_blocks_path + @"\actualblock"; window.WriteLine("AnswerLogic.actualblock " + new_actual); data = await blocks.SearchBlock(new_actual); if (data.Length == 0) { waitingfornewactual = true; } else { await filesystem.AddInfoToFileAsync(path, TWdata.part2, true); path = filesystem.FSConfig.db_blocks_path; string current = Encoding.UTF8.GetString(await filesystem.GetFromFileAsync(path)); byte[] current_array = await filesystem.GetFromFileAsync(path + @"\" + current); byte[] new_array = await filesystem.GetFromFileAsync(path + @"\" + new_actual); Block current_block = new Block(); Block new_block = new Block(); current_block = blocks.BlockDeSerialize(current_array); new_block = blocks.BlockDeSerialize(new_array); if (current_block.time < new_block.time) { await blocks.ActualBlockSet(new_actual); } } waitingforactual = false; } break; case "block": //window.WriteLine("Got AnswerLogic block"); size = Convert.ToInt32(Encoding.UTF8.GetString(TWdata.part2)); window.WriteLine("getting block from: " + source.ToString()); data = await filetransfering.TcpDataGet(source, size); window.WriteLine("Block got"); name = blocks.GetBlockName(data); if (name != string.Empty) { path = filesystem.FSConfig.db_blocks_path + @"\" + name; window.WriteLine("new block: " + path); await filesystem.AddInfoToFileAsync(path, data, true); if (waitingfornewactual) { waitingfornewactual = false; await blocks.ActualBlockSet(name); } else { await blocks.BlockChainActualize(); } } if (name.Length != 0) { window.WriteLine("block got: " + name); } else { window.WriteLine("wrong block"); } break; case "newblock": //window.WriteLine("Got AnswerLogic block"); size = Convert.ToInt32(Encoding.UTF8.GetString(TWdata.part2)); window.WriteLine("getting newblock from: " + source.ToString()); data = await filetransfering.TcpDataGet(source, size); window.WriteLine("newBlock got"); name = blocks.GetBlockName(data); if (name != string.Empty) { path = filesystem.FSConfig.db_blocks_path + @"\" + name; window.WriteLine("new block: " + path); await filesystem.AddInfoToFileAsync(path, data, true); await blocks.ActualBlockSet(name); } break; default: break; } } } catch (Exception ex) { window.WriteLine(ex.ToString()); } }