// Copyright 2012 Citrix Systems, Inc. Licensed under the
// Apache License, Version 2.0 (the "License"); you may not use this
// file except in compliance with the License. Citrix Systems, Inc.
// reserves all rights not expressly granted by 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.
//
// Automatically generated by addcopyright.py at 04/03/2012
package com.cloud.storage;
import java.io.File;
import java.io.IOException;
import com.cloud.utils.component.Manager;
/**
* StorageLayer is an independence layer for
*
* 1. Proper synchronization between threads.
*
*
*/
public interface StorageLayer extends Manager {
public final static String InstanceConfigKey = "storage.layer.instance";
public final static String ClassConfigKey = "storage.layer.implementation";
/**
* @param path path to the file to get the size.
* @return size of the file.
*/
long getSize(String path);
/**
* Is this path a directory?
* @param path path to check.
* @return true if it is a directory; false otherwise.
*/
boolean isDirectory(String path);
/**
* Is this path a file?
* @param path path to check.
* @return true if it is a file; false otherwise.
*/
boolean isFile(String path);
/**
* creates the directory. All parent directories have to already exists.
* @param path path to make.
* @return true if created; false if not.
*/
boolean mkdir(String path);
/**
* Creates the entire path.
* @param path path to create.
* @return true if created; false if not.
*/
boolean mkdirs(String path);
/**
* Does this path exists?
* @param path directory or file to check if it exists.
* @return true if exists; false if not.
*/
boolean exists(String path);
/**
* list all the files in a certain path.
* @param path directory that the file exists in.
* @return list of files that exists under this path.
*/
String[] listFiles(String path);
/**
* Get the total disk size in bytes.
* @param path path
* @return disk size if path given is a disk; -1 if not.
*/
long getTotalSpace(String path);
/**
* Get the total available disk size in bytes.
* @param path path to the disk.
* @return disk size if path given is a disk; -1 if not.
*/
long getUsedSpace(String path);
/**
* Get the total available disk size in bytes.
* @param path path to the disk.
* @return disk size if path given is a disk; -1 if not.
*/
long getUsableSpace(String path);
/**
* delete the path
* @param path to delete.
* @return true if deleted; false if not.
*/
boolean delete(String path);
/**
* creates a file on this path.
* @param path directory to create the file in.
* @param filename file to create.
* @return true if created; false if not.
* @throws IOException if create has problems.
*/
boolean create(String path, String filename) throws IOException;
/**
* clean up the path. This method will delete the parent paths if the parent
* paths do not contain children. If the original path cannot be deleted,
* this method returns false. If the parent cannot be deleted but does not
* have any children, this method throws IOException.
* @param path path to be cleaned up.
* @param rootPath delete up to this path.
* @return true if the path is deleted and false if it is not.
* @throws IOException if the parent has no children but delete failed.
*/
boolean cleanup(String path, String rootPath) throws IOException;
/**
* Retrieves the actual file object.
* @param path path to the file.
* @return File object representing the file.
*/
File getFile(String path);
/**
* Sets permissions for a file to be world readable and writeable
* @param file
* @return true if the file was set to be both world readable and writeable
*/
boolean setWorldReadableAndWriteable(File file);
boolean deleteDir(String dir);
}