FilesystemInstance::~FilesystemInstance() {
ScopeLogger();
- worker.stop();
+ global_worker.stop();
+ file_worker.stop();
FilesystemManager::GetInstance().StopListening();
FilesystemManager::GetInstance().RemoveListener();
}
};
FilesystemManager& fsm = FilesystemManager::GetInstance();
- common::TaskQueue::GetInstance().Queue(
+ global_worker.add_job(
std::bind(&FilesystemManager::Rename, &fsm, oldPath, newPath, onSuccess, onError));
}
};
FilesystemManager& fsm = FilesystemManager::GetInstance();
- common::TaskQueue::GetInstance().Async(
+ global_worker.add_job(
std::bind(&FilesystemManager::StatPath, &fsm, location, onSuccess, onError));
}
FilesystemManager::GetInstance().MakeDirectory(location, onResult);
};
- common::TaskQueue::GetInstance().Async(onAction);
+ global_worker.add_job(onAction);
}
void FilesystemInstance::FileSystemManagerMakeDirectorySync(const picojson::value& args,
};
FilesystemManager& fm = FilesystemManager::GetInstance();
- common::TaskQueue::GetInstance().Async(
- std::bind(&FilesystemManager::ReadDir, &fm, pathToDir, onSuccess, onError));
+ global_worker.add_job(std::bind(&FilesystemManager::ReadDir, &fm, pathToDir, onSuccess, onError));
}
void FilesystemInstance::FileUnlinkFile(const picojson::value& args, picojson::object& out) {
};
FilesystemManager& fm = FilesystemManager::GetInstance();
- common::TaskQueue::GetInstance().Async(
+ global_worker.add_job(
std::bind(&FilesystemManager::UnlinkFile, &fm, pathToFile, onSuccess, onError));
}
};
FilesystemManager& fm = FilesystemManager::GetInstance();
- common::TaskQueue::GetInstance().Queue(
+ global_worker.add_job(
std::bind(&FilesystemManager::RemoveDirectory, &fm, pathToDelete, onSuccess, onError));
}
};
FilesystemManager& fm = FilesystemManager::GetInstance();
- common::TaskQueue::GetInstance().Queue(std::bind(&FilesystemManager::CopyTo, &fm, originPath,
- destinationPath, overwrite, onSuccess, onError));
+ global_worker.add_job(std::bind(&FilesystemManager::CopyTo, &fm, originPath, destinationPath,
+ overwrite, onSuccess, onError));
}
void FilesystemInstance::PrepareError(const FilesystemError& error, picojson::object& out) {
bool make_parents = args.get("makeParents").get<bool>();
CHECK_STORAGE_ACCESS(path, &out);
- common::TaskQueue::GetInstance().Async([this, callback_id, path, make_parents] {
+ global_worker.add_job([this, callback_id, path, make_parents] {
picojson::value response = picojson::value(picojson::object());
picojson::object& obj = response.get<picojson::object>();
obj["callbackId"] = picojson::value(callback_id);
const std::string& path = args.get("path").get<std::string>();
CHECK_STORAGE_ACCESS(path, &out);
- common::TaskQueue::GetInstance().Async([this, callback_id, path] {
+ global_worker.add_job([this, callback_id, path] {
picojson::value response = picojson::value(picojson::object());
picojson::object& obj = response.get<picojson::object>();
obj["callbackId"] = picojson::value(callback_id);
CHECK_STORAGE_ACCESS(path, &out);
bool recursive = args.get("recursive").get<bool>();
- common::TaskQueue::GetInstance().Queue([this, callback_id, path, recursive] {
+ global_worker.add_job([this, callback_id, path, recursive] {
ScopeLogger();
picojson::value response = picojson::value(picojson::object());
picojson::object& obj = response.get<picojson::object>();
CHECK_STORAGE_ACCESS(destination_path, &out);
bool overwrite = args.get("overwrite").get<bool>();
- common::TaskQueue::GetInstance().Queue([this, callback_id, path, destination_path, overwrite] {
+ global_worker.add_job([this, callback_id, path, destination_path, overwrite] {
picojson::value response = picojson::value(picojson::object());
picojson::object& obj = response.get<picojson::object>();
obj["callbackId"] = picojson::value(callback_id);
double callback_id = args.get("callbackId").get<double>();
bool overwrite = args.get("overwrite").get<bool>();
- common::TaskQueue::GetInstance().Queue([this, callback_id, path, destination_path, overwrite] {
+ global_worker.add_job([this, callback_id, path, destination_path, overwrite] {
ScopeLogger();
picojson::value response = picojson::value(picojson::object());
picojson::object& obj = response.get<picojson::object>();
double callback_id = args.get("callbackId").get<double>();
bool overwrite = args.get("overwrite").get<bool>();
- common::TaskQueue::GetInstance().Queue([this, callback_id, path, destination_path, overwrite] {
+ global_worker.add_job([this, callback_id, path, destination_path, overwrite] {
ScopeLogger();
picojson::value response = picojson::value(picojson::object());
picojson::object& obj = response.get<picojson::object>();
CHECK_STORAGE_ACCESS(destination_path, &out);
bool overwrite = args.get("overwrite").get<bool>();
- common::TaskQueue::GetInstance().Queue([this, callback_id, path, destination_path, overwrite] {
+ global_worker.add_job([this, callback_id, path, destination_path, overwrite] {
picojson::value response = picojson::value(picojson::object());
picojson::object& obj = response.get<picojson::object>();
obj["callbackId"] = picojson::value(callback_id);
double callback_id = args.get("callbackId").get<double>();
const std::string& new_name = args.get("newName").get<std::string>();
- common::TaskQueue::GetInstance().Async([this, callback_id, new_name, path] {
+ global_worker.add_job([this, callback_id, new_name, path] {
ScopeLogger();
picojson::value response = picojson::value(picojson::object());
picojson::object& obj = response.get<picojson::object>();
const picojson::object& filter = args.get("filter").get<picojson::object>();
CHECK_STORAGE_ACCESS(path, &out);
- common::TaskQueue::GetInstance().Async([this, callback_id, path, filter] {
+ global_worker.add_job([this, callback_id, path, filter] {
ScopeLogger();
picojson::value response = picojson::value(picojson::object());
picojson::object& obj = response.get<picojson::object>();
} else {
// Async logic
double callback_id = args.get("callbackId").get<double>();
- this->worker.add_job([this, callback_id, logic] {
+ this->file_worker.add_job([this, callback_id, logic] {
picojson::value response = picojson::value(picojson::object());
picojson::object& async_out = response.get<picojson::object>();
async_out["callbackId"] = picojson::value(callback_id);
} else {
// Async logic
double callback_id = args.get("callbackId").get<double>();
- this->worker.add_job([this, callback_id, logic] {
+ this->file_worker.add_job([this, callback_id, logic] {
picojson::value response = picojson::value(picojson::object());
picojson::object& async_out = response.get<picojson::object>();
async_out["callbackId"] = picojson::value(callback_id);
} else {
// Async logic
double callback_id = args.get("callbackId").get<double>();
- this->worker.add_job([this, callback_id, logic] {
+ this->file_worker.add_job([this, callback_id, logic] {
picojson::value response = picojson::value(picojson::object());
picojson::object& async_out = response.get<picojson::object>();
async_out["callbackId"] = picojson::value(callback_id);
} else {
// Async logic
double callback_id = args.get("callbackId").get<double>();
- this->worker.add_job([this, callback_id, logic] {
+ this->file_worker.add_job([this, callback_id, logic] {
picojson::value response = picojson::value(picojson::object());
picojson::object& async_out = response.get<picojson::object>();
async_out["callbackId"] = picojson::value(callback_id);
} else {
// Async logic
double callback_id = args.get("callbackId").get<double>();
- this->worker.add_job([this, callback_id, logic] {
+ this->file_worker.add_job([this, callback_id, logic] {
picojson::value response = picojson::value(picojson::object());
picojson::object& async_out = response.get<picojson::object>();
async_out["callbackId"] = picojson::value(callback_id);
} else {
// Async logic
double callback_id = args.get("callbackId").get<double>();
- this->worker.add_job([this, callback_id, logic] {
+ this->file_worker.add_job([this, callback_id, logic] {
picojson::value response = picojson::value(picojson::object());
picojson::object& async_out = response.get<picojson::object>();
async_out["callbackId"] = picojson::value(callback_id);
} else {
// Async logic
double callback_id = args.get("callbackId").get<double>();
- this->worker.add_job([this, callback_id, logic] {
+ this->file_worker.add_job([this, callback_id, logic] {
picojson::value response = picojson::value(picojson::object());
picojson::object& async_out = response.get<picojson::object>();
async_out["callbackId"] = picojson::value(callback_id);
bool done = false;
std::mutex mutex;
std::condition_variable conditional_variable;
- // adding empty job to worker's queue, in order to wait for all jobs to be done before closing
- // FILE*
- this->worker.add_job([] {},
- [&conditional_variable, &mutex, &ready, &done, logic, &out] {
- // wait for close
- std::unique_lock<std::mutex> lock(mutex);
- conditional_variable.wait(lock, [&ready] { return ready; });
-
- logic(out);
- done = true;
- conditional_variable.notify_one();
- });
+ // adding empty job to file_worker's queue, in order to wait for all jobs to
+ // be done before closing FILE*
+ this->file_worker.add_job([] {},
+ [&conditional_variable, &mutex, &ready, &done, logic, &out] {
+ // wait for close
+ std::unique_lock<std::mutex> lock(mutex);
+ conditional_variable.wait(lock, [&ready] { return ready; });
+
+ logic(out);
+ done = true;
+ conditional_variable.notify_one();
+ });
{
// let know that close is ready
conditional_variable.notify_one();
{
- // wait for worker
+ // wait for file_worker
std::unique_lock<std::mutex> lock(mutex);
conditional_variable.wait(lock, [&done] { return done; });
}
} else {
// Async logic
double callback_id = args.get("callbackId").get<double>();
- this->worker.add_job([this, callback_id, logic] {
+ this->file_worker.add_job([this, callback_id, logic] {
picojson::value response = picojson::value(picojson::object());
picojson::object& async_out = response.get<picojson::object>();
async_out["callbackId"] = picojson::value(callback_id);