KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > mckoi > database > global > Ref


1 /**
2  * com.mckoi.database.global.Ref 30 Jan 2003
3  *
4  * Mckoi SQL Database ( http://www.mckoi.com/database )
5  * Copyright (C) 2000, 2001, 2002 Diehl and Associates, Inc.
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License
9  * Version 2 as published by the Free Software Foundation.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License Version 2 for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * Version 2 along with this program; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19  *
20  * Change Log:
21  *
22  *
23  */

24
25 package com.mckoi.database.global;
26
27 import java.io.IOException JavaDoc;
28
29 /**
30  * An interface that represents a reference to a object that isn't stored in
31  * main memory. The reference to the object is made through the id value
32  * returned by the 'getID' method.
33  *
34  * @author Tobias Downer
35  */

36
37 public interface Ref {
38
39   /**
40    * An id used to reference this object in the context of the database. Note
41    * that once a static reference is made (or removed) to/from this object, the
42    * BlobStore should be notified of the reference. The store will remove an
43    * large object that has no references to it.
44    */

45   long getID();
46
47   /**
48    * The type of large object that is being referenced. 2 = binary object,
49    * 3 = ASCII character object, 4 = Unicode character object.
50    */

51   byte getType();
52   
53   /**
54    * The 'raw' size of this large object in bytes when it is in its byte[]
55    * form. This value allows us to know how many bytes we can read from this
56    * large object when it's being transferred to the client.
57    */

58   long getRawSize();
59   
60   /**
61    * Reads a part of this large object from the store into the given byte
62    * buffer. This method should only be used when reading a large object
63    * to transfer to the JDBC driver. It represents the byte[] representation
64    * of the object only and is only useful for transferral of the large object.
65    */

66   void read(long offset, byte[] buf, int length) throws IOException JavaDoc;
67   
68   /**
69    * This method is used to write the contents of the large object into the
70    * backing store. This method will only work when the large object is in
71    * an initial 'write' phase in which the client is pushing the contents of
72    * the large object onto the server to be stored.
73    */

74   void write(long offset, byte[] buf, int length) throws IOException JavaDoc;
75
76   /**
77    * This method is called when the write phrase has completed, and it marks
78    * this large object as complete. After this method is called the large
79    * object reference is a static object that can not be changed.
80    */

81   void complete() throws IOException JavaDoc;
82   
83 }
84
85
Popular Tags