*** empty log message ***
[IRC.git] / Robust / Transactions / TransactionalIO / src / TransactionalIO / core / GlobalINodeState.java
1 /*
2  * Adapter.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 package TransactionalIO.core;
33
34 import java.util.Collections;
35 import java.util.HashMap;
36 import java.util.Map;
37 import java.util.concurrent.ConcurrentHashMap;
38 import java.util.concurrent.atomic.AtomicLong;
39
40  /* @author Navid Farri
41  */
42 public class GlobalINodeState {
43
44
45     private ConcurrentHashMap conlockmap = new ConcurrentHashMap(16);
46     
47     protected GlobalLength commitedfilesize;
48     protected int seqNum = 0;
49     protected INode inode;
50
51     public GlobalINodeState() {
52     }
53     
54     
55     
56     
57     protected GlobalINodeState(INode inode, long length) {
58        
59         commitedfilesize = new GlobalLength(length);
60         this.inode = inode;
61     }
62     
63     
64
65
66    
67     
68
69      public BlockDataStructure getBlockDataStructure(Integer blocknumber) {
70     BlockDataStructure rec = (BlockDataStructure)conlockmap.get(blocknumber);
71     if (rec == null) {
72         // record does not yet exist
73         BlockDataStructure newRec = new BlockDataStructure(inode, blocknumber);
74         rec = (BlockDataStructure)conlockmap.putIfAbsent(blocknumber, newRec);
75         if (rec == null) {
76             // put succeeded, use new value
77             rec = newRec;
78         }
79     }
80     return rec;
81 }
82          
83             
84      
85
86
87 }
88