tecgraf.ftc_1_3.client
Class RemoteFileChannelImpl

java.lang.Object
  extended by tecgraf.ftc_1_3.client.RemoteFileChannelImpl
All Implemented Interfaces:
Serializable, RemoteFileChannel

public final class RemoteFileChannelImpl
extends Object
implements RemoteFileChannel

Representa uma implementação de um canal de arquivo remoto.

Author:
Tecgraf/PUC-Rio
See Also:
Serialized Form

Constructor Summary
RemoteFileChannelImpl(byte[] identifier, boolean writable, String host, int port, byte[] key)
          Cria um arquivo remoto.
 
Method Summary
 void close()
          Solicita o fechamento do arquivo.
 int getBufferSize()
           
 long getPosition()
          Obtém a posição atual do arquivo.
 long getSize()
          Obtém o tamanho do arquivo.
 boolean isOpen()
          Verifica se o arquivo está aberto.
 void keepAlive()
          Operação que faz um poll no servidor com o intuito de manter a conexao ativa
 void open(boolean readOnly)
          Solicita a abertura do arquivo.
 int read(byte[] target)
          Lê uma sequência de bytes do arquivo.
 int read(byte[] target, int offset, int length)
          Lê uma sequência de bytes do arquivo.
 int read(byte[] target, int offset, int length, long position)
          Lê uma sequência de bytes do arquivo.
 int read(byte[] target, long position)
          Lê uma sequência de bytes do arquivo.
 void setBufferSize(int bufferSize)
           
 void setPosition(long position)
          Define a nova posição do arquivo.
 void setSize(long size)
          Altera o tamanho do arquivo para um novo tamanho.
 long transferFrom(InputStream source, long position, long count)
          Transfere os dados de um fluxo de entrada para o arquivo.
 long transferFrom(RemoteFileChannel source, long position, long count)
          Transfere os de um outro arquivo remoto para o arquivo.
 long transferTo(long position, long count, OutputStream outputStream)
          Transfere os dados do arquivo para um fluxo de saída.
 long transferTo(long position, long count, RemoteFileChannel target)
          Transfere os dados do arquivo para um outro arquivo remoto.
 int write(byte[] source)
          Escreve uma sequência de bytes no arquivo.
 int write(byte[] source, int offset, int length)
          Escreve uma sequência de bytes no arquivo.
 int write(byte[] source, int offset, int length, long position)
          Escreve uma sequência de bytes no arquivo.
 int write(byte[] source, long position)
          Escreve uma sequência de bytes no arquivo.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RemoteFileChannelImpl

public RemoteFileChannelImpl(byte[] identifier,
                             boolean writable,
                             String host,
                             int port,
                             byte[] key)
Cria um arquivo remoto.

Parameters:
identifier - O identificador do arquivo.
writable - Indica se a escrita é permitida no arquivo.
host - A máquina do servidor de arquivos.
port - A porta do servidor de arquivos.
key - A chave de acesso ao arquivo.
Method Detail

open

public void open(boolean readOnly)
          throws PermissionException,
                 FileNotFoundException,
                 FailureException,
                 MaxClientsReachedException,
                 InvalidProtocolVersionException
Solicita a abertura do arquivo.

Specified by:
open in interface RemoteFileChannel
Parameters:
readOnly - Indica se o arquivo deve ser aberto somente para leitura ou não.
Throws:
InvalidProtocolVersionException
PermissionException - Caso o usuário não tenha permissão para realizar o modo de abertura solicitado.
FileNotFoundException - Caso o arquivo não exista.
FailureException - Caso ocorra alguma falha no procedimento.
MaxClientsReachedException - Caso o servidor não possa mais receber clientes.

isOpen

public boolean isOpen()
Verifica se o arquivo está aberto.

Specified by:
isOpen in interface RemoteFileChannel
Returns:
true caso o arquivo esteja aberto, ou false, caso contrário.

close

public void close()
           throws FailureException
Solicita o fechamento do arquivo.

Specified by:
close in interface RemoteFileChannel
Throws:
FailureException - Caso ocorra alguma falha no procedimento.

setSize

public void setSize(long size)
             throws PermissionException,
                    FailureException
Altera o tamanho do arquivo para um novo tamanho.

