Parser holt nun Nachrichten aus dem Puffer und gibt sie an die Parse-Methode weiter
This commit is contained in:
@@ -6,29 +6,51 @@ namespace WorldOfPeacecraft
|
||||
{
|
||||
public class Parser
|
||||
{
|
||||
private Queue<string> Buffer;
|
||||
private Queue<string> Buffer = new Queue<string> ();
|
||||
private AutoResetEvent BufferFilledEvent = new AutoResetEvent (false);
|
||||
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) {
|
||||
// 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 ()
|
||||
{
|
||||
ParserThread.Abort();
|
||||
ParserThread.Abort ();
|
||||
}
|
||||
|
||||
public void AddToBuffer(string s)
|
||||
public void AddToBuffer (string s)
|
||||
{
|
||||
Buffer.Enqueue(s);
|
||||
lock (Buffer) {
|
||||
Buffer.Enqueue (s);
|
||||
BufferFilledEvent.Set ();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user