From 258b7d48fb112e97826257aed78abc4aa703412a Mon Sep 17 00:00:00 2001 From: high Date: Fri, 12 Aug 2011 23:17:23 -0400 Subject: [PATCH] Added TShock.SendBytes which uses packetbuffer if available, otherwise sends like normal. --- TShockAPI/PacketBufferer.cs | 14 +++++++++++-- TShockAPI/Properties/AssemblyInfo.cs | 4 ++-- TShockAPI/TSPlayer.cs | 15 +------------- TShockAPI/TShock.cs | 30 +++++++++++++++++++++++++++- 4 files changed, 44 insertions(+), 19 deletions(-) diff --git a/TShockAPI/PacketBufferer.cs b/TShockAPI/PacketBufferer.cs index be00dd72..72b1bb5b 100644 --- a/TShockAPI/PacketBufferer.cs +++ b/TShockAPI/PacketBufferer.cs @@ -123,9 +123,13 @@ namespace TShockAPI buffers[socket.whoAmI] = new PacketBuffer(); } - void ServerHooks_SendBytes(ServerSock socket, byte[] buffer, int offset, int count, HandledEventArgs e) + public void SendBytes(ServerSock socket, byte[] buffer) + { + SendBytes(socket, buffer, 0, buffer.Length); + } + + public void SendBytes(ServerSock socket, byte[] buffer, int offset, int count) { - e.Handled = true; lock (buffers[socket.whoAmI]) { #if DEBUG_NET @@ -142,6 +146,12 @@ namespace TShockAPI } } } + + void ServerHooks_SendBytes(ServerSock socket, byte[] buffer, int offset, int count, HandledEventArgs e) + { + e.Handled = true; + SendBytes(socket, buffer, offset, count); + } #if DEBUG_NET static int Compress(byte[] buffer, int offset, int count) { diff --git a/TShockAPI/Properties/AssemblyInfo.cs b/TShockAPI/Properties/AssemblyInfo.cs index 18787b22..4f954f7c 100644 --- a/TShockAPI/Properties/AssemblyInfo.cs +++ b/TShockAPI/Properties/AssemblyInfo.cs @@ -36,5 +36,5 @@ using System.Runtime.InteropServices; // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("3.2.6.0811")] -[assembly: AssemblyFileVersion("3.2.6.0811")] +[assembly: AssemblyVersion("3.2.6.0812")] +[assembly: AssemblyFileVersion("3.2.6.0812")] diff --git a/TShockAPI/TSPlayer.cs b/TShockAPI/TSPlayer.cs index 0b8d2403..7ec18de9 100644 --- a/TShockAPI/TSPlayer.cs +++ b/TShockAPI/TSPlayer.cs @@ -339,20 +339,7 @@ namespace TShockAPI if (!RealPlayer || !ConnectionAlive) return false; - try - { - if (Netplay.serverSock[Index].tcpClient.Connected) - { - Netplay.serverSock[Index].networkStream.Write(data, 0, data.Length); - return true; - } - - } - catch (Exception ex) - { - Log.Error(ex.ToString()); - } - return false; + return TShock.SendBytes(Netplay.serverSock[Index], data); } } diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index d74e85ef..eed1d0bd 100644 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -30,6 +30,7 @@ using System.Data; using System.Diagnostics; using System.IO; using System.Net; +using System.Net.Sockets; using System.Reflection; using System.Security.Cryptography; using System.Linq; @@ -64,7 +65,7 @@ namespace TShockAPI public static ConfigFile Config { get; set; } public static IDbConnection DB; public static bool OverridePort; - PacketBufferer bufferer; + static PacketBufferer bufferer; public override Version Version @@ -655,6 +656,33 @@ namespace TShockAPI } } + /// + /// Send bytes to client using packetbuffering if available + /// + /// socket to send to + /// bytes to send + /// False on exception + public static bool SendBytes(ServerSock client, byte[] bytes) + { + if (bufferer != null) + { + bufferer.SendBytes(client, bytes); + return true; + } + + try + { + if (client.tcpClient.Connected) + client.networkStream.Write(bytes, 0, bytes.Length); + return true; + } + catch (Exception ex) + { + Log.Error(ex.ToString()); + } + return false; + } + private void OnSaveWorld(bool resettime, HandledEventArgs e) { Tools.Broadcast("Saving world. Momentary lag might result from this.", Color.Red);