Implement C# bindings for pipe io client
This commit is contained in:
parent
5ff2f6c27d
commit
74e08fd052
83
clients/csharp/PipeIO.cs
Normal file
83
clients/csharp/PipeIO.cs
Normal file
@ -0,0 +1,83 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
|
||||
|
||||
namespace Pipe.IO
|
||||
{
|
||||
public class PipeReader : IDisposable
|
||||
{
|
||||
public delegate void MessageHandler(String msg);
|
||||
public event MessageHandler OnMessage;
|
||||
private StreamReader pipe;
|
||||
|
||||
public PipeReader(String pipe_path)
|
||||
{
|
||||
var fileStream = File.OpenRead(pipe_path);
|
||||
this.pipe = new StreamReader(fileStream);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
this.pipe.Close();
|
||||
}
|
||||
|
||||
public void Run()
|
||||
{
|
||||
String msg;
|
||||
while ((msg = this.RecvMessage()) != null)
|
||||
{
|
||||
if (this.OnMessage != null)
|
||||
{
|
||||
this.OnMessage(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public String RecvMessage()
|
||||
{
|
||||
return this.pipe.ReadLine();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class PipeWriter : IDisposable
|
||||
{
|
||||
private StreamWriter pipe;
|
||||
|
||||
public PipeWriter(String pipe)
|
||||
{
|
||||
var fileStream = File.OpenWrite(pipe);
|
||||
this.pipe = new StreamWriter(fileStream);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
this.pipe.Close();
|
||||
}
|
||||
|
||||
public void SendMessage(String msg)
|
||||
{
|
||||
this.pipe.WriteLine(msg);
|
||||
this.pipe.Flush();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class PipeIO : IDisposable
|
||||
{
|
||||
public PipeReader reader;
|
||||
public PipeWriter writer;
|
||||
|
||||
public PipeIO(String in_pipe_path, String out_pipe_path)
|
||||
{
|
||||
this.reader = new PipeReader(in_pipe_path);
|
||||
this.writer = new PipeWriter(out_pipe_path);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
this.reader.Dispose();
|
||||
this.writer.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
14
clients/csharp/Test.cs
Normal file
14
clients/csharp/Test.cs
Normal file
@ -0,0 +1,14 @@
|
||||
using System;
|
||||
using Pipe.IO;
|
||||
|
||||
class Program
|
||||
{
|
||||
static void Main(string[] args)
|
||||
{
|
||||
using (var t = new PipeIO("in", "out"))
|
||||
{
|
||||
t.reader.OnMessage += (String msg) => t.writer.SendMessage(msg);
|
||||
t.reader.Run();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user