01: /*
02: * BEGIN_HEADER - DO NOT EDIT
03: *
04: * The contents of this file are subject to the terms
05: * of the Common Development and Distribution License
06: * (the "License"). You may not use this file except
07: * in compliance with the License.
08: *
09: * You can obtain a copy of the license at
10: * https://open-esb.dev.java.net/public/CDDLv1.0.html.
11: * See the License for the specific language governing
12: * permissions and limitations under the License.
13: *
14: * When distributing Covered Code, include this CDDL
15: * HEADER in each file and include the License file at
16: * https://open-esb.dev.java.net/public/CDDLv1.0.html.
17: * If applicable add the following below this CDDL HEADER,
18: * with the fields enclosed by brackets "[]" replaced with
19: * your own identifying information: Portions Copyright
20: * [year] [name of copyright owner]
21: */
22:
23: /*
24: * @(#)Sequencer.java
25: * Copyright 2004-2007 Sun Microsystems, Inc. All Rights Reserved.
26: *
27: * END_HEADER - DO NOT EDIT
28: */
29: package com.sun.jbi.messaging;
30:
31: /**
32: *
33: * @author Sun Microsystems, Inc.
34: */
35: public class Sequencer {
36: private int sequence = 0;
37: private int stallSequence = 0;
38: private boolean stalled = false;
39:
40: /** Creates a new instance of Sequencer */
41: public Sequencer() {
42: }
43:
44: synchronized public void reached(int reached) {
45: sequence = reached;
46: if (stalled && reached >= stallSequence) {
47: stalled = false;
48: this .notify();
49: }
50: }
51:
52: synchronized public void stallUntil(int stall) {
53: stallSequence = stall;
54: if (stall > sequence) {
55: stalled = true;
56: do {
57: try {
58: this .wait();
59: } catch (java.lang.InterruptedException iEx) {
60: break;
61: }
62: } while (stalled);
63: }
64: }
65: }
|