From 4d220a0cf74a2efb6f3106e505702abfce59f86e Mon Sep 17 00:00:00 2001 From: AeonLucid Date: Fri, 30 Oct 2020 19:37:13 +0100 Subject: [PATCH] Fixed #94 - Allows plugins to get a IMessageWriter --- .../Net/Messages/IMessageWriterProvider.cs | 16 ++++++++++++++++ src/Impostor.Hazel/MessageWriter.cs | 7 +++---- .../Net/Messages/MessageWriterProvider.cs | 13 +++++++++++++ src/Impostor.Server/Program.cs | 5 ++++- 4 files changed, 36 insertions(+), 5 deletions(-) create mode 100644 src/Impostor.Api/Net/Messages/IMessageWriterProvider.cs create mode 100644 src/Impostor.Server/Net/Messages/MessageWriterProvider.cs diff --git a/src/Impostor.Api/Net/Messages/IMessageWriterProvider.cs b/src/Impostor.Api/Net/Messages/IMessageWriterProvider.cs new file mode 100644 index 0000000..f398939 --- /dev/null +++ b/src/Impostor.Api/Net/Messages/IMessageWriterProvider.cs @@ -0,0 +1,16 @@ +namespace Impostor.Api.Net.Messages +{ + public interface IMessageWriterProvider + { + /// + /// Retrieves a from the internal pool. + /// Make sure to call when you are done! + /// + /// + /// Whether to send the message as or . + /// Reliable packets will ensure delivery while unreliable packets may be lost. + /// + /// A from the pool. + IMessageWriter Get(MessageType sendOption = MessageType.Unreliable); + } +} diff --git a/src/Impostor.Hazel/MessageWriter.cs b/src/Impostor.Hazel/MessageWriter.cs index 10f0065..d12c7c9 100644 --- a/src/Impostor.Hazel/MessageWriter.cs +++ b/src/Impostor.Hazel/MessageWriter.cs @@ -8,11 +8,10 @@ using System.Text; namespace Impostor.Hazel { - /// public class MessageWriter : IMessageWriter, IRecyclable, IDisposable { - public static int BufferSize = 64000; - public static readonly ObjectPool WriterPool = new ObjectPool(() => new MessageWriter(BufferSize)); + private static int BufferSize = 64000; + private static readonly ObjectPool WriterPool = new ObjectPool(() => new MessageWriter(BufferSize)); public MessageType SendOption { get; private set; } @@ -333,4 +332,4 @@ namespace Impostor.Hazel Recycle(); } } -} \ No newline at end of file +} diff --git a/src/Impostor.Server/Net/Messages/MessageWriterProvider.cs b/src/Impostor.Server/Net/Messages/MessageWriterProvider.cs new file mode 100644 index 0000000..707860e --- /dev/null +++ b/src/Impostor.Server/Net/Messages/MessageWriterProvider.cs @@ -0,0 +1,13 @@ +using Impostor.Api.Net.Messages; +using Impostor.Hazel; + +namespace Impostor.Server.Net.Messages +{ + public class MessageWriterProvider : IMessageWriterProvider + { + public IMessageWriter Get(MessageType sendOption = MessageType.Unreliable) + { + return MessageWriter.Get(sendOption); + } + } +} diff --git a/src/Impostor.Server/Program.cs b/src/Impostor.Server/Program.cs index f699e73..a646267 100644 --- a/src/Impostor.Server/Program.cs +++ b/src/Impostor.Server/Program.cs @@ -3,11 +3,13 @@ using Impostor.Api.Events.Managers; using Impostor.Api.Games; using Impostor.Api.Games.Managers; using Impostor.Api.Net.Manager; +using Impostor.Api.Net.Messages; using Impostor.Server.Config; using Impostor.Server.Events; using Impostor.Server.Net; using Impostor.Server.Net.Factories; using Impostor.Server.Net.Manager; +using Impostor.Server.Net.Messages; using Impostor.Server.Net.Redirector; using Impostor.Server.Plugins; using Impostor.Server.Recorder; @@ -169,6 +171,7 @@ namespace Impostor.Server services.AddSingleton(p => p.GetRequiredService()); } + services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); @@ -179,4 +182,4 @@ namespace Impostor.Server .UsePluginLoader(pluginConfig); } } -} \ No newline at end of file +} -- 2.39.5