From: Jess Cloutier Date: Mon, 7 Jun 2021 17:57:47 +0000 (-0400) Subject: Added InsertMessage function to MessageReader X-Git-Tag: 1.0.0~2^2~1^2~2 X-Git-Url: https://git.deb.at/?a=commitdiff_plain;h=ec4758e11002de9f0ded141c20bd20e3d9bb74a3;p=rhonda%2Fimpostor.hazel.git Added InsertMessage function to MessageReader --- diff --git a/Hazel/MessageReader.cs b/Hazel/MessageReader.cs index 4e3b24e..197473d 100644 --- a/Hazel/MessageReader.cs +++ b/Hazel/MessageReader.cs @@ -191,6 +191,32 @@ namespace Hazel } } + public void InsertMessage(MessageReader reader, MessageWriter writer) + { + var temp = MessageReader.GetSized(reader.Buffer.Length); + try + { + var headerOffset = reader.Offset - 3; + var startOfMessage = reader.Offset; + var len = reader.Buffer.Length - startOfMessage; + + //store the original buffer in temp + Array.Copy(reader.Buffer, startOfMessage, temp.Buffer, 0, len); + + //put the contents of writer in at headerOffset + Array.Copy(writer.Buffer, 3, this.Buffer, headerOffset, writer.Length); + + //put the original buffer in after that + Array.Copy(temp.Buffer, 0, this.Buffer, headerOffset + writer.Length, len - writer.Length); + + this.AdjustLength(-1 * reader.Offset , -1 * (writer.Length - 3)); + } + finally + { + temp.Recycle(); + } + } + private void AdjustLength(int offset, int amount) { if (this.readHead > offset)