]> git.deb.at Git - rhonda/impostor.hazel.git/commitdiff
Added InsertMessage function to MessageReader
authorJess Cloutier <cloutier2012@gmail.com>
Mon, 7 Jun 2021 17:57:47 +0000 (13:57 -0400)
committerJess Cloutier <cloutier2012@gmail.com>
Mon, 7 Jun 2021 17:57:47 +0000 (13:57 -0400)
Hazel/MessageReader.cs

index 4e3b24e6398e0e08e190ae9d588438bbf1036ec7..197473de688116cb64e12f956783966f4c5cb62f 100644 (file)
@@ -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)