Eigener Buffer für Producer-Consumer Lösung.

Noch unvollständig
This commit is contained in:
Daniel Herrmann
2014-04-16 14:28:01 +02:00
parent 32048c3d84
commit cc268a3983
4 changed files with 49 additions and 19 deletions

View File

@@ -23,16 +23,16 @@ namespace WorldOfPeacecraft
public const string MessPlayers = "players";
public const string MessDragon = "dragon";
public const string MessMapcell = "cell";
private Queue<string> Buffer = new Queue<string> ();
private AutoResetEvent BufferFilledEvent = new AutoResetEvent (false);
private Buffer MonsterBuffer;
private Thread ParserThread;
private LinkedList<string> Message;
private Regex LastLineRegex;
private Backend backend;
private Player DummyPlayer;
public Parser ()
public Parser (Buffer b)
{
MonsterBuffer = b;
ParserThread = new Thread (new ThreadStart (this.RunParser));
ParserThread.Start();
Message = new LinkedList<string> ();
@@ -40,11 +40,11 @@ namespace WorldOfPeacecraft
}
private void RunParser ()
{
{/*
while (true) {
bool waitRequired = false;
lock (Buffer) {
if (Buffer.Count == 0) {
lock (MonsterBuffer) {
if (MonsterBuffer.Count == 0) {
waitRequired = true;
BufferFilledEvent.Reset ();
}
@@ -58,9 +58,9 @@ namespace WorldOfPeacecraft
if (IsCompletePackage ()) {
Parse ();
}
}
}*/
}
public Player getDummyPlayer()
{
return DummyPlayer;
@@ -421,13 +421,7 @@ namespace WorldOfPeacecraft
ParserThread.Abort ();
}
public void AddToBuffer (string s)
{
lock (Buffer) {
Buffer.Enqueue (s);
BufferFilledEvent.Set ();
}
}
private class Block
{