KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sun > jts > CosTransactions > EventSemaphore


1 /*
2  * The contents of this file are subject to the terms
3  * of the Common Development and Distribution License
4  * (the License). You may not use this file except in
5  * compliance with the License.
6  *
7  * You can obtain a copy of the license at
8  * https://glassfish.dev.java.net/public/CDDLv1.0.html or
9  * glassfish/bootstrap/legal/CDDLv1.0.txt.
10  * See the License for the specific language governing
11  * permissions and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL
14  * Header Notice in each file and include the License file
15  * at glassfish/bootstrap/legal/CDDLv1.0.txt.
16  * If applicable, add the following below the CDDL Header,
17  * with the fields enclosed by brackets [] replaced by
18  * you own identifying information:
19  * "Portions Copyrighted [year] [name of copyright owner]"
20  *
21  * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
22  */

23
24 /*
25  * Copyright 2004-2005 Sun Microsystems, Inc. All rights reserved.
26  * Use is subject to license terms.
27  */

28 //----------------------------------------------------------------------------
29
//
30
// Module: EventSemaphore.java
31
//
32
// Description: Event semaphore implementation.
33
//
34
// Product: com.sun.jts.CosTransactions
35
//
36
// Author: Simon Holdsworth
37
//
38
// Date: March, 1997
39
//
40
// Copyright (c): 1995-1997 IBM Corp.
41
//
42
// The source code for this program is not published or otherwise divested
43
// of its trade secrets, irrespective of what has been deposited with the
44
// U.S. Copyright Office.
45
//
46
// This software contains confidential and proprietary information of
47
// IBM Corp.
48
//----------------------------------------------------------------------------
49

50 package com.sun.jts.CosTransactions;
51
52 /**The EventSemaphore interface provides operations that wait for and post an
53  * event semaphore.
54  * <p>
55  * This is specifically to handle the situation where the event may have been
56  * posted before the wait method is called. This behaviour is not supported by
57  * the existing wait and notify methods.
58  *
59  * @version 0.01
60  *
61  * @author Simon Holdsworth, IBM Corporation
62  *
63  * @see
64 */

65 //----------------------------------------------------------------------------
66
// CHANGE HISTORY
67
//
68
// Version By Change Description
69
// 0.01 SAJH Initial implementation.
70
//-----------------------------------------------------------------------------
71

72 public class EventSemaphore {
73     boolean posted = false;
74
75     /**Default EventSemaphore constructor.
76      *
77      * @param
78      *
79      * @return
80      *
81      * @see
82      */

83     EventSemaphore() {
84     }
85
86     /**Creates the event semaphore in the given posted state.
87      *
88      * @param posted Indicates whether the semaphore should be posted.
89      *
90      * @return
91      *
92      * @see
93      */

94     EventSemaphore( boolean posted ) {
95         this.posted = posted;
96     }
97
98     /**
99      * @return true if semaphore has already been posted.
100      */

101     synchronized public boolean isPosted() {
102         return posted;
103     }
104
105     /**Waits for the event to be posted.
106      * <p>
107      * If the event has already been posted, then the operation returns immediately.
108      *
109      * @param
110      *
111      * @return
112      *
113      * @exception InterruptedException The wait was interrupted.
114      *
115      * @see
116      */

117     synchronized public void waitEvent()
118         throws InterruptedException JavaDoc {
119         if( !posted )
120             wait();
121     }
122
123     /**Posts the event semaphore.
124      * <p>
125      * All waiters are notified.
126      *
127      * @param
128      *
129      * @return
130      *
131      * @see
132      */

133     synchronized void post() {
134         if( !posted )
135             notifyAll();
136         posted = true;
137     }
138
139     /**Clears a posted event semaphore.
140      *
141      * @param
142      *
143      * @return
144      *
145      * @see
146      */

147     synchronized void clear() {
148         posted = false;
149     }
150 }
151
Popular Tags