From 7b0dc8e7d667b0727c6c543169fe51c7255e21b7 Mon Sep 17 00:00:00 2001
From: rasmusse <mika_flynn.rasmussen@student.reutlingen-university.de>
Date: Mon, 13 Jun 2022 18:17:52 +0200
Subject: [PATCH] Push new Stuff

---
 ErzeugerVerbraucher/.idea/misc.xml    |  5 +++
 ErzeugerVerbraucher/src/Buffer.java   | 63 +++++++++++++++++----------
 ErzeugerVerbraucher/src/Consumer.java | 34 ++++++++++++++-
 ErzeugerVerbraucher/src/Main.java     |  9 +++-
 4 files changed, 84 insertions(+), 27 deletions(-)

diff --git a/ErzeugerVerbraucher/.idea/misc.xml b/ErzeugerVerbraucher/.idea/misc.xml
index e2ca0b8..f52b70f 100644
--- a/ErzeugerVerbraucher/.idea/misc.xml
+++ b/ErzeugerVerbraucher/.idea/misc.xml
@@ -3,4 +3,9 @@
   <component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="openjdk-18" project-jdk-type="JavaSDK">
     <output url="file://$PROJECT_DIR$/out" />
   </component>
+  <component name="SwUserDefinedSpecifications">
+    <option name="specTypeByUrl">
+      <map />
+    </option>
+  </component>
 </project>
\ No newline at end of file
diff --git a/ErzeugerVerbraucher/src/Buffer.java b/ErzeugerVerbraucher/src/Buffer.java
index f65face..e91ea1b 100644
--- a/ErzeugerVerbraucher/src/Buffer.java
+++ b/ErzeugerVerbraucher/src/Buffer.java
@@ -1,38 +1,53 @@
-import java.nio.BufferOverflowException;
-import java.nio.BufferUnderflowException;
 import java.util.ArrayList;
-import java.util.List;
 import java.util.concurrent.Semaphore;
-import java.lang.Thread;
-public class Buffer<T>{
-    public int size;
-    public Semaphore mutex;
-    List<T> items = new ArrayList<T>();
+import java.lang.*;
 
-    public Buffer(int size) {
-        this.size= size;
-
-//BufferOVerflowException, wenn Buffer voll ist und dennoch Element geschrieben werden will
-    public void push(Buffer<T> e){
-        if()
-        mutex.acquire();
-        items.add(T.e);
-        mutex.release();
+public class Buffer<T> {
+    int size;
+    public Semaphore sem;
+    public ArrayList<T> items = new ArrayList<T>(size);
 
+    public Buffer(int size){
+        assert size >= 0;
+        this.size = size;
 
     }
-//BufferUnderflowException wenn Buffer leer ist und dennoch Element gelesen werden will
-    public void pop(Buffer<T> e){
+
+    public void push(T e) throws InterruptedException {
+        assert(e!=null);
+        assert(!full());
+        if(this.full()) {
+            System.out.println("Buffer is full");
+        }
+        this.sem.acquire();
+        items.add(e);
+        this.sem.release();
 
     }
 
-    public boolean full(){
-        assert items.size()>=0 : "Buffer cannot be less than 0 in size";
+//    public ArrayList<T> pop() throws InterruptedException{
+//        sem.acquire();
+//        item = items.remove(0);
+//        sem.release();
+//        return item;
+//
+//    }
 
-        }
+    public boolean full() throws InterruptedException {
+        sem.acquire();
+        boolean is_full = items.size()==size;
+        sem.release();
 
-    public boolean empty(){
+        return is_full;
+
+    }
+
+    public boolean empty() throws InterruptedException {
+        sem.acquire();
+        boolean is_empty = items.size()==0;
+        sem.release();
+
+        return is_empty;
 
-        }
     }
 }
diff --git a/ErzeugerVerbraucher/src/Consumer.java b/ErzeugerVerbraucher/src/Consumer.java
index d57c473..2b16e6a 100644
--- a/ErzeugerVerbraucher/src/Consumer.java
+++ b/ErzeugerVerbraucher/src/Consumer.java
@@ -1,2 +1,34 @@
-public class Consumer {
+import com.sun.jdi.event.ThreadDeathEvent;
+import com.sun.jdi.event.ThreadStartEvent;
+
+import java.util.Random;
+import java.lang.*;
+
+public class Consumer{
+    int interval;
+    ThreadDeathEvent consumerThread;
+    ThreadStartEvent producerThread;
+    Buffer buffer;
+    public Consumer(Buffer buffer, int interval, ThreadDeathEvent consumerThread, ThreadStartEvent producerThread) {
+        assert buffer != null;
+        assert interval > 0;
+        this.buffer = buffer;
+        this.interval = interval;
+        this.consumerThread = consumerThread;
+        this.producerThread = producerThread;
+        this.run();
+
+        assert this.interval == interval;
+    }
+    public void run() throws InterruptedException{
+        assert this.interval > 0;
+
+        while(this.interval > 0) {
+            Thread.sleep(new Random().nextInt(interval));
+
+            boolean was_full = this.buffer.full();
+            assert was_full instanceof
+            if(!this.consumerThread.)
+        }
+    }
 }
diff --git a/ErzeugerVerbraucher/src/Main.java b/ErzeugerVerbraucher/src/Main.java
index 9b19be5..df9fa5f 100644
--- a/ErzeugerVerbraucher/src/Main.java
+++ b/ErzeugerVerbraucher/src/Main.java
@@ -1,7 +1,12 @@
 public class Main {
     public static void main(String[] args) {
+        Buffer b1 = new Buffer(5);
+        try {
+            b1.push(5);
+        } catch (InterruptedException e) {
+            System.out.println(e);
+        }
 
-        Buffer b1 = new Buffer(5);  //Capacity of the Buffer
 
     }
-}
\ No newline at end of file
+}
-- 
GitLab