diff --git a/inf3.csproj b/inf3.csproj
index 52bbf88..5e11a0b 100644
--- a/inf3.csproj
+++ b/inf3.csproj
@@ -70,6 +70,7 @@
+
\ No newline at end of file
diff --git a/src/BufferManuel.cs b/src/BufferManuel.cs
new file mode 100644
index 0000000..45d33f3
--- /dev/null
+++ b/src/BufferManuel.cs
@@ -0,0 +1,56 @@
+using System.Collections.Generic;
+using System.Threading;
+
+namespace WorldOfPeacecraft
+{
+ class BufferManuel
+ {
+ private Queue Lines = new Queue();
+ private int MaxSize;
+ private AutoResetEvent QueueFullLock = new AutoResetEvent(false);
+ private AutoResetEvent QueueEmptyLock = new AutoResetEvent(false);
+
+ public BufferManuel (int maxSize)
+ {
+ this.MaxSize = maxSize;
+ }
+
+ public void AddLine (string line)
+ {
+ bool waitRequired = false;
+ lock (Lines) {
+ if (Lines.Count >= MaxSize) {
+ waitRequired = true;
+ QueueFullLock.Reset ();
+ }
+ }
+ if (waitRequired) {
+ QueueFullLock.WaitOne ();
+ }
+ lock (Lines) {
+ Lines.Enqueue (line);
+ QueueEmptyLock.Set();
+ }
+ }
+
+ public string NextLine ()
+ {
+ bool waitRequired = false;
+ string line;
+ lock (Lines) {
+ if (Lines.Count == 0) {
+ waitRequired = true;
+ QueueEmptyLock.Reset ();
+ }
+ }
+ if (waitRequired) {
+ QueueEmptyLock.WaitOne ();
+ }
+ lock (Lines) {
+ line = Lines.Dequeue();
+ QueueFullLock.Set ();
+ }
+ return line;
+ }
+ }
+}