NCCLOUD  0.1
storage.h
Go to the documentation of this file.
00001 
00007 /* ===================================================================
00008 Copyright (c) 2013, Henry C. H. Chen
00009 All rights reserved.
00010 
00011 Redistribution and use in source and binary forms, with or without
00012 modification, are permitted provided that the following conditions are
00013 met:
00014 
00015   - Redistributions of source code must retain the above copyright
00016     notice, this list of conditions and the following disclaimer.
00017 
00018   - Redistributions in binary form must reproduce the above copyright
00019     notice, this list of conditions and the following disclaimer in
00020     the documentation and/or other materials provided with the
00021     distribution.
00022 
00023   - Neither the name of the Chinese University of Hong Kong nor the
00024     names of its contributors may be used to endorse or promote
00025     products derived from this software without specific prior written
00026     permission.
00027 
00028 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
00029 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00030 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
00031 A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT
00032 HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
00033 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
00034 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
00035 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
00036 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00037 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
00038 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00039 =================================================================== */
00040 
00041 
00042 #ifndef NCCLOUD_STORAGE_H
00043 #define NCCLOUD_STORAGE_H
00044 
00045 #include <map>
00046 #include <string>
00047 #include <vector>
00048 
00049 
00051 class Storage
00052 {
00053 public:
00057   static Storage *use_storage(int type);
00058 
00059 
00063   virtual int init(std::map<std::string, std::string> &storage_param) = 0;
00064 
00065 
00071   virtual int store_chunk(std::string &srcdir, std::string &filename,
00072                           int chunk_index) = 0;
00073 
00074 
00076   virtual int store_chunks(std::string &srcdir, std::string &filename,
00077                            std::vector<int> &chunk_indices) = 0;
00078 
00079 
00084   virtual int store_metadata(std::string &srcdir, std::string &filename) = 0;
00085 
00086 
00088   virtual int store_metadata_and_chunks(std::string &srcdir, std::string &filename,
00089                                         std::vector<int> &chunk_indices) = 0;
00090 
00091 
00097   virtual int get_chunk(std::string &dstdir, std::string &filename,
00098                         int chunk_index) = 0;
00099 
00100 
00102   virtual int get_chunks(std::string &dstdir, std::string &filename,
00103                          std::vector<int> &chunk_indices) = 0;
00104 
00105 
00110   virtual int get_metadata(std::string &dstdir, std::string &filename) = 0;
00111 
00112 
00114   virtual int get_metadata_and_chunks(std::string &dstdir, std::string &filename,
00115                                       std::vector<int> &chunk_indices) = 0;
00116 
00117 
00122   virtual int delete_chunk(std::string &filename, int chunk_index) = 0;
00123 
00124 
00126   virtual int delete_chunks(std::string &filename, std::vector<int> &chunk_indices) = 0;
00127 
00128 
00132   virtual int delete_metadata(std::string &filename) = 0;
00133 
00134 
00136   virtual int delete_metadata_and_chunks(std::string &filename,
00137                                          std::vector<int> &chunk_indices) = 0;
00138 
00139 
00142   virtual int list_files(void) = 0;
00143 
00144 
00147   virtual int check_health(void) = 0;
00148 };
00149 
00150 #endif  /* NCCLOUD_STORAGE_H */
00151 
 All Data Structures Files Functions Variables Enumerations Enumerator Defines