FileStorage

public interface FileStorage extends Resource

An interface which defines the desired functionality of a storage system in a Data Cloud that performs operations on a file system, such as file inclusion, exclusion and renaming. Classes that implement this interface should simulate the characteristics of different storage systems by setting the capacity of the storage and the maximum transfer rate. The transfer rate defines the time required to execute some common operations on the storage, e.g. storing a file, getting a file and deleting a file.

Author:Uros Cibej, Anthony Sulistio, Manoel Campos da Silva Filho

Fields

FILE_NOT_FOUND

int FILE_NOT_FOUND

Methods

addFile

double addFile(File file)

Adds a file to the storage. The time taken (in seconds) for adding the specified file can also be found using File.getTransactionTime().

Parameters:
  • file – the file to be added
Returns:

the time taken (in seconds) for adding the specified file or zero if there isn’t available storage space.

addFile

double addFile(List<File> list)

Adds a set of files to the storage. The time taken (in seconds) for adding each file can also be found using File.getTransactionTime().

Parameters:
  • list – the files to be added
Returns:

the time taken (in seconds) for adding the specified file or zero if the file is invalid or there isn’t available storage space.

addReservedFile

double addReservedFile(File file)

Adds a file for which the space has already been reserved. The time taken (in seconds) for adding the specified file can also be found using File.getTransactionTime().

Parameters:
  • file – the file to be added
Returns:

the time (in seconds) required to add the file

contains

boolean contains(String fileName)

Checks whether a file exists in the storage or not.

Parameters:
  • fileName – the name of the file we are looking for
Returns:

true if the file is in the storage, false otherwise

contains

boolean contains(File file)

Checks whether a file is stored in the storage or not.

Parameters:
  • file – the file we are looking for
Returns:

true if the file is in the storage, false otherwise

deleteFile

File deleteFile(String fileName)

Removes a file from the storage. The time taken (in seconds) for deleting the specified file can be found using File.getTransactionTime().

Parameters:
  • fileName – the name of the file to be removed
Returns:

the deleted file.

deleteFile

double deleteFile(File file)

Removes a file from the storage. The time taken (in seconds) for deleting the specified file can also be found using File.getTransactionTime().

Parameters:
  • file – the file to be removed
Returns:

the time taken (in seconds) for deleting the specified file

getFile

File getFile(String fileName)

Gets the file with the specified name. The time taken (in seconds) for getting the specified file can also be found using File.getTransactionTime().

Parameters:
  • fileName – the name of the needed file
Returns:

the file with the specified filename; null if not found

getFileList

List<File> getFileList()

Gets a read-only list with all files stored on the device.

Returns:a List of files

getFileNameList

List<String> getFileNameList()

Gets a read-only list with the names of all files stored on the device.

Returns:a List of file names

getLatency

double getLatency()

Gets the latency of this hard drive in seconds.

Returns:the latency in seconds

getMaxTransferRate

double getMaxTransferRate()

Gets the maximum local transfer rate of the storage in Mbits/sec, i.e., the physical device reading speed.

Returns:the maximum transfer rate in Mbits/sec

See also: .setMaxTransferRate(double)

getName

String getName()
Returns:the name of the storage device

getNumStoredFile

int getNumStoredFile()

Gets the number of files stored on this device.

Returns:the number of stored files

getTransferTime

double getTransferTime(String fileName)

Gets the transfer time of a given file.

Parameters:
  • fileName – the name of the file to compute the transfer time (where its size is defined in MByte)
Returns:

the transfer time in seconds or FILE_NOT_FOUND if the file was not found in this storage device

getTransferTime

double getTransferTime(File file)

Gets the transfer time of a given file.

Parameters:
  • file – the file to compute the transfer time (where its size is defined in MByte)
Returns:

the transfer time in seconds

getTransferTime

double getTransferTime(int fileSize)

Gets the transfer time of a given file.

Parameters:
  • fileSize – the size of the file to compute the transfer time (in MByte)
Returns:

the transfer time in seconds

hasFile

boolean hasFile(String fileName)

Checks if the storage device has a specific file.

Parameters:
  • fileName – the name of the file to check if it’s contained in this storage device.
Returns:

true if the storage device has the file, false otherwise.

hasPotentialAvailableSpace

boolean hasPotentialAvailableSpace(int fileSize)

Checks whether there is enough space on the storage for a certain file

Parameters:
  • fileSize – size of the file intended to be stored on the device (in MByte)
Returns:

true if enough space available, false otherwise

renameFile

boolean renameFile(File file, String newName)

Renames a file on the storage. The time taken (in seconds) for renaming the specified file can also be found using File.getTransactionTime().

Parameters:
  • file – the file we would like to rename
  • newName – the new name of the file
Returns:

true if the renaming succeeded, false otherwise

reserveSpace

boolean reserveSpace(int fileSize)

Makes reservation of space on the storage to store a file.

Parameters:
  • fileSize – the size to be reserved (in MByte)
Returns:

true if reservation succeeded, false otherwise

setLatency

void setLatency(double latency)

Sets the latency of this hard drive in seconds.

Parameters:
  • latency – the new latency in seconds
Throws:

setMaxTransferRate

void setMaxTransferRate(double maxTransferRate)

Sets the maximum transfer rate of this storage system in Mbits/sec, i.e., the physical device reading speed.

Despite disk transfer rate is usually defined in MBytes/sec, it’s being used Mbits/sec everywhere to avoid confusions, since Host, Vm, Switch and SanStorage use such a data unit.

Parameters:
  • maxTransferRate – the maximum transfer rate in Mbits/sec
Throws: