001 package pnc; 002 import java.awt.*; 003 import cs101.util.semaphore.GraphicalSemaphore; 004 005 public abstract class Buffer { 006 protected GraphicalSemaphore read; 007 protected GraphicalSemaphore write; 008 protected Panel bufferPanel; 009 010 public Buffer() { 011 // will be setup by subclasses 012 this.read = null; 013 this.write = null; 014 015 this.bufferPanel = new Panel(); 016 this.bufferPanel.add(new Label("Storage")); 017 018 } 019 020 public abstract void produce(); 021 public abstract void consume(); 022 023 public Panel getReadFlag() { return (Panel)read; } 024 public Panel getWriteFlag() { return (Panel)write; } 025 public Panel getStoragePanel() { return bufferPanel; } 026 027 } 028 029 030 031 032 033 034