Skip to content
Snippets Groups Projects
Commit 8ae4498e authored by srsdanny's avatar srsdanny
Browse files

Locking kb. kész van. Tesztelni kell még.

parent 4645a0d8
No related branches found
No related tags found
No related merge requests found
...@@ -101,36 +101,46 @@ void CloudFileSystem::lock(FileDescriptor fileDescriptor) { ...@@ -101,36 +101,46 @@ void CloudFileSystem::lock(FileDescriptor fileDescriptor) {
string lockFileName(fileDescriptor.getFileID() + ".lck"); string lockFileName(fileDescriptor.getFileID() + ".lck");
for each (string cloudId in fileDescriptor.getUniqueClouds())
{
ofstream lockFileTmp(fragFolder + lockFileName, std::ios::binary); ofstream lockFileTmp(fragFolder + lockFileName, std::ios::binary);
// TODO // TODO
lockFileTmp << "Client ID comes here"; lockFileTmp << "Client ID comes here";
lockFileTmp.close(); lockFileTmp.close();
LockFile lockFile(cloudId, lockFileName);
//LockFile lockFile(fragment.getCloudId(), lockFileName); application.cal.upload(lockFile);
//application.cal.upload(lockFile); }
} }
void CloudFileSystem::unlock(FileDescriptor fileDescriptor) { void CloudFileSystem::unlock(FileDescriptor fileDescriptor) {
LOG_ENTER_EXIT; LOG_ENTER_EXIT;
//Get lockfile by some business logic for each (string cloudId in fileDescriptor.getUniqueClouds())
for each (Fragment fragment in fileDescriptor.getFragments())
{ {
LockFile lockFile(fragment.getCloudId(), fragment.getCloudFileID() + ".lck"); LockFile lockFile(cloudId, fileDescriptor);
application.cal.deleteFile(lockFile); application.cal.deleteFile(lockFile);
} }
} }
void CloudFileSystem::isLocked(FileDescriptor fileDescriptor) { bool CloudFileSystem::isLocked(FileDescriptor fileDescriptor) {
LOG_ENTER_EXIT; LOG_ENTER_EXIT;
//Get lockfile by some business logic bool isLockedResult = false;
LockFile lockFile("", "");
for each (string cloudId in fileDescriptor.getUniqueClouds())
{
LockFile lockFile(cloudId, fileDescriptor);
if (application.cal.checkExists(lockFile))
{
isLockedResult = true;
break;
}
}
//TODO: CloudAccessLayer needs a function to check if file exists return isLockedResult;
application.cal.download(lockFile);
} }
Distributor* CloudFileSystem::getDistributor() { Distributor* CloudFileSystem::getDistributor() {
......
...@@ -182,8 +182,9 @@ private: ...@@ -182,8 +182,9 @@ private:
/** /**
* Determines weather a file is locked * Determines weather a file is locked
* @param fileDescriptor descriptor of the file to be determined * @param fileDescriptor descriptor of the file to be determined
* @return true if any of the fragments are locked, false otherwise
*/ */
void isLocked(FileDescriptor fileDescriptor); bool isLocked(FileDescriptor fileDescriptor);
}; };
#endif //_CLOUDFILESYSTEM_H #endif //_CLOUDFILESYSTEM_H
\ No newline at end of file
...@@ -40,3 +40,16 @@ void FileDescriptor::addFragment(Fragment frag){ ...@@ -40,3 +40,16 @@ void FileDescriptor::addFragment(Fragment frag){
LOG_ENTER_EXIT; LOG_ENTER_EXIT;
fragments.push_back(frag); fragments.push_back(frag);
} }
std::set<std::string> FileDescriptor::getUniqueClouds()
{
set<string> clouds;
for each (Fragment fragment in getFragments())
{
clouds.insert(fragment.getCloudId());
}
return clouds;
}
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#include <string> #include <string>
#include <vector> #include <vector>
#include "Fragment.h" #include "Fragment.h"
#include <set>
using namespace std; using namespace std;
...@@ -63,6 +64,11 @@ public: ...@@ -63,6 +64,11 @@ public:
*/ */
void addFragment(Fragment frag); void addFragment(Fragment frag);
/**
* Returns the unique cloudIDs from the list of fragments.
* @return set of the unique cloudIDs
*/
std::set<std::string> getUniqueClouds();
}; };
#endif //_FILEDESCRIPTOR_H #endif //_FILEDESCRIPTOR_H
\ No newline at end of file
...@@ -6,3 +6,9 @@ ...@@ -6,3 +6,9 @@
*/ */
LockFile::LockFile(string _cloudID, string _cloudFileID) : CloudFile(_cloudID, _cloudFileID) { LOG_ENTER_EXIT; } LockFile::LockFile(string _cloudID, string _cloudFileID) : CloudFile(_cloudID, _cloudFileID) { LOG_ENTER_EXIT; }
LockFile::LockFile(string _cloudID, FileDescriptor fileDescriptor)
: CloudFile(_cloudID, fileDescriptor.getFileID() + ".lck")
{
LOG_ENTER_EXIT;
}
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#define _LOCKFILE_H #define _LOCKFILE_H
#include "CloudFile.h" #include "CloudFile.h"
#include "FileDescriptor.h"
/** /**
* LockFile class * LockFile class
...@@ -20,6 +21,13 @@ public: ...@@ -20,6 +21,13 @@ public:
* @param _cloudFileID path on cloud * @param _cloudFileID path on cloud
*/ */
LockFile(string _cloudID, string _cloudFileID); LockFile(string _cloudID, string _cloudFileID);
/**
* Constructor for LockFile. Generates fileID from fileDescriptor's ID.
* @param _cloudID ID of its cloud
* @param fileDescriptor FileDescriptor describing the file to generate a LockFile for
*/
LockFile(string _cloudID, FileDescriptor fileDescriptor);
}; };
#endif //_LOCKFILE_H #endif //_LOCKFILE_H
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment