1 /*** 2 * 3 * Copyright 2004 Hiram Chirino 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 **/ 18 package org.activeio.journal.active; 19 20 import java.io.DataInput; 21 import java.io.DataOutput; 22 import java.io.IOException; 23 24 import org.activeio.Packet; 25 import org.activeio.PacketData; 26 import org.activeio.journal.RecordLocation; 27 28 /*** 29 * Defines a where a record can be located in the Journal. 30 * 31 * @version $Revision: 1.1 $ 32 */ 33 final public class Location implements RecordLocation { 34 35 static final public int SERIALIZED_SIZE=8; 36 37 final private int logFileId; 38 final private int logFileOffset; 39 40 public Location(int logFileId, int fileOffset) { 41 this.logFileId = logFileId; 42 this.logFileOffset = fileOffset; 43 } 44 45 public int compareTo(Object o) { 46 int rc = logFileId - ((Location) o).logFileId; 47 if (rc != 0) 48 return rc; 49 50 return logFileOffset - ((Location) o).logFileOffset; 51 } 52 53 public int hashCode() { 54 return logFileOffset ^ logFileId; 55 } 56 57 public boolean equals(Object o) { 58 if (o == null || o.getClass() != Location.class) 59 return false; 60 Location rl = (Location) o; 61 return rl.logFileId == this.logFileId && rl.logFileOffset == this.logFileOffset; 62 } 63 64 public String toString() { 65 return "" + logFileId + ":" + logFileOffset; 66 } 67 68 public int getLogFileId() { 69 return logFileId; 70 } 71 72 public int getLogFileOffset() { 73 return logFileOffset; 74 } 75 76 public void writeToPacket(Packet packet) throws IOException { 77 PacketData data = new PacketData(packet); 78 data.writeInt(logFileId); 79 data.writeInt(logFileOffset); 80 } 81 82 public void writeToDataOutput(DataOutput data) throws IOException { 83 data.writeInt(logFileId); 84 data.writeInt(logFileOffset); 85 } 86 87 static public Location readFromPacket(Packet packet) throws IOException { 88 PacketData data = new PacketData(packet); 89 return new Location(data.readInt(), data.readInt()); 90 } 91 92 public static Location readFromDataInput(DataInput data) throws IOException { 93 return new Location(data.readInt(), data.readInt()); 94 } 95 96 97 }