diff --git a/program/Source/app/Application.cpp b/program/Source/app/Application.cpp index 3f2e40445dfcd48616c5572c20ac4f41c8afee96..711abfb890a763bf486a3e1a9a42a86c5467d325 100644 --- a/program/Source/app/Application.cpp +++ b/program/Source/app/Application.cpp @@ -40,6 +40,18 @@ int main(int argc, char **argv) { //application.ui = app::UI(); application.ui.app = &application; + string dataFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\data\\"; + string fragFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\temp\\"; + string cloudFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\cloud\\"; + + application.cfs.getEncoder()->setFolders(dataFolder,fragFolder); + application.cfs.getDecoder()->setFolders(dataFolder,fragFolder); + application.cfs.setFolders(fragFolder); + + for (auto ca : application.cm.getCloudList()){ + ca->setFolders(cloudFolder, fragFolder); + } + Application::DeleteThisUglyWorkaround_App_Instance = &application; if (argc > 1 && (Application::SERVER.compare(argv[1]) == 0)) diff --git a/program/Source/cloud/CloudAdapter.h b/program/Source/cloud/CloudAdapter.h index 23b5c0f5c9c085d0d8d862c176db27a4b879426a..c37715002300606400ccafbf7e3567aab891f775 100644 --- a/program/Source/cloud/CloudAdapter.h +++ b/program/Source/cloud/CloudAdapter.h @@ -16,9 +16,17 @@ * we only need to implement this each time */ class CloudAdapter { +protected: + std::string fragFolder; + std::string cloudFolder; public: std::string cloudID; + void setFolders(std::string _cloudFolder, std::string _fragFolder){ + cloudFolder = _cloudFolder; + fragFolder = _fragFolder; + } + /** * CloudApater constructor * @param _cloudID the ID of the cloud that is implemented diff --git a/program/Source/cloud/DropboxAdapter.h b/program/Source/cloud/DropboxAdapter.h index 498a151c58e04f296d2bf58e8c8bae8ff2907e8b..93b3bbb112a222d67eb308267b2ea4b6776ff5c3 100644 --- a/program/Source/cloud/DropboxAdapter.h +++ b/program/Source/cloud/DropboxAdapter.h @@ -12,8 +12,6 @@ * DropboxAdapter class */ class DropboxAdapter : public CloudAdapter { - const std::string fragFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\temp\\"; - const std::string contentHost = "content.dropboxapi.com"; const std::string apiHost = "api.dropboxapi.com"; @@ -24,7 +22,7 @@ class DropboxAdapter : public CloudAdapter { const std::string tokenApiPath = "/1/oauth2/token"; - const std::string appKey = "vmwjix7pf6y3hq6"; + const std::string appKey = "vmwjix7pf6y3hq6"; const std::string appSecret = "t0tktamnuj2y6bd"; const std::string authCodeType = "authorization_code"; diff --git a/program/Source/cloud/FTPAdapter.cpp b/program/Source/cloud/FTPAdapter.cpp index c932a6ffc429dcacc70e0ba64c3648add3233e68..91df91502d80c2ffd8cfa6e51eb9c4401691a6d3 100644 --- a/program/Source/cloud/FTPAdapter.cpp +++ b/program/Source/cloud/FTPAdapter.cpp @@ -15,7 +15,6 @@ using namespace Poco; using namespace boost::filesystem; using namespace std; -const string FTPAdapter::fragFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\temp\\"; const string FTPAdapter::USERNAME = "b18_16883957"; const string FTPAdapter::PASSWORD = "lolwutdoge"; const string FTPAdapter::HOST = "ftp.byethost18.com"; diff --git a/program/Source/cloud/FTPAdapter.h b/program/Source/cloud/FTPAdapter.h index 7b95c4295257ea7e7a0137901634805f4eb2f321..8752925406440cdb059e643296a136b2a41e4e44 100644 --- a/program/Source/cloud/FTPAdapter.h +++ b/program/Source/cloud/FTPAdapter.h @@ -10,7 +10,6 @@ * DropboxAdapter class */ class FTPAdapter : public CloudAdapter { - static const std::string fragFolder; static const std::string USERNAME; static const std::string PASSWORD; static const std::string HOST; diff --git a/program/Source/cloud/LocalCloudAdapter.h b/program/Source/cloud/LocalCloudAdapter.h index dc87b49cd3a1dc3e2906ba6f0fe153322efec39e..97d20c2172bffc2fe9a92a1432d8c982793dae24 100644 --- a/program/Source/cloud/LocalCloudAdapter.h +++ b/program/Source/cloud/LocalCloudAdapter.h @@ -13,10 +13,6 @@ * while real clouds are not used */ class LocalCloudAdapter : public CloudAdapter { -private: - std::string sourceFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\data\\"; - std::string fragFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\temp\\"; - std::string cloudFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\cloud\\"; public: LocalCloudAdapter(std::string _cloudID = "localAdapter"); diff --git a/program/Source/dataAccess/CloudFileSystem.cpp b/program/Source/dataAccess/CloudFileSystem.cpp index 419e2f0dae7faa2e61007f345640aa01bda2ae06..59c3b8f939b42c12d1dbe8775d0535f4616bbbbe 100644 --- a/program/Source/dataAccess/CloudFileSystem.cpp +++ b/program/Source/dataAccess/CloudFileSystem.cpp @@ -24,13 +24,31 @@ CloudFileSystem::CloudFileSystem(Application &application) : { cfl.setPersPath("store.dat"); cfl.load(); - + encoder = new Encoder(); + decoder = new Decoder(); } CloudFileSystem::~CloudFileSystem(){ delete this->cache; + delete encoder; + delete decoder; +} + +Encoder* CloudFileSystem::getEncoder(){ + return encoder; } + +Decoder* CloudFileSystem::getDecoder(){ + return decoder; +} + +void CloudFileSystem::setFolders(string _fragFolder){ + fragFolder = _fragFolder; +} + +string CloudFileSystem::fragFolder = ""; + // Not working as we planned, maybe should be rethinked void CloudFileSystem::setComputeOnPi(bool computeOnPi){ LOG_ENTER_EXIT; diff --git a/program/Source/dataAccess/CloudFileSystem.h b/program/Source/dataAccess/CloudFileSystem.h index bb410b0c40630b9a68fd485dfe5d1165f902a44c..be828a811578924931a3efaf7d2fbacdf8860dfc 100644 --- a/program/Source/dataAccess/CloudFileSystem.h +++ b/program/Source/dataAccess/CloudFileSystem.h @@ -15,6 +15,8 @@ #include "../networking/HomeNetworkCommunications.h" #include "Cache.h" #include "CloudFileList.h" +#include "../dataAccess/Encoder.h" +#include "../dataAccess/Decoder.h" class Application; @@ -25,7 +27,7 @@ class Application; * It handles mutexes, cache usage and directories. */ class CloudFileSystem { - std::string fragFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\temp\\"; + static std::string fragFolder; /** * Indicates where is the process running @@ -55,8 +57,16 @@ class CloudFileSystem { Cache *cache; CloudFileList cfl; + + Encoder* encoder; + Decoder* decoder; public: + Encoder* getEncoder(); + Decoder* getDecoder(); + + void setFolders(std::string _fragFolder); + static CloudFileSystem& getInstance(); /*{ static CloudFileSystem instance; diff --git a/program/Source/dataAccess/Decoder.cpp b/program/Source/dataAccess/Decoder.cpp index 27ecadd5d27e7cfbf915ddc3eaf6a126a4995e9c..3dffc8e68d1e2c61c68fd65ff1f0a1a68e7b4e45 100644 --- a/program/Source/dataAccess/Decoder.cpp +++ b/program/Source/dataAccess/Decoder.cpp @@ -14,10 +14,20 @@ using namespace std; * Decoder implementation */ +void Decoder::setFolders(string _dataFolder, string _fragFolder){ + dataFolder = _dataFolder; + fragFolder = _fragFolder; +} + +string Decoder::dataFolder = ""; +string Decoder::fragFolder = ""; + string Decoder::decode(FileDescriptor* fileDescriptor) { - string dataFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\data\\"; - string fragFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\temp\\"; + if (dataFolder == "" || fragFolder == "") { + cout << "Error: folders not set." << endl; + return NULL; + } LOG_ENTER_EXIT; if (fileDescriptor == nullptr) diff --git a/program/Source/dataAccess/Decoder.h b/program/Source/dataAccess/Decoder.h index cd4f0388d537c92a43f83d0bb0232dbeefe34fea..712a72ac5e2497ac96686fe051bd2ab955977d7b 100644 --- a/program/Source/dataAccess/Decoder.h +++ b/program/Source/dataAccess/Decoder.h @@ -9,8 +9,11 @@ * it uses an external library */ class Decoder { -public: - + static std::string dataFolder; + static std::string fragFolder; +public: + void setFolders(std::string _dataFolder, std::string _fragFolder); + /** * decodes the fragments to a file * @param fileDescriptor descriptor of the file to decode diff --git a/program/Source/dataAccess/Encoder.cpp b/program/Source/dataAccess/Encoder.cpp index c942ba92b9f92e652e408fc2be75fe339332f222..2907d1bfe97d3fce995f263382767f27e34ba8b2 100644 --- a/program/Source/dataAccess/Encoder.cpp +++ b/program/Source/dataAccess/Encoder.cpp @@ -17,10 +17,20 @@ using namespace boost; using namespace filesystem; using namespace std; +void Encoder::setFolders(string _dataFolder, string _fragFolder){ + dataFolder = _dataFolder; + fragFolder = _fragFolder; +} + +string Encoder::dataFolder = ""; +string Encoder::fragFolder = ""; + FileDescriptor* Encoder::encode(string localFileID, string destinationFileID) { LOG_ENTER_EXIT; - string dataFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\data\\"; - string fragFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\temp\\"; + if (dataFolder == "" || fragFolder == "") { + cout << "Error: folders not set." << endl; + return NULL; + } string encode_filename = dataFolder + localFileID; diff --git a/program/Source/dataAccess/Encoder.h b/program/Source/dataAccess/Encoder.h index 8c5a4dda3bb85f4c8ac8e45cf3692ee5502f3567..d86253091300505cec6152c9964fd67f2a35aca5 100644 --- a/program/Source/dataAccess/Encoder.h +++ b/program/Source/dataAccess/Encoder.h @@ -10,8 +10,11 @@ * it uses an external library */ class Encoder { -public: - + static std::string dataFolder; + static std::string fragFolder; +public: + void setFolders(std::string _dataFolder, std::string _fragFolder); + /** * encodes the file to fragments * @param localFileID id of the file to encode