Specified by:
setSize in interface RemoteFileChannel
Parameters:
size - O novo tamanho.
Throws:
PermissionException - Caso o arquivo tenha sido aberto somente para leitura.
FailureException - Caso ocorra alguma falha no procedimento.

getPosition

public long getPosition()
                 throws FailureException
Obtém a posição atual do arquivo.

Specified by:
getPosition in interface RemoteFileChannel
Returns:
A posição atual do arquivo ou -1, caso ocorra algum erro.
Throws:
FailureException - Se houver falha na comunicação

setPosition

public void setPosition(long position)
                 throws FailureException
Define a nova posição do arquivo.

Specified by:
setPosition in interface RemoteFileChannel
Parameters:
position - A nova posição.
Throws:
FailureException - Caso ocorra alguma falha no procedimento.

getSize

public long getSize()
             throws FailureException
Obtém o tamanho do arquivo.

Specified by:
getSize in interface RemoteFileChannel
Returns:
O tamanho do arquivo ou -1, caso ocorra algum erro.
Throws:
FailureException

read

public int read(byte[] target)
         throws FailureException
Lê uma sequência de bytes do arquivo.

Specified by:
read in interface RemoteFileChannel
Parameters:
target - O buffer.
Returns:
A quantidade de bytes lidos.
Throws:
FailureException - Caso ocorra alguma falha no procedimento.

read

public int read(byte[] target,
                long position)
         throws FailureException
Lê uma sequência de bytes do arquivo.

Specified by:
read in interface RemoteFileChannel
Parameters:
target - O buffer.
position - A posição do arquivo a partir da qual a leitura vai ser iniciada.
Returns:
A quantidade de bytes lidos.
Throws:
FailureException - Caso ocorra alguma falha no procedimento.

read

public int read(byte[] target,
                int offset,
                int length)
         throws FailureException
Lê uma sequência de bytes do arquivo.

Specified by:
read in interface RemoteFileChannel
Parameters:
target - O buffer.
offset - O deslocamento no buffer.
length - A quantidade máxima de bytes a serem lidos.
Returns:
A quantidade de bytes lidos.
Throws:
FailureException - Caso ocorra alguma falha no procedimento.

read

public int read(byte[] target,
                int offset,
                int length,
                long position)
         throws FailureException
Lê uma sequência de bytes do arquivo.

Specified by:
read in interface RemoteFileChannel
Parameters:
target - O buffer.
offset - O deslocamento no buffer.
length - A quantidade máxima de bytes a serem lidos.
position - A posição do arquivo a partir da qual a leitura vai ser iniciada.
Returns:
A quantidade de bytes lidos.
Throws:
FailureException - Caso ocorra alguma falha no procedimento.

write

public int write(byte[] source)
          throws PermissionException,
                 FailureException,
                 FileLockedException
Escreve uma sequência de bytes no arquivo.

Specified by:
write in interface RemoteFileChannel
Parameters:
source - O buffer.
Returns:
A quantidade de bytes escritos.
Throws:
PermissionException - Caso o arquivo tenha sido aberto somente para leitura.
FailureException - Caso ocorra alguma falha no procedimento.
FileLockedException - Indica que o arquivo está reservado para outro usuário.

write

public int write(byte[] source,
                 long position)
          throws PermissionException,
                 FailureException,
                 FileLockedException
Escreve uma sequência de bytes no arquivo.

Specified by:
write in interface RemoteFileChannel
Parameters:
source - O buffer.
position - A posição do arquivo a partir da qual a escrita vai ser iniciada.
Returns:
A quantidade de bytes escritos.
Throws:
PermissionException - Caso o arquivo tenha sido aberto somente para leitura.
FailureException - Caso ocorra alguma falha no procedimento.
FileLockedException - Indica que o arquivo está reservado para outro usuário.

write

public int write(byte[] source,
                 int offset,
                 int length)
          throws PermissionException,
                 FailureException,
                 FileLockedException
Escreve uma sequência de bytes no arquivo.

Specified by:
write in interface RemoteFileChannel
Parameters:
source - O buffer.
offset - O deslocamento no buffer.
length - A quantidade máxima de bytes a serem escritos.
Returns:
A quantidade de bytes escritos.
Throws:
PermissionException - Caso o arquivo tenha sido aberto somente para leitura.
FailureException - Caso ocorra alguma falha no procedimento.
FileLockedException - Indica que o arquivo está reservado para outro usuário.

