public override void Execute() { base.Execute(); Source.RemoveAllPendingInvites(); Destination.RemoveAllPendingInvites(); var sourceNewSessionId = SessionsRepository.GetSessionId(Source); var initialPacket = new Packet(Operation.GetId, Status.Initial, sourceNewSessionId, Source.Id); Source.SendTo(PacketFormatter.Serialize(initialPacket)); }
public void SetSymmetricAlgorithm(SymmetricAlgorithm encryptionAlgorithm) { if (encryptionAlgorithm == null) { _packetFormatter = new PacketFormatter(); } else { _packetFormatter = new SymmetricEncryptionPacketFormatter(encryptionAlgorithm); } }
public NetworkClient(Socket socket, CancellationTokenSource stopTokenSource, CommandManager commandManager) { _socket = socket; _parentStopTokenSource = stopTokenSource; _internalStopTokenSource = new CancellationTokenSource(); _packetFormatter = new PacketFormatter(); _commandManager = commandManager; _messageManager = new MessageManager(_commandManager, this); _messageSerializer = new BinaryFormatterSerializer(); }
private void 一键格式化ToolStripMenuItem_Click(object sender, EventArgs e) { string selected_text = Frm.r_txt_log.Text.ClearSpecialSymbols(); if (string.IsNullOrEmpty(selected_text)) { return; } string ret = new PacketFormatter().Parse(Unpooled.WrappedBuffer(selected_text.DecodeHex())); Frm.Log("\n\n{0}\n\n", ret); }
public void Packet_Should_Serialize_Correctly() { var packet = new Packet(Operation.Invite, Status.Ok, Guid.Empty, 12345, new Timestamp(new DateTime(2018, 1, 1))); packet.SetMessage("Accepted"); packet.SetDestinationId(12); var formatter = new PacketFormatter(); var array = formatter.Serialize(packet); var result = Encoding.UTF8.GetString(array); const string expected = "Identyfikator-)12345(|Operacja-)Invite(|Status-)Ok(|timestamp-)1514764800(|sid-)00000000-0000-0000-0000-000000000000(|destination-)12(|message-)Accepted(|"; Assert.Equal(expected, result); }
public NetworkClient(Socket socket, CancellationTokenSource stopTokenSource, CommandManager commandManager, SymmetricAlgorithm encryptionAlgorithm) { _socket = socket; _parentStopTokenSource = stopTokenSource; _internalStopTokenSource = new CancellationTokenSource(); if (encryptionAlgorithm == null) { _packetFormatter = new PacketFormatter(); } else { _packetFormatter = new SymmetricEncryptionPacketFormatter(encryptionAlgorithm); } _commandManager = commandManager; _messageManager = new MessageManager(_commandManager, this); _messageSerializer = new BinaryFormatterSerializer(); }
private async Task Accept(Func <byte[], Task <byte[]> > callback) { //run this through Task.Run so we can respond to the waitToken if its called for. using (var client = await Task.Run(() => tcpListener.AcceptTcpClientAsync(), _waitToken)) { if (_waitToken.IsCancellationRequested) { return; } client.Client.NoDelay = true; //client.Client.LingerState = new LingerOption(true, 0); var readBuffer = new byte[32768]; using (var stream = client.GetStream()) { using (var memoryStream = new MemoryStream()) { while (true) { using (var readTokenSource = new CancellationTokenSource(readTimeout)) { readTokenSource.Token.Register(() => { if (memoryStream != null) { memoryStream.Close(); memoryStream.Dispose(); } if (stream != null) { stream.Close(); stream.Dispose(); } if (client != null) { //if (client.Client != null) client.Client.Disconnect(false); client.Close(); client.Dispose(); } readBuffer = null; }); var read = await stream.ReadAsync(readBuffer, 0, readBuffer.Length, readTokenSource.Token); if (read > 0) { if (readBuffer[0] == 63) { var payload = _serializer.Serialize(new { _configuration?.DebugMode, _configuration?.Environment, _configuration?.Version, Owner = _onReceived?.GetMethodInfo()?.DeclaringType?.FullName, Counter, Environment.WorkingSet, Environment.MachineName, OnlineSince = _captureAndAggregate.StartDateTimeOffset, OnlineDurationInSeconds = (DateTimeOffset.UtcNow - _captureAndAggregate.StartDateTimeOffset) .TotalSeconds, TotalAverage = _captureAndAggregate.TotalAverage(), Last5SecondsAverage = _captureAndAggregate.Last5SecondsAverage() }); await stream.WriteAsync(payload, 0, payload.Length, _waitToken); await stream.FlushAsync(_waitToken); break; } if (read > 0) { await memoryStream.WriteAsync(readBuffer, 0, read, _waitToken); } if (read <= 0 || readBuffer[read - 1] == PacketFormatter?.PacketTerminator) { var data = memoryStream.ToArray(); if (PacketFormatter != null) { data = PacketFormatter.RemoveFooter(data); } //Client is done sending, process the packet var result = await callback(data); if (result != null && result.Any()) { if (PacketFormatter != null) { result = PacketFormatter.AddFooter(result); } await stream.WriteAsync(result, 0, result.Length, _waitToken); await stream.FlushAsync(_waitToken); } result = null; data = null; break; } } else { break; } } } memoryStream.Close(); memoryStream.Dispose(); } stream.Close(); stream.Dispose(); } readBuffer = null; client.Client.Disconnect(false); client.Close(); client.Dispose(); } }