private void SendToClient(Packet rawPacket) { var filteredPacket = serverPacketHandler.FilterOutput(rawPacket); if (filteredPacket.HasValue) { lock (clientLock) { if (clientStream == null) { return; } using (var memoryStream = new MemoryStream(1024)) { clientConnection.Send(filteredPacket.Value, memoryStream); var buffer = memoryStream.GetBuffer(); #if DUMP_RAW Console.Info("proxy -> client"); Console.Info(buffer.Take((int)memoryStream.Length).Select(x => x.ToString("X2")).Aggregate((l, r) => l + " " + r)); #endif clientStream.Write(buffer, 0, (int)memoryStream.Length); } } } }
public void Can_send_game_packet() { var packet = FakePackets.Instantiate(FakePackets.EnableLockedClientFeatures); var expectedSentBytes = new byte[] { 0xB3, 0x32, 0x98, 0xDA }; var connection = new UltimaClientConnection(UltimaClientConnectionStatus.Game); var outputStream = new TestMemoryStream(); connection.Send(packet, outputStream); outputStream.ActualBytes.Should().BeEquivalentTo(expectedSentBytes); }
public void Can_send_prelogin_packet() { var packet = FakePackets.Instantiate(FakePackets.GameServerList); var expectedSentBytes = FakePackets.GameServerList; var connection = new UltimaClientConnection(UltimaClientConnectionStatus.ServerLogin); var outputStream = new TestMemoryStream(); connection.Send(packet, outputStream); outputStream.ActualBytes.Should().BeEquivalentTo(expectedSentBytes); }
public void Can_write_diagnostic_info_about_sent_PreGameLogin_packet() { var packet = FakePackets.Instantiate(FakePackets.ConnectToGameServer); var diagnosticStream = new TextDiagnosticPushStream(); var connection = new UltimaClientConnection(UltimaClientConnectionStatus.PreGameLogin, NullDiagnosticPullStream.Instance, diagnosticStream); var outputStream = new TestMemoryStream(); connection.Send(packet, outputStream); var output = diagnosticStream.Flush(); output.Should().Contain("0x8C, 0x7F, 0x00, 0x00, 0x01, 0x0A, 0x21, 0x7F, 0x00, 0x00, 0x01"); }
public void Can_write_diagnostic_info_about_send_Game_packet() { var packet = FakePackets.Instantiate(FakePackets.EnableLockedClientFeatures); var diagnosticStream = new TextDiagnosticPushStream(); var connection = new UltimaClientConnection(UltimaClientConnectionStatus.Game, NullDiagnosticPullStream.Instance, diagnosticStream); var outputStream = new TestMemoryStream(); connection.Send(packet, outputStream); string output = diagnosticStream.Flush(); output.Should().Contain("0xB9, 0x80, 0x1F") .And.Contain("0xB3, 0x32, 0x98, 0xDA"); }
public static void SendToClient(Packet rawPacket) { if (clientConnection == null || ClientStream == null) { return; } var filteredPacket = serverPacketHandler.FilterOutput(rawPacket); if (filteredPacket.HasValue) { lock (serverConnectionLock) { using (var memoryStream = new MemoryStream(1024)) { clientConnection.Send(filteredPacket.Value, memoryStream); ClientStream.Write(memoryStream.GetBuffer(), 0, (int)memoryStream.Length); } } } }