home *** CD-ROM | disk | FTP | other *** search
/ Chip 1997 October / Chip_1997-10_cd.bin / tema / sybase / powerj / samples.z / TokenIssuer.wxc < prev    next >
Text File  |  1997-01-28  |  3KB  |  140 lines

  1. Save Format v2.0(1)
  2. @begin ClassFile "TokenIssuer"
  3.  Exported 1;
  4.  Abstract 0;
  5.  Interface 0;
  6.  PackageName "";
  7.  Language "Java";
  8.  
  9.  @begin UserFunction "TokenIssuer(int maxTokens)"
  10.   GencodeSrcLine 10;
  11.   FunctionName "TokenIssuer::TokenIssuer(int maxTokens)";
  12.  @end;
  13.  
  14.  @begin UserFunction "Prototype for TokenIssuer(int maxTokens)"
  15.   Private 1;
  16.   GencodeSrcLine -1;
  17.   FunctionName "TokenIssuer::Prototype for TokenIssuer(int maxTokens)";
  18.  @end;
  19.  
  20.  @begin UserFunction "getToken()"
  21.   GencodeSrcLine 24;
  22.   FunctionName "TokenIssuer::getToken()";
  23.  @end;
  24.  
  25.  @begin UserFunction "Prototype for getToken()"
  26.   Private 1;
  27.   GencodeSrcLine -1;
  28.   FunctionName "TokenIssuer::Prototype for getToken()";
  29.  @end;
  30.  
  31.  @begin UserFunction "relinquishToken()"
  32.   GencodeSrcLine 35;
  33.   FunctionName "TokenIssuer::relinquishToken()";
  34.  @end;
  35.  
  36.  @begin UserFunction "Prototype for relinquishToken()"
  37.   Private 1;
  38.   GencodeSrcLine -1;
  39.   FunctionName "TokenIssuer::Prototype for relinquishToken()";
  40.  @end;
  41.  
  42.  @begin HPPPrefixBlock
  43. @begin-code HPPPrefix
  44.  
  45. // add your custom import statements here
  46.  
  47. @end-code;
  48.   GencodeSrcLine 6;
  49.  @end;
  50.  
  51.  @begin ClassContentsBlock
  52. @begin-code ClassContents
  53.  
  54.     // add your data members here
  55.     int _maxTokens;
  56.     int _issuedTokens = 0;
  57.  
  58. @end-code;
  59.   GencodeSrcLine 41;
  60.  @end;
  61.  
  62. @begin-code BaseClassList
  63.  
  64. extends Object
  65.  
  66. @end-code;
  67.  
  68. @begin-code GeneratedClassContents
  69.  
  70.  
  71. @end-code;
  72.  
  73. @begin-code Code "TokenIssuer::TokenIssuer(int maxTokens)"
  74.  
  75. //****************************
  76. /**
  77.  * This class issues tokens to running threads and
  78.  * causes threads to wait when there are no tokens 
  79.  * available.  The number of tokens is supplied in
  80.  * the constructor and synchronized methods are used
  81.  * to eliminate concurrency issues.
  82. */
  83.  
  84.     public @CLASSNAME@(int maxTokens)
  85.     //****************************
  86.     {
  87.         _maxTokens = maxTokens;   
  88.     }
  89.  
  90. @end-code;
  91.  
  92. @begin-code Code "TokenIssuer::Prototype for TokenIssuer(int maxTokens)"
  93.  
  94.     public:
  95.         void @CLASSNAME@(int maxTokens);
  96.  
  97. @end-code;
  98.  
  99. @begin-code Code "TokenIssuer::getToken()"
  100.  
  101.     public synchronized void getToken()
  102.     //****************************
  103.     {
  104.         while (_issuedTokens == _maxTokens) {
  105.             try {
  106.                 wait();
  107.             } catch (InterruptedException InTokenLine) {}
  108.         }
  109.         _issuedTokens++;
  110.         return;
  111.     }
  112.  
  113. @end-code;
  114.  
  115. @begin-code Code "TokenIssuer::Prototype for getToken()"
  116.  
  117.     public:
  118.         syncronized boolean getToken();
  119.  
  120. @end-code;
  121.  
  122. @begin-code Code "TokenIssuer::relinquishToken()"
  123.  
  124.     public synchronized void relinquishToken()
  125.     //****************************
  126.     {
  127.         _issuedTokens--;
  128.         notifyAll();
  129.     }
  130.  
  131. @end-code;
  132.  
  133. @begin-code Code "TokenIssuer::Prototype for relinquishToken()"
  134.  
  135.     public:
  136.         syncronized void relinquishToken();
  137.  
  138. @end-code;
  139. @end;
  140.