View Javadoc

    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  }