aspclassic-core/AspClassic.Scripting/Hosting/ScriptIO.cs
Jelle Luteijn 484dbfc9d9 progress
2022-05-15 11:19:49 +02:00

92 lines
2.4 KiB
C#

using System;
using System.IO;
using System.Security.Permissions;
using System.Text;
using AspClassic.Scripting.Runtime;
using AspClassic.Scripting.Utils;
namespace AspClassic.Scripting.Hosting;
public sealed class ScriptIO : MarshalByRefObject
{
private readonly SharedIO _io;
public Stream InputStream => _io.InputStream;
public Stream OutputStream => _io.OutputStream;
public Stream ErrorStream => _io.ErrorStream;
public TextReader InputReader => _io.InputReader;
public TextWriter OutputWriter => _io.OutputWriter;
public TextWriter ErrorWriter => _io.ErrorWriter;
public Encoding InputEncoding => _io.InputEncoding;
public Encoding OutputEncoding => _io.OutputEncoding;
public Encoding ErrorEncoding => _io.ErrorEncoding;
internal SharedIO SharedIO => _io;
internal ScriptIO(SharedIO io)
{
_io = io;
}
public void SetOutput(Stream stream, Encoding encoding)
{
ContractUtils.RequiresNotNull(stream, "stream");
ContractUtils.RequiresNotNull(encoding, "encoding");
_io.SetOutput(stream, new StreamWriter(stream, encoding));
}
public void SetOutput(Stream stream, TextWriter writer)
{
ContractUtils.RequiresNotNull(stream, "stream");
ContractUtils.RequiresNotNull(writer, "writer");
_io.SetOutput(stream, writer);
}
public void SetErrorOutput(Stream stream, Encoding encoding)
{
ContractUtils.RequiresNotNull(stream, "stream");
ContractUtils.RequiresNotNull(encoding, "encoding");
_io.SetErrorOutput(stream, new StreamWriter(stream, encoding));
}
public void SetErrorOutput(Stream stream, TextWriter writer)
{
ContractUtils.RequiresNotNull(stream, "stream");
ContractUtils.RequiresNotNull(writer, "writer");
_io.SetErrorOutput(stream, writer);
}
public void SetInput(Stream stream, Encoding encoding)
{
ContractUtils.RequiresNotNull(stream, "stream");
ContractUtils.RequiresNotNull(encoding, "encoding");
_io.SetInput(stream, new StreamReader(stream, encoding), encoding);
}
public void SetInput(Stream stream, TextReader reader, Encoding encoding)
{
ContractUtils.RequiresNotNull(stream, "stream");
ContractUtils.RequiresNotNull(reader, "writer");
ContractUtils.RequiresNotNull(encoding, "encoding");
_io.SetInput(stream, reader, encoding);
}
public void RedirectToConsole()
{
_io.RedirectToConsole();
}
[SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.Infrastructure)]
public override object InitializeLifetimeService()
{
return null;
}
}