KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sun > jts > CosTransactions > LogRecordHeader


1 /*
2  * The contents of this file are subject to the terms
3  * of the Common Development and Distribution License
4  * (the License). You may not use this file except in
5  * compliance with the License.
6  *
7  * You can obtain a copy of the license at
8  * https://glassfish.dev.java.net/public/CDDLv1.0.html or
9  * glassfish/bootstrap/legal/CDDLv1.0.txt.
10  * See the License for the specific language governing
11  * permissions and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL
14  * Header Notice in each file and include the License file
15  * at glassfish/bootstrap/legal/CDDLv1.0.txt.
16  * If applicable, add the following below the CDDL Header,
17  * with the fields enclosed by brackets [] replaced by
18  * you own identifying information:
19  * "Portions Copyrighted [year] [name of copyright owner]"
20  *
21  * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
22  */

23
24 /*
25  * Copyright 2004-2005 Sun Microsystems, Inc. All rights reserved.
26  * Use is subject to license terms.
27  */

28 //----------------------------------------------------------------------------
29
//
30
// Module: LogRecordHeader.java
31
//
32
// Description: Log record header.
33
//
34
// Product: com.sun.jts.CosTransactions
35
//
36
// Author: Simon Holdsworth
37
//
38
// Date: March, 1997
39
//
40
// Copyright (c): 1995-1997 IBM Corp.
41
//
42
// The source code for this program is not published or otherwise divested
43
// of its trade secrets, irrespective of what has been deposited with the
44
// U.S. Copyright Office.
45
//
46
// This software contains confidential and proprietary information of
47
// IBM Corp.
48
//----------------------------------------------------------------------------
49

50 package com.sun.jts.CosTransactions;
51
52 import java.io.*;
53
54 /**
55  * A class containing header information for a log record.
56  *
57  * @version 0.01
58  *
59  * @author Simon Holdsworth, IBM Corporation
60  *
61  * @see LogHandle
62  */

63 class LogRecordHeader implements Serializable {
64
65     /**
66      * This constant holds the size of the LogRecordHeader object.
67      */

68     final static int SIZEOF = 3 * LogLSN.SIZEOF + 8;
69
70     int recordType = 0;
71     LogLSN currentLSN = null;
72     LogLSN previousLSN = null;
73     LogLSN nextLSN = null;
74     int recordLength = 0;
75
76     LogRecordHeader() {
77         currentLSN = new LogLSN();
78         previousLSN = new LogLSN();
79         nextLSN = new LogLSN();
80     }
81
82     /**
83      * Constructs a LogRecordHeader from the given byte array.
84      *
85      * @param bytes The array of bytes from which the object is to
86      * be constructed.
87      * @param index The index in the array where copy is to start.
88      *
89      * @return
90      *
91      * @see
92      */

93     LogRecordHeader(byte[] bytes, int index) {
94         recordType = (bytes[index++]&255) +
95                      ((bytes[index++]&255) << 8) +
96                      ((bytes[index++]&255) << 16) +
97                      ((bytes[index++]&255) << 24);
98
99         currentLSN = new LogLSN(bytes,index); index += LogLSN.SIZEOF;
100         previousLSN = new LogLSN(bytes,index); index += LogLSN.SIZEOF;
101         nextLSN = new LogLSN(bytes,index); index += LogLSN.SIZEOF;
102
103         recordLength = (bytes[index++]&255) +
104                        ((bytes[index++]&255) << 8) +
105                        ((bytes[index++]&255) << 16) +
106                        ((bytes[index++]&255) << 24);
107     }
108
109     /**
110      * Makes the target object a copy of the parameter.
111      *
112      * @param other The object to be copied.
113      *
114      * @return
115      *
116      * @see
117      */

118     void copy( LogRecordHeader other) {
119         recordType = other.recordType;
120         currentLSN.copy(other.currentLSN);
121         previousLSN.copy(other.previousLSN);
122         nextLSN.copy(other.nextLSN);
123         recordLength = other.recordLength;
124     }
125
126     /**
127      * Makes a byte representation of the LogRecordHeader.
128      *
129      * @param bytes The array of bytes into which the object is to be copied.
130      * @param index The index in the array where copy is to start.
131      *
132      * @return Number of bytes copied.
133      *
134      * @see
135      */

136     final int toBytes(byte[] bytes, int index) {
137         bytes[index++] = (byte) recordType;
138         bytes[index++] = (byte)(recordType >> 8);
139         bytes[index++] = (byte)(recordType >> 16);
140         bytes[index++] = (byte)(recordType >> 24);
141         index += currentLSN.toBytes(bytes,index);
142         index += previousLSN.toBytes(bytes,index);
143         index += nextLSN.toBytes(bytes,index);
144         bytes[index++] = (byte) recordLength;
145         bytes[index++] = (byte)(recordLength >> 8);
146         bytes[index++] = (byte)(recordLength >> 16);
147         bytes[index++] = (byte)(recordLength >> 24);
148
149         return SIZEOF;
150     }
151
152     /**
153      * This method is called to direct the object to format its state
154      * to a String.
155      *
156      * @param
157      *
158      * @return The formatted representation of the object.
159      *
160      * @see
161      */

162     public final String JavaDoc toString() {
163         return "LRH(type="/*#Frozen*/ + recordType + ",curr="/*#Frozen*/ + currentLSN +
164                ",prev="/*#Frozen*/ + previousLSN + ",next="/*#Frozen*/ + nextLSN +
165                ",len="/*#Frozen*/ + recordLength + ")"/*#Frozen*/;
166     }
167 }
168
Popular Tags