aboutsummaryrefslogtreecommitdiff
path: root/backends/cloud
diff options
context:
space:
mode:
authorAlexander Tkachev2016-05-11 20:24:53 +0600
committerAlexander Tkachev2016-08-24 16:05:07 +0600
commitca2eeb221455e54505aaef7039cfc0b01b807179 (patch)
tree9e73268cc9a8a5a1ad805b4107d06e2e0b08cc29 /backends/cloud
parent7446ffd73bd184610d550a354a8e252b0b7f334d (diff)
downloadscummvm-rg350-ca2eeb221455e54505aaef7039cfc0b01b807179.tar.gz
scummvm-rg350-ca2eeb221455e54505aaef7039cfc0b01b807179.tar.bz2
scummvm-rg350-ca2eeb221455e54505aaef7039cfc0b01b807179.zip
CLOUD: Add Cloud::Manager and Cloud::Storage
This commit introduces Common::CloudManager, which can be accessed from OSystem. The backend for this manager is Cloud::Manager (defined in backends/cloud/manager.h). It should load all users storages from configs and provide access to current Storage instance. For now it just creates a new one. Cloud::Storage (backends/cloud/storage.h) provides an API to interact with cloud storage, for example, create new directory or sync files. Right now it's not ready and has only two dummy methods: listDirectory() and syncSaves(). There is Cloud::Dropbox::DropboxStorage backend (backends/cloud/dropbox/dropboxstorage.h) for Cloud::Storage. Right now it implements both listDirectory() and syncSaves() with starting timer task and handling it by printing out some JSON examples.
Diffstat (limited to 'backends/cloud')
-rw-r--r--backends/cloud/dropbox/dropboxstorage.cpp (renamed from backends/cloud/cloudthread.cpp)26
-rw-r--r--backends/cloud/dropbox/dropboxstorage.h45
-rw-r--r--backends/cloud/manager.cpp41
-rw-r--r--backends/cloud/manager.h (renamed from backends/cloud/cloudthread.h)23
-rw-r--r--backends/cloud/storage.cpp49
-rw-r--r--backends/cloud/storage.h61
6 files changed, 217 insertions, 28 deletions
diff --git a/backends/cloud/cloudthread.cpp b/backends/cloud/dropbox/dropboxstorage.cpp
index 813354f43f..b841575bf6 100644
--- a/backends/cloud/cloudthread.cpp
+++ b/backends/cloud/dropbox/dropboxstorage.cpp
@@ -20,22 +20,17 @@
*
*/
-#include "cloudthread.h"
+#include "backends/cloud/dropbox/dropboxstorage.h"
#include "common/debug.h"
#include "common/json.h"
-#include "common/system.h"
-#include "common/timer.h"
void example1();
void example2();
void example3();
-void cloudThread(void *thread) {
- CloudThread *cloudThread = (CloudThread *)thread;
- cloudThread->handler();
-};
+namespace Cloud { namespace Dropbox {
-void CloudThread::handler() {
+void DropboxStorage::handler() {
if (_firstTime) {
_firstTime = false;
@@ -45,21 +40,16 @@ void CloudThread::handler() {
} else { }
}
-void CloudThread::setTimeout(int interval) {
- Common::TimerManager *manager = g_system->getTimerManager();
- if (!manager->installTimerProc(cloudThread, interval, this, "Cloud Thread"))
- warning("Failed to create cloud thread");
-}
-
-void CloudThread::unsetTimeout() {
- Common::TimerManager *manager = g_system->getTimerManager();
- manager->removeTimerProc(cloudThread);
+void DropboxStorage::listDirectory(Common::String path) {
+ setTimeout(1000000); //in one second
}
-void CloudThread::start() {
+void DropboxStorage::syncSaves() {
setTimeout(1000000); //in one second
}
+} } //end of namespace Cloud::Dropbox
+
/// SimpleJSON examples:
using Common::JSON;
diff --git a/backends/cloud/dropbox/dropboxstorage.h b/backends/cloud/dropbox/dropboxstorage.h
new file mode 100644
index 0000000000..43ed9dcbee
--- /dev/null
+++ b/backends/cloud/dropbox/dropboxstorage.h
@@ -0,0 +1,45 @@
+/* ScummVM - Graphic Adventure Engine
+*
+* ScummVM is the legal property of its developers, whose names
+* are too numerous to list here. Please refer to the COPYRIGHT
+* file distributed with this source distribution.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+*
+*/
+
+#ifndef BACKENDS_CLOUD_DROPBOX_STORAGE_H
+#define BACKENDS_CLOUD_DROPBOX_STORAGE_H
+
+#include "backends/cloud/storage.h"
+
+namespace Cloud { namespace Dropbox {
+
+class DropboxStorage: public Cloud::Storage {
+ bool _firstTime;
+
+protected:
+ virtual void handler();
+
+public:
+ DropboxStorage() : _firstTime(true) {};
+
+ virtual void listDirectory(Common::String path);
+ virtual void syncSaves();
+};
+
+} } //end of namespace Cloud::Dropbox
+
+#endif
diff --git a/backends/cloud/manager.cpp b/backends/cloud/manager.cpp
new file mode 100644
index 0000000000..05b23771b0
--- /dev/null
+++ b/backends/cloud/manager.cpp
@@ -0,0 +1,41 @@
+/* ScummVM - Graphic Adventure Engine
+*
+* ScummVM is the legal property of its developers, whose names
+* are too numerous to list here. Please refer to the COPYRIGHT
+* file distributed with this source distribution.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+*
+*/
+
+#include "backends/cloud/manager.h"
+#include "backends/cloud/dropbox/dropboxstorage.h"
+
+namespace Cloud {
+
+Manager::Manager(): _currentStorage(new Dropbox::DropboxStorage()) {};
+
+Manager::~Manager() { delete _currentStorage; }
+
+Storage* Manager::getCurrentStorage() {
+ return _currentStorage;
+}
+
+void Manager::syncSaves() {
+ Storage* storage = getCurrentStorage();
+ if (storage) storage->syncSaves();
+}
+
+} //end of namespace Cloud \ No newline at end of file
diff --git a/backends/cloud/cloudthread.h b/backends/cloud/manager.h
index 334a163dde..11cc595da4 100644
--- a/backends/cloud/cloudthread.h
+++ b/backends/cloud/manager.h
@@ -20,22 +20,25 @@
*
*/
-#ifndef BACKENDS_CLOUD_CLOUDTHREAD_H
-#define BACKENDS_CLOUD_CLOUDTHREAD_H
+#ifndef BACKENDS_CLOUD_MANAGER_H
+#define BACKENDS_CLOUD_MANAGER_H
-class CloudThread {
- friend void cloudThread(void*); //calls private handler()
+#include "common/cloudmanager.h"
+#include "common/str.h"
- bool _firstTime;
+namespace Cloud {
- void handler();
- void setTimeout(int interval);
- void unsetTimeout();
+class Manager: public Common::CloudManager {
+ Storage* _currentStorage;
public:
- CloudThread(): _firstTime(true) {};
+ Manager();
+ virtual ~Manager();
- void start();
+ virtual Storage* getCurrentStorage();
+ virtual void syncSaves();
};
+} //end of namespace Cloud
+
#endif
diff --git a/backends/cloud/storage.cpp b/backends/cloud/storage.cpp
new file mode 100644
index 0000000000..3272ecf760
--- /dev/null
+++ b/backends/cloud/storage.cpp
@@ -0,0 +1,49 @@
+/* ScummVM - Graphic Adventure Engine
+*
+* ScummVM is the legal property of its developers, whose names
+* are too numerous to list here. Please refer to the COPYRIGHT
+* file distributed with this source distribution.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+*
+*/
+
+#include "backends/cloud/storage.h"
+#include "common/system.h"
+#include "common/timer.h"
+
+namespace Cloud {
+
+void cloudThread(void *thread) {
+ Storage *cloudThread = (Storage *)thread;
+ cloudThread->handler();
+}
+
+void Storage::handler() {
+ unsetTimeout();
+}
+
+void Storage::setTimeout(int interval) {
+ Common::TimerManager *manager = g_system->getTimerManager();
+ if (!manager->installTimerProc(cloudThread, interval, this, "Cloud Thread"))
+ ; // warning("Failed to create cloud thread");
+}
+
+void Storage::unsetTimeout() {
+ Common::TimerManager *manager = g_system->getTimerManager();
+ manager->removeTimerProc(cloudThread);
+}
+
+} //end of namespace Cloud
diff --git a/backends/cloud/storage.h b/backends/cloud/storage.h
new file mode 100644
index 0000000000..4afa36f8d8
--- /dev/null
+++ b/backends/cloud/storage.h
@@ -0,0 +1,61 @@
+/* ScummVM - Graphic Adventure Engine
+*
+* ScummVM is the legal property of its developers, whose names
+* are too numerous to list here. Please refer to the COPYRIGHT
+* file distributed with this source distribution.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+*
+*/
+
+#ifndef BACKENDS_CLOUD_STORAGE_H
+#define BACKENDS_CLOUD_STORAGE_H
+
+#include "common/str.h"
+
+namespace Cloud {
+
+class Storage {
+ friend void cloudThread(void*); //calls handler()
+
+protected:
+ virtual void handler();
+ virtual void setTimeout(int interval);
+ virtual void unsetTimeout();
+
+public:
+ Storage() {};
+ virtual ~Storage() {};
+
+ /**
+ * Lists given directory.
+ *
+ * @param path directory to list
+ */
+
+ //TODO: actually make it list directories and some callback to pass gathered files list
+
+ virtual void listDirectory(Common::String path) = 0;
+
+ /**
+ * Starts saves syncing process.
+ */
+
+ virtual void syncSaves() = 0;
+};
+
+} //end of namespace Cloud
+
+#endif