Add IMessageCapturer implementations

This commit is contained in:
2025-08-25 08:45:36 +09:00
parent 563b6a59f4
commit 737d55b058
3 changed files with 87 additions and 1 deletions

View File

@ -0,0 +1,47 @@
using System;
using System.IO;
using System.Text;
namespace Hcs.Client.MessageCapturer
{
public class MemoryMessageCapturer : IMessageCapturer
{
private readonly MemoryStream messageCaptureStream;
private readonly StreamWriter messageCaptureWriter;
public MemoryMessageCapturer()
{
messageCaptureStream = new MemoryStream();
messageCaptureWriter = new StreamWriter(messageCaptureStream, Encoding.UTF8);
}
public void CaptureMessage(bool sent, string messageBody)
{
if (messageCaptureStream.Position > 0)
{
messageCaptureWriter.WriteLine("");
}
messageCaptureWriter.Write("<!--");
messageCaptureWriter.Write(sent ? "SENT " : "RECEIVED ");
messageCaptureWriter.Write(DateTime.Now.ToString());
messageCaptureWriter.WriteLine("-->");
messageCaptureWriter.Write(messageBody);
messageCaptureWriter.Flush();
}
public byte[] GetData()
{
var buf = messageCaptureStream.GetBuffer();
var size = (int)messageCaptureStream.Length;
var data = new byte[size];
Buffer.BlockCopy(buf, 0, data, 0, size);
return data;
}
public override string ToString()
{
return Encoding.UTF8.GetString(GetData());
}
}
}