KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sleepycat > bind > serial > SerialBase


1 /*-
2  * See the file LICENSE for redistribution information.
3  *
4  * Copyright (c) 2000,2006 Oracle. All rights reserved.
5  *
6  * $Id: SerialBase.java,v 1.5 2006/10/30 21:14:07 bostic Exp $
7  */

8
9 package com.sleepycat.bind.serial;
10
11 import com.sleepycat.util.FastOutputStream;
12
13 /**
14  * A base class for serial bindings creators that provides control over the
15  * allocation of the output buffer.
16  *
17  * <p>Serial bindings append data to a {@link FastOutputStream} instance. This
18  * object has a byte array buffer that is resized when it is full. The
19  * reallocation of this buffer can be a performance factor for some
20  * applications using large objects. To manage this issue, the {@link
21  * #setSerialBufferSize} method may be used to control the initial size of the
22  * buffer, and the {@link #getSerialOutput} method may be overridden by
23  * subclasses to take over creation of the FastOutputStream object.</p>
24  */

25 public class SerialBase {
26
27     private int outputBufferSize;
28
29     /**
30      * Initializes the initial output buffer size to zero.
31      *
32      * <p>Unless {@link #setSerialBufferSize} is called, the default {@link
33      * FastOutputStream#DEFAULT_INIT_SIZE} size will be used.</p>
34      */

35     public SerialBase() {
36         outputBufferSize = 0;
37     }
38
39     /**
40      * Sets the initial byte size of the output buffer that is allocated by the
41      * default implementation of {@link #getSerialOutput}.
42      *
43      * <p>If this property is zero (the default), the default {@link
44      * FastOutputStream#DEFAULT_INIT_SIZE} size is used.</p>
45      *
46      * @param byteSize the initial byte size of the output buffer, or zero to
47      * use the default size.
48      */

49     public void setSerialBufferSize(int byteSize) {
50         outputBufferSize = byteSize;
51     }
52
53     /**
54      * Returns the initial byte size of the output buffer.
55      *
56      * @return the initial byte size of the output buffer.
57      *
58      * @see #setSerialBufferSize
59      */

60     public int getSerialBufferSize() {
61         return outputBufferSize;
62     }
63
64     /**
65      * Returns an empty SerialOutput instance that will be used by the serial
66      * binding or key creator.
67      *
68      * <p>The default implementation of this method creates a new SerialOutput
69      * with an initial buffer size that can be changed using the {@link
70      * #setSerialBufferSize} method.</p>
71      *
72      * <p>This method may be overridden to return a FastOutputStream instance.
73      * For example, an instance per thread could be created and returned by
74      * this method. If a FastOutputStream instance is reused, be sure to call
75      * its {@link FastOutputStream#reset} method before each use.</p>
76      *
77      * @param object is the object to be written to the serial output, and may
78      * be used by subclasses to determine the size of the output buffer.
79      *
80      * @return an empty FastOutputStream instance.
81      *
82      * @see #setSerialBufferSize
83      */

84     protected FastOutputStream getSerialOutput(Object JavaDoc object) {
85         int byteSize = getSerialBufferSize();
86         if (byteSize != 0) {
87             return new FastOutputStream(byteSize);
88         } else {
89             return new FastOutputStream();
90         }
91     }
92 }
93
Popular Tags