/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ /* * StorageNativeOutputStream.java * * Created on 1. September 2004, 10:20 */ package com.sun.star.sdbcx.comp.hsqldb; /** * * @author oj93728 */ public class StorageNativeOutputStream { static { NativeLibraries.load(); } String name; Object key; /** Creates a new instance of StorageNativeOutputStream */ public StorageNativeOutputStream(String _name,Object _key) { name = _name; key = _key; openStream(name, (String)key, NativeStorageAccess.WRITE | NativeStorageAccess.TRUNCATE); } public native void openStream(String name,String key, int mode); /** * Writes len bytes from the specified byte array * starting at offset off to this output stream. * The general contract for write(b, off, len) is that * some of the bytes in the array b are written to the * output stream in order; element b[off] is the first * byte written and b[off+len-1] is the last byte written * by this operation. *

* The write method of OutputStream calls * the write method of one argument on each of the bytes to be * written out. Subclasses are encouraged to override this method and * provide a more efficient implementation. *

* If b is null, a * NullPointerException is thrown. *

* If off is negative, or len is negative, or * off+len is greater than the length of the array * b, then an IndexOutOfBoundsException is thrown. * @param key The name of the data source. * @param _file The name of the file to write to. * @param b the data. * @param off the start offset in the data. * @param len the number of bytes to write. * @exception java.io.IOException if an I/O error occurs. In particular, * an IOException is thrown if the output * stream is closed. */ public native void write(String key,String _file,byte[] b, int off, int len) throws java.io.IOException; /** * Writes b.length bytes from the specified byte array * to this output stream. The general contract for write(b) * is that it should have exactly the same effect as the call * write(b, 0, b.length). * * @param b the data. * @exception java.io.IOException if an I/O error occurs. * @see java.io.OutputStream#write(byte[], int, int) */ public native void write(String key,String _file,byte[] b) throws java.io.IOException; /** * Closes this output stream and releases any system resources * associated with this stream. The general contract of close * is that it closes the output stream. A closed stream cannot perform * output operations and cannot be reopened. *

* The close method of OutputStream does nothing. * @param key The name of the data source. * @param _file The name of the file to write to. * * @exception java.io.IOException if an I/O error occurs. */ public native void close(String key,String _file) throws java.io.IOException; /** * Writes the specified byte to this output stream. The general * contract for write is that one byte is written * to the output stream. The byte to be written is the eight * low-order bits of the argument b. The 24 * high-order bits of b are ignored. *

* Subclasses of OutputStream must provide an * implementation for this method. * * @param key The name of the data source. * @param _file The name of the file to write to. * @param b the byte. * @exception java.io.IOException if an I/O error occurs. In particular, * an IOException may be thrown if the * output stream has been closed. */ public native void write(String key,String _file,int b) throws java.io.IOException; /** * Flushes this output stream and forces any buffered output bytes * to be written out. The general contract of flush is * that calling it is an indication that, if any bytes previously * written have been buffered by the implementation of the output * stream, such bytes should immediately be written to their * intended destination. *

* The flush method of OutputStream does nothing. * @param key The name of the data source. * @param _file The name of the file to write to. * * @exception java.io.IOException if an I/O error occurs. */ public native void flush(String key,String _file) throws java.io.IOException; /** * Force all system buffers to synchronize with the underlying * device. This method returns after all modified data and * attributes have been written to the relevant device(s). * * sync is meant to be used by code that requires physical * storage (such as a file) to be in a known state For * example, a class that provided a simple transaction facility * might use sync to ensure that all changes to a file caused * by a given transaction were recorded on a storage medium. * * sync only affects buffers downstream. If * any in-memory buffering is being done by the application (for * example, by a BufferedOutputStream object), those buffers must * be flushed (for example, by invoking * OutputStream.flush) before that data will be affected by sync. * * @exception java.io.IOException * Thrown when the buffers cannot be flushed, * or because the system cannot guarantee that all the * buffers have been synchronized with physical media. */ public native void sync(String key,String _file) throws java.io.IOException; }