using System; using System.IO; using System.Text; using Microsoft.Extensions.Logging; namespace MQTTnet.Server.Scripting { public class PythonIOStream : Stream { private readonly ILogger _logger; private readonly Encoding _encoder = Encoding.UTF8; public PythonIOStream(ILogger logger) { _logger = logger ?? throw new ArgumentNullException(nameof(logger)); } public override void Flush() { } public override int Read(byte[] buffer, int offset, int count) { throw new NotSupportedException(); } public override long Seek(long offset, SeekOrigin origin) { throw new NotSupportedException(); } public override void SetLength(long value) { throw new NotSupportedException(); } public override void Write(byte[] buffer, int offset, int count) { if (buffer == null) throw new ArgumentNullException(nameof(buffer)); if (count == 0) { return; } var text = _encoder.GetString(buffer, offset, count); if (text.Equals(Environment.NewLine)) { return; } _logger.LogDebug(text); } public override bool CanRead { get; } = false; public override bool CanSeek { get; } = false; public override bool CanWrite { get; } = true; public override long Length { get; } = 0L; public override long Position { get => throw new NotSupportedException(); set => throw new NotSupportedException(); } } }