StockDispenserImpl.java
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:2k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. package example.corba;
  2. import org.omg.CosNaming.*;
  3. /**
  4.  * This class implements the server side of the example.
  5.  *
  6.  * $Id: StockDispenserImpl.java,v 1.1 1999/01/25 21:22:03 scrappy Exp $
  7.  */
  8. public class StockDispenserImpl extends stock._StockDispenserImplBase
  9. {
  10.     private int maxObjects = 10;
  11.     private int numObjects = 0;
  12.     private StockItemStatus[] stock = new StockItemStatus[maxObjects];
  13.     
  14.     public StockDispenserImpl(String[] args,String name,int num)
  15.     {
  16. super();
  17. try {
  18.     // get reference to orb
  19.     org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args,null);
  20.     
  21.     // prestart num objects
  22.     if(num>=maxObjects)
  23. num=maxObjects;
  24.     numObjects = num;
  25.     for(int i=0;i<numObjects;i++) {
  26. stock[i] = new StockItemStatus();
  27. stock[i].ref = new StockItemImpl(args,"StockItem"+(i+1));
  28. orb.connect(stock[i].ref);
  29.     }
  30. } catch(org.omg.CORBA.SystemException e) {
  31.     e.printStackTrace();
  32. }
  33.     }
  34.     
  35.     /**
  36.      * This method, defined in stock.idl, reserves a slot in the dispenser
  37.      */
  38.     public stock.StockItem reserveItem() throws stock.StockException
  39.     {
  40. for(int i=0;i<numObjects;i++) {
  41.     if(!stock[i].inUse) {
  42. stock[i].inUse = true;
  43. System.out.println("Reserving slot "+i);
  44. return stock[i].ref;
  45.     }
  46. }
  47. return null;
  48.     }
  49.     
  50.     /**
  51.      * This releases a slot from the dispenser
  52.      */
  53.     public void releaseItem(stock.StockItem item) throws stock.StockException
  54.     {
  55. for(int i=0;i<numObjects;i++) {
  56.     if(stock[i].ref.getInstanceName().equals(item.getInstanceName())) {
  57. stock[i].inUse = false;
  58. System.out.println("Releasing slot "+i);
  59. return;
  60.     }
  61. }
  62. System.out.println("Reserved object not a member of this dispenser");
  63. return;
  64.     }
  65.     
  66.     /**
  67.      * This class defines a slot in the dispenser
  68.      */
  69.     class StockItemStatus
  70.     {
  71. StockItemImpl ref;
  72. boolean inUse;
  73. StockItemStatus() {
  74.     ref = null;
  75.     inUse = false;
  76. }
  77.     }
  78.     
  79. }