/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.communication.file.service.legacy.api;
import java.io.IOException;
import de.rcenvironment.core.communication.fileaccess.api.RemoteFileConnection.FileType;
import de.rcenvironment.core.utils.common.rpc.RemotableService;
import de.rcenvironment.core.utils.common.rpc.RemoteOperationException;
/**
* Service for accessing files either existing in the RCE data management or in the file system.
*
* @author Heinrich Wendel
* @author Doreen Seider
* @author Robert Mischke (adapted for 7.0.0)
*/
@Deprecated
@RemotableService
public interface RemotableFileStreamAccessService {
/**
* Opens a file.
*
* @param type The type of the file. (rce://host/instance/dataReference)
* @param file The URI of the file. (rce://host/instance/dataReference)
* @return The UUID representing the open remote input stream.
* @throws IOException if an I/O error occurs.
* @throws RemoteOperationException standard remote operation exception
* @see java.io.InputStream#open()
*/
String open(FileType type, String file) throws IOException, RemoteOperationException;
/**
* Reads from a file.
*
* @param uuid The id of the file.
* @return the next byte of data, or -1 if the end of the stream is reached.
* @throws IOException if an I/O error occurs.
* @throws RemoteOperationException standard remote operation exception
*
* @see java.io.InputStream#read()
*/
int read(String uuid) throws IOException, RemoteOperationException;
/**
* Reads from a file.
*
* @param uuid The id of the file.
* @param len the maximum number of bytes to read.
* @return the buffer into which the data is read.
* @throws IOException - If the first byte cannot be read for any reason other than end of file, or if the input stream has been closed,
* or if some other I/O error occurs.
* @throws RemoteOperationException standard remote operation exception
*
* @see java.io.InputStream#read(byte[], int, int)
*/
byte[] read(String uuid, Integer len) throws IOException, RemoteOperationException;
/**
* Skips over and discards bytes from a file.
*
* @param uuid the id of the file.
* @param n the number of bytes to be skipped.
* @return the actual number of bytes skipped.
* @throws IOException - if the stream does not support seek, or if some other I/O error occurs.
* @throws RemoteOperationException standard remote operation exception
*
* @see java.io.InputStream#skip(long)
*/
long skip(String uuid, Long n) throws IOException, RemoteOperationException;
/**
* Closes a file.
*
* @param uuid the id of the file.
* @throws IOException - if an I/O error occurs.
* @throws RemoteOperationException standard remote operation exception
*
* @see java.io.InputStream#close()
*/
void close(String uuid) throws IOException, RemoteOperationException;
}