Merge branch 'master' of manuel-voegele.de:inf3

This commit is contained in:
2014-04-16 14:46:43 +02:00
4 changed files with 49 additions and 19 deletions

View File

@@ -41,6 +41,7 @@
<ItemGroup>
<Compile Include="DummyBackend.cs" />
<Compile Include="ParserTest.cs" />
<Compile Include="src\Buffer.cs" />
<Compile Include="src\Receiver.cs" />
<Compile Include="src\Sender.cs" />
<Compile Include="src\DefaultGui\DefaultGui.Designer.cs" />

35
src/Buffer.cs Normal file
View File

@@ -0,0 +1,35 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace WorldOfPeacecraft
{
public class Buffer
{
private Queue<string> RawBuffer = new Queue<string>();
private AutoResetEvent BufferFilledEvent = new AutoResetEvent (false);
int size;
public Buffer(int size)
{
this.size=size;
}
public void AddToBuffer (string s)
{
if (RawBuffer.Count >= size){
}
else{
lock (RawBuffer) {
RawBuffer.Enqueue (s);
BufferFilledEvent.Set ();
}
}
}
}
}

View File

@@ -49,15 +49,15 @@ 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;
public Parser ()
public Parser (Buffer b)
{
MonsterBuffer = b;
ParserThread = new Thread (new ThreadStart (this.RunParser));
ParserThread.Start();
Message = new LinkedList<string> ();
@@ -65,11 +65,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 ();
}
@@ -83,7 +83,7 @@ namespace WorldOfPeacecraft
if (IsCompletePackage ()) {
Parse ();
}
}
}*/
}
public Player getDummyPlayer()
@@ -445,13 +445,7 @@ namespace WorldOfPeacecraft
ParserThread.Abort ();
}
public void AddToBuffer (string s)
{
lock (Buffer) {
Buffer.Enqueue (s);
BufferFilledEvent.Set ();
}
}
private class Block
{

View File

@@ -9,13 +9,13 @@ namespace WorldOfPeacecraft
{
private TcpClient Client;
private StreamReader Reader;
private Parser Parser;
private Buffer KillerBuffer;
private Thread ReceiverThread;
public Receiver (TcpClient client, Parser parser)
public Receiver (TcpClient client, Buffer buffer)
{
this.Client = client;
this.Parser = parser;
this.KillerBuffer = buffer;
ReceiverThread = new Thread(new ThreadStart(this.doReceive));
ReceiverThread.Start();
}
@@ -29,7 +29,7 @@ namespace WorldOfPeacecraft
{
this.Reader = new StreamReader (Client.GetStream ());
while (true) {
Parser.AddToBuffer(Receive());
KillerBuffer.AddToBuffer(Receive());
}
}