Scribble Problem Set Javadocs

cs101.util.semaphore
Class GCS

java.lang.Object
  extended byjava.awt.Component
      extended byjava.awt.Container
          extended byjava.awt.Panel
              extended bycs101.util.semaphore.GraphicalSemaphore
                  extended bycs101.util.semaphore.GCS
All Implemented Interfaces:
javax.accessibility.Accessible, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable

public class GCS
extends GraphicalSemaphore

cs101.util.GCS implements a counting semaphore of arbitrary size in java.
Interface is gcs.request(), gcs.release().
It also provides a graphical display of the semaphores status.

The general design of this utility was influenced by the design of the cs101.util.BS (wrote by Lynn Stein).
Copyright 1996 Massachusetts Institute of Technology

Version:
$Id: GCS.java,v 1.1.1.1 2002/06/05 21:56:32 root Exp $
Author:
Todd C. Parnell, tparnell@ai.mit.edu, Joshua R. Brown, reuben@ai.mit.edu
See Also:
Serialized Form

Nested Class Summary
 
Nested classes inherited from class java.awt.Panel
java.awt.Panel.AccessibleAWTPanel
 
Nested classes inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
 
Fields inherited from class cs101.util.semaphore.GraphicalSemaphore
display, InstanceCounter, label, myNumber
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
GCS(int size, int busy, java.lang.String label)
          Constructs a counting semaphore with the size and initial value passed in.
 
Method Summary
 void release()
          Releases a lock of the semaphore (if any are currently busy).
 void request()
          Requests the semaphore.
protected  void setupGUI()
          Does all of the graphical setup on this level then calls the superclasses method to finish the setup.
protected  void showStatus()
          Prints out the current state of the semaphore.
 
Methods inherited from class cs101.util.semaphore.GraphicalSemaphore
getMinimumSize, getPreferredSize
 
Methods inherited from class java.awt.Panel
addNotify, getAccessibleContext
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getInsets, getLayout, getListeners, getMaximumSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paint, paintComponents, paramString, preferredSize, print, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, removeNotify, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, setFont, setLayout, transferFocusBackward, transferFocusDownCycle, update, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getToolkit, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isOpaque, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, reshape, resize, resize, setBackground, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, setVisible, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

GCS

public GCS(int size,
           int busy,
           java.lang.String label)
Constructs a counting semaphore with the size and initial value passed in. Uses the String past in to identfy the semaphore in the display.

Parameters:
size - The length of the semaphore (Probably the length of the buffer that it is associated with).
busy - The number of intially busy blocks in the semaphore (ie all busy = size, all free = 0).
label - An identfying string of text for the semaphore.
Method Detail

setupGUI

protected void setupGUI()
Does all of the graphical setup on this level then calls the superclasses method to finish the setup. This method is primarly responsible for setting up the display Panel.

Overrides:
setupGUI in class GraphicalSemaphore

request

public void request()
Requests the semaphore. If all of the locks in the semaphore are currently busy, causes the requesting process to wait() until the semaphore is release()d. Unlike java.lang.Object.wait(), the requesting process is not suspended if the semaphore is currently free.

Specified by:
request in class GraphicalSemaphore
See Also:
release(), Object.wait()

release

public void release()
Releases a lock of the semaphore (if any are currently busy). Any objects currently wait()ing on the semaphore are notify()d (and one of them will be granted the semaphore). Unlike java.lang.Object.notify(), the semaphore is also freed so that if there are no wait()ing objects, the next object to request() the semaphore will receive it.

Specified by:
release in class GraphicalSemaphore
See Also:
request(), Object.notifyAll()

showStatus

protected void showStatus()
Prints out the current state of the semaphore. Changes the graphical display.

Specified by:
showStatus in class GraphicalSemaphore

Scribble Problem Set Javadocs