helpful progress reporting
[IRC.git] / Robust / Transactions / src / file / interfaces / ContentionManager.java
1 /*
2  * ContentionManager.java
3  *
4  * Copyright 2006 Sun Microsystems, Inc., 4150 Network Circle, Santa
5  * Clara, California 95054, U.S.A.  All rights reserved.  
6  * 
7  * Sun Microsystems, Inc. has intellectual property rights relating to
8  * technology embodied in the product that is described in this
9  * document.  In particular, and without limitation, these
10  * intellectual property rights may include one or more of the
11  * U.S. patents listed at http://www.sun.com/patents and one or more
12  * additional patents or pending patent applications in the U.S. and
13  * in other countries.
14  * 
15  * U.S. Government Rights - Commercial software.
16  * Government users are subject to the Sun Microsystems, Inc. standard
17  * license agreement and applicable provisions of the FAR and its
18  * supplements.  Use is subject to license terms.  Sun, Sun
19  * Microsystems, the Sun logo and Java are trademarks or registered
20  * trademarks of Sun Microsystems, Inc. in the U.S. and other
21  * countries.  
22  * 
23  * This product is covered and controlled by U.S. Export Control laws
24  * and may be subject to the export or import laws in other countries.
25  * Nuclear, missile, chemical biological weapons or nuclear maritime
26  * end uses or end users, whether direct or indirect, are strictly
27  * prohibited.  Export or reexport to countries subject to
28  * U.S. embargo or to entities identified on U.S. export exclusion
29  * lists, including, but not limited to, the denied persons and
30  * specially designated nationals lists is strictly prohibited.
31  */
32
33 package dstm2.file.interfaces;
34
35
36 import java.util.Collection;
37 import dstm2.file.factory.TransactionalFile;
38 /**
39  * Interface satisfied by all contention managers
40  */
41 public interface ContentionManager {
42   /**
43    * Either give the writer a chance to finish it, abort it, or both.
44    * @param me Calling transaction.
45    * @param other Transaction that's in my way.
46    */
47   void resolveConflict(Transaction me, Transaction other, TransactionalFile tf);
48     
49   
50   /**
51    * Either give the writer a chance to finish it, abort it, or both.
52    * @param me Calling transaction.
53    * @param other set of transactions in my way
54    */
55   void resolveConflict(Transaction me, Collection<Transaction> other);
56   
57   /**
58    * Assign a priority to caller. Not all managers assign meaningful priorities.
59    * @return Priority of conflicting transaction.
60    */
61   long getPriority();
62   
63   /**
64    * Change this manager's priority.
65    * @param value new priority value
66    */
67   void setPriority(long value);
68   
69   /**
70    * Notify manager that object was opened.
71    */
72   void openSucceeded();
73   
74   /**
75    * Notify manager that transaction committed.
76    */
77   void committed();
78   
79 };