write

public int write(byte[] source,
                 int offset,
                 int length,
                 long position)
          throws PermissionException,
                 FailureException,
                 FileLockedException
Escreve uma sequência de bytes no arquivo.

Specified by:
write in interface RemoteFileChannel
Parameters:
source - O buffer.
offset - O deslocamento no buffer.
length - A quantidade máxima de bytes a serem escritos.
position - A posição do arquivo a partir da qual a escrita vai ser iniciada.
Returns:
A quantidade de bytes escritos.
Throws:
PermissionException - Caso o arquivo tenha sido aberto somente para leitura.
FailureException - Caso ocorra alguma falha no procedimento.
FileLockedException - Indica que o arquivo está reservado para outro usuário.

transferTo

public long transferTo(long position,
                       long count,
                       OutputStream outputStream)
                throws FailureException
Transfere os dados do arquivo para um fluxo de saída.

Specified by:
transferTo in interface RemoteFileChannel
Parameters:
position - A posição inicial a partir daqual o arquivo será lido.
count - A quantidade de bytes que serão transferidos.
outputStream - O fluxo de saída que receberá os dados do arquivo.
Returns:
A quantidade de bytes efetivamente transferidos.
Throws:
FailureException - Caso ocorra alguma falha no procedimento.

transferTo

public long transferTo(long position,
                       long count,
                       RemoteFileChannel target)
                throws FailureException,
                       PermissionException,
                       FileLockedException
Transfere os dados do arquivo para um outro arquivo remoto.

Specified by:
transferTo in interface RemoteFileChannel
Parameters:
position - A posição inicial a partir daqual o arquivo será lido.
count - A quantidade de bytes que serão transferidos.
target - O canal do arquivo que receberá os dados.
Returns:
A quantidade de bytes efetivamente transferidos.
Throws:
FailureException - Caso ocorra alguma falha no procedimento.
PermissionException - Caso o outro arquivo remoto tenha sido aberto somente para leitura.
FileLockedException - Caso o outro arquivo remoto esteja reservado para outro usuário.

transferFrom

public long transferFrom(InputStream source,
                         long position,
                         long count)
                  throws PermissionException,
                         FailureException,
                         FileLockedException
Transfere os dados de um fluxo de entrada para o arquivo.

Specified by:
transferFrom in interface RemoteFileChannel
Parameters:
source - O fluxo de entrada.
position - A posição inicial a partir daqual o arquivo será escrito.
count - A quantidade de bytes que serão transferidos.
Returns:
A quantidade de bytes efetivamente transferidos.
Throws:
PermissionException - Caso o arquivo tenha sido aberto somente para leitura.
FailureException - Caso ocorra alguma falha no procedimento.
FileLockedException - Indica que o arquivo está reservado para outro usuário.

transferFrom

public long transferFrom(RemoteFileChannel source,
                         long position,
                         long count)
                  throws PermissionException,
                         FailureException,
                         FileLockedException
Transfere os de um outro arquivo remoto para o arquivo.

Specified by:
transferFrom in interface RemoteFileChannel
Parameters:
source - O canal do arquivo de entrada.
position - A posição inicial a partir daqual o arquivo será escrito.
count - A quantidade de bytes que serão transferidos.
Returns:
A quantidade de bytes efetivamente transferidos.
Throws:
PermissionException - Caso o arquivo tenha sido aberto somente para leitura.
FailureException - Caso ocorra alguma falha no procedimento.
FileLockedException - Indica que o arquivo está reservado para outro usuário.

keepAlive

public void keepAlive()
               throws FailureException
Operação que faz um poll no servidor com o intuito de manter a conexao ativa

Specified by:
keepAlive in interface RemoteFileChannel
Throws:
FailureException

setBufferSize

public void setBufferSize(int bufferSize)
Parameters:
bufferSize - O tamanho do buffer em bytes.

getBufferSize

public int getBufferSize()
Returns:
O tamanho do ByteBuffer Utilizado


Copyright © 2018 Tecgraf/PUC-Rio. All rights reserved.