summaryrefslogtreecommitdiffstats
path: root/remoting/host/json_host_config.cc
diff options
context:
space:
mode:
authorsergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-17 23:43:00 +0000
committersergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-17 23:43:00 +0000
commit7620735be42ebc236d2da42d64f22dc5dedd01f9 (patch)
treebaf0e6311b84830cd76df764e73e9aacfeb65e3e /remoting/host/json_host_config.cc
parentf90ab58c11abf783c850c632f9b0467f968e4045 (diff)
downloadchromium_src-7620735be42ebc236d2da42d64f22dc5dedd01f9.zip
chromium_src-7620735be42ebc236d2da42d64f22dc5dedd01f9.tar.gz
chromium_src-7620735be42ebc236d2da42d64f22dc5dedd01f9.tar.bz2
JSON based host config storage implemented. Python script for host registration.
BUG=None TEST=None Review URL: http://codereview.chromium.org/2804007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@50166 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'remoting/host/json_host_config.cc')
-rw-r--r--remoting/host/json_host_config.cc64
1 files changed, 64 insertions, 0 deletions
diff --git a/remoting/host/json_host_config.cc b/remoting/host/json_host_config.cc
new file mode 100644
index 0000000..324b2d2
--- /dev/null
+++ b/remoting/host/json_host_config.cc
@@ -0,0 +1,64 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "remoting/host/json_host_config.h"
+
+#include "base/message_loop_proxy.h"
+#include "base/task.h"
+#include "base/values.h"
+#include "chrome/common/json_pref_store.h"
+#include "chrome/common/pref_store.h"
+
+namespace remoting {
+
+JsonHostConfig::JsonHostConfig(
+ const FilePath& filename,
+ base::MessageLoopProxy* file_message_loop_proxy)
+ : pref_store_(new JsonPrefStore(filename, file_message_loop_proxy)),
+ message_loop_proxy_(file_message_loop_proxy) {
+}
+
+bool JsonHostConfig::Read() {
+ return pref_store_->ReadPrefs() == PrefStore::PREF_READ_ERROR_NONE;
+}
+
+bool JsonHostConfig::GetString(const std::wstring& path,
+ std::wstring* out_value) {
+ AutoLock auto_lock(lock_);
+ return pref_store_->prefs()->GetString(path, out_value);
+}
+
+bool JsonHostConfig::GetString(const std::wstring& path,
+ std::string* out_value) {
+ AutoLock auto_lock(lock_);
+ return pref_store_->prefs()->GetString(path, out_value);
+}
+
+void JsonHostConfig::Update(Task* task) {
+ {
+ AutoLock auto_lock(lock_);
+ task->Run();
+ }
+ message_loop_proxy_->PostTask(
+ FROM_HERE, NewRunnableMethod(this, &JsonHostConfig::DoWrite));
+}
+
+void JsonHostConfig::SetString(const std::wstring& path,
+ const std::wstring& in_value) {
+ lock_.AssertAcquired();
+ pref_store_->prefs()->SetString(path, in_value);
+}
+
+void JsonHostConfig::SetString(const std::wstring& path,
+ const std::string& in_value) {
+ lock_.AssertAcquired();
+ pref_store_->prefs()->SetString(path, in_value);
+}
+
+void JsonHostConfig::DoWrite() {
+ AutoLock auto_lock(lock_);
+ pref_store_->WritePrefs();
+}
+
+} // namespace remoting