Parser holt nun Nachrichten aus dem Puffer und gibt sie an die Parse-Methode weiter
This commit is contained in:
@@ -6,20 +6,39 @@ 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 ()
|
||||||
{
|
{
|
||||||
@@ -28,7 +47,10 @@ namespace WorldOfPeacecraft
|
|||||||
|
|
||||||
public void AddToBuffer (string s)
|
public void AddToBuffer (string s)
|
||||||
{
|
{
|
||||||
|
lock (Buffer) {
|
||||||
Buffer.Enqueue (s);
|
Buffer.Enqueue (s);
|
||||||
|
BufferFilledEvent.Set ();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user