Files
inf3/src/Parser.cs

59 lines
1.0 KiB
C#

using System;
using System.Threading;
using System.Collections.Generic;
namespace WorldOfPeacecraft
{
public class Parser
{
private Queue<string> Buffer = new Queue<string> ();
private AutoResetEvent BufferFilledEvent = new AutoResetEvent (false);
private Thread ParserThread;
private List<string> message;
public Parser ()
{
ParserThread = new Thread (new ThreadStart (this.RunParser));
message = new LinkedList<string> ();
}
public void RunParser ()
{
while (true) {
bool waitRequired = false;
lock (Buffer) {
if (Buffer.Count == 0) {
waitRequired = true;
BufferFilledEvent.Reset ();
}
}
if (waitRequired)
BufferFilledEvent.WaitOne ();
lock (Buffer) {
message.Add (Buffer.Dequeue ());
}
}
}
public static void Parse (List<string> message)
{
// TODO Implement
}
public void Stop ()
{
ParserThread.Abort ();
}
public void AddToBuffer (string s)
{
lock (Buffer) {
Buffer.Enqueue (s);
BufferFilledEvent.Set ();
}
}
}
}