2 * ContentionManager.java
4 * Copyright 2006 Sun Microsystems, Inc., 4150 Network Circle, Santa
5 * Clara, California 95054, U.S.A. All rights reserved.
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
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
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.
33 package dstm2.file.interfaces;
36 import java.util.Collection;
37 import dstm2.file.factory.TransactionalFile;
39 * Interface satisfied by all contention managers
41 public interface ContentionManager {
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.
47 void resolveConflict(Transaction me, Transaction other, TransactionalFile tf);
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
55 void resolveConflict(Transaction me, Collection<Transaction> other);
58 * Assign a priority to caller. Not all managers assign meaningful priorities.
59 * @return Priority of conflicting transaction.
64 * Change this manager's priority.
65 * @param value new priority value
67 void setPriority(long value);
70 * Notify manager that object was opened.
75 * Notify manager that transaction committed.