Parser holt nun Nachrichten aus dem Puffer und gibt sie an die Parse-Methode weiter

This commit is contained in:
2014-04-03 20:50:31 +02:00
parent 3f2b03268a
commit 010c6dc0d9

View File

@@ -6,29 +6,51 @@ namespace WorldOfPeacecraft
{ {
public class Parser public class Parser
{ {
private Queue<string> Buffer; private Queue<string> Buffer = new Queue<string> ();
private AutoResetEvent BufferFilledEvent = new AutoResetEvent (false);
private Thread ParserThread; private Thread ParserThread;
private List<string> message;
public Parser() public Parser ()
{ {
Buffer = new Queue<string>(); ParserThread = new Thread (new ThreadStart (this.RunParser));
message = new LinkedList<string> ();
} }
public void DoParse () public void RunParser ()
{ {
while (true) { while (true) {
// Do awesome stuff 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 () public void Stop ()
{ {
ParserThread.Abort(); ParserThread.Abort ();
} }
public void AddToBuffer(string s) public void AddToBuffer (string s)
{ {
Buffer.Enqueue(s); lock (Buffer) {
Buffer.Enqueue (s);
BufferFilledEvent.Set ();
}
} }
} }
} }