home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 May / Pcwk0597.iso / sybase / starbuck / samples.z / TokenIssuer.wxc < prev    next >
Text File  |  1996-12-10  |  3KB  |  148 lines

  1. Save Format v1.3
  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 CPPPrefixBlock
  52. @begin-code CPPPrefix
  53.  
  54.  
  55. @end-code;
  56.   GencodeSrcLine -1;
  57.  @end;
  58.  
  59.  @begin ClassContentsBlock
  60. @begin-code ClassContents
  61.  
  62.     // add your data members here
  63.     int _maxTokens;
  64.     int _issuedTokens = 0;
  65.  
  66. @end-code;
  67.   GencodeSrcLine 41;
  68.  @end;
  69.  
  70. @begin-code BaseClassList
  71.  
  72. extends Object
  73.  
  74. @end-code;
  75.  
  76. @begin-code GeneratedClassContents
  77.  
  78.  
  79. @end-code;
  80.  
  81. @begin-code Code "TokenIssuer::TokenIssuer(int maxTokens)"
  82.  
  83. //****************************
  84. /**
  85.  * This class issues tokens to running threads and
  86.  * causes threads to wait when there are no tokens 
  87.  * available.  The number of tokens is supplied in
  88.  * the constructor and synchronized methods are used
  89.  * to eliminate concurrency issues.
  90. */
  91.  
  92.     public @CLASSNAME@(int maxTokens)
  93.     //****************************
  94.     {
  95.         _maxTokens = maxTokens;   
  96.     }
  97.  
  98. @end-code;
  99.  
  100. @begin-code Code "TokenIssuer::Prototype for TokenIssuer(int maxTokens)"
  101.  
  102.     public:
  103.         void @CLASSNAME@(int maxTokens);
  104.  
  105. @end-code;
  106.  
  107. @begin-code Code "TokenIssuer::getToken()"
  108.  
  109.     public synchronized void getToken()
  110.     //****************************
  111.     {
  112.         while (_issuedTokens == _maxTokens) {
  113.             try {
  114.                 wait();
  115.             } catch (InterruptedException InTokenLine) {}
  116.         }
  117.         _issuedTokens++;
  118.         return;
  119.     }
  120.  
  121. @end-code;
  122.  
  123. @begin-code Code "TokenIssuer::Prototype for getToken()"
  124.  
  125.     public:
  126.         syncronized boolean getToken();
  127.  
  128. @end-code;
  129.  
  130. @begin-code Code "TokenIssuer::relinquishToken()"
  131.  
  132.     public synchronized void relinquishToken()
  133.     //****************************
  134.     {
  135.         _issuedTokens--;
  136.         notifyAll();
  137.     }
  138.  
  139. @end-code;
  140.  
  141. @begin-code Code "TokenIssuer::Prototype for relinquishToken()"
  142.  
  143.     public:
  144.         syncronized void relinquishToken();
  145.  
  146. @end-code;
  147. @end;
  148.