92 lines
2.4 KiB
C#
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;
|
|
}
|
|
}
|