summaryrefslogtreecommitdiff
path: root/udkapi/com/sun/star/io/XInputStream.idl
diff options
context:
space:
mode:
Diffstat (limited to 'udkapi/com/sun/star/io/XInputStream.idl')
-rw-r--r--udkapi/com/sun/star/io/XInputStream.idl180
1 files changed, 180 insertions, 0 deletions
diff --git a/udkapi/com/sun/star/io/XInputStream.idl b/udkapi/com/sun/star/io/XInputStream.idl
new file mode 100644
index 000000000000..ee8a86e02c3e
--- /dev/null
+++ b/udkapi/com/sun/star/io/XInputStream.idl
@@ -0,0 +1,180 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: XInputStream.idl,v $
+ * $Revision: 1.18 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef __com_sun_star_io_XInputStream_idl__
+#define __com_sun_star_io_XInputStream_idl__
+
+#ifndef __com_sun_star_uno_XInterface_idl__
+#include <com/sun/star/uno/XInterface.idl>
+#endif
+
+#ifndef __com_sun_star_io_NotConnectedException_idl__
+#include <com/sun/star/io/NotConnectedException.idl>
+#endif
+
+#ifndef __com_sun_star_io_BufferSizeExceededException_idl__
+#include <com/sun/star/io/BufferSizeExceededException.idl>
+#endif
+
+
+//=============================================================================
+
+module com { module sun { module star { module io {
+
+//=============================================================================
+
+// DocMerge from xml: interface com::sun::star::io::XInputStream
+/** This is the basic interface to read data from a stream.
+ <p>
+ See the <a href="http://udk.openoffice.org/common/man/concept/streams.html">
+ streaming document</a> for further information on chaining and piping streams.
+ */
+published interface XInputStream: com::sun::star::uno::XInterface
+{
+ //-------------------------------------------------------------------------
+
+ // DocMerge from xml: method com::sun::star::io::XInputStream::readBytes
+ /** reads the specified number of bytes in the given sequence.
+
+ <p>The return value specifies the number of bytes which have been
+ put into the sequence. A difference between <var>nBytesToRead</var>
+ and the return value indicates that EOF has been reached. This means
+ that the method blocks until the specified number of bytes are
+ available or the EOF is reached. </p>
+ @param aData
+ after the call, the byte sequence contains the requested number
+ of bytes (or less as a sign of EOF).
+
+ <p>
+ C++ only : Note that for unbridged (e.g., in-process)
+ calls, using the same sequence for repetive readBytes()-calls
+ can bear a performance advantage. The callee can put the data
+ directly into the sequence so that no buffer reallocation is
+ necessary.
+ But this holds only when
+ <ol>
+ <li> neither caller nor callee keep a second reference to the same
+ sequence.
+ <li> the sequence is pre-allocated with the requested number of bytes.
+ <li> the same sequence is reused ( simply preallocationg a new
+ sequence for every call bears no advantage ).
+ <li> the call is not bridged (e.g., betweeen different compilers
+ or different processes ).
+ </ol>
+
+ If the same 'optimized' code runs against an interface in a different process,
+ there is an unnecessary memory allocation/deallocation (the out parameter
+ is of course NOT transported over the connection), but this should
+ be negligible compared to a synchron call.
+ @param nBytesToRead
+ the total number of bytes to read
+ */
+ long readBytes( [out] sequence<byte> aData,
+ [in] long nBytesToRead )
+ raises( com::sun::star::io::NotConnectedException,
+ com::sun::star::io::BufferSizeExceededException,
+ com::sun::star::io::IOException);
+
+ //-------------------------------------------------------------------------
+
+ // DocMerge from xml: method com::sun::star::io::XInputStream::readSomeBytes
+ /** reads the available number of bytes, at maximum
+ <var>nMaxBytesToRead</var>.
+
+ <p>This method is very similar to the readBytes method, except that
+ it has different blocking behaviour.
+ The method blocks as long as at least 1 byte is available or
+ EOF has been reached. EOF has only been reached, when the method
+ returns 0 and the corresponding byte sequence is empty.
+ Otherwise, after the call, aData contains the available,
+ but no more than nMaxBytesToRead, bytes.
+ @param aData contains the data read from the stream.
+ @param nMaxBytesToRead The maximum number of bytes to be read from this
+ stream during the call.
+ @see com::sun::star::io::XInputStream::readBytes
+ */
+ long readSomeBytes( [out] sequence<byte> aData,
+ [in] long nMaxBytesToRead )
+ raises( com::sun::star::io::NotConnectedException,
+ com::sun::star::io::BufferSizeExceededException,
+ com::sun::star::io::IOException );
+
+ //-------------------------------------------------------------------------
+
+ // DocMerge from xml: method com::sun::star::io::XInputStream::skipBytes
+ /** skips the next <var>nBytesToSkip</var> bytes (must be positive).
+
+ <p>It is up to the implementation whether this method is
+ blocking the thread or not. </p>
+ @param nBytesToSkip
+ number of bytes to skip
+ */
+ void skipBytes( [in] long nBytesToSkip )
+ raises( com::sun::star::io::NotConnectedException,
+ com::sun::star::io::BufferSizeExceededException,
+ com::sun::star::io::IOException );
+
+ //-------------------------------------------------------------------------
+
+ // DocMerge from xml: method com::sun::star::io::XInputStream::available
+ /** states how many bytes can be read or skipped without blocking.
+
+ <p>Note: This method offers no information on whether the EOF
+ has been reached. </p>
+ */
+ long available()
+ raises( com::sun::star::io::NotConnectedException,
+ com::sun::star::io::IOException
+ );
+
+ //-------------------------------------------------------------------------
+
+ // DocMerge from xml: method com::sun::star::io::XInputStream::closeInput
+ /** closes the stream.
+
+ <p>Users must close the stream explicitly when no further
+ reading should be done. (There may exist ring references to
+ chained objects that can only be released during this call.
+ Thus not calling this method would result in a leak of memory or
+ external resources.) </p>
+ */
+ void closeInput()
+ raises( com::sun::star::io::NotConnectedException,
+ com::sun::star::io::IOException);
+
+};
+
+//=============================================================================
+
+}; }; }; };
+
+/*=============================================================================
+
+=============================================================================*/
+#endif