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