Add SharedObject util (#73)
author최창규/Tizen Platform Lab(SR)/Engineer/삼성전자 <changyu.choi@samsung.com>
Tue, 23 Feb 2021 01:04:01 +0000 (10:04 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Tue, 23 Feb 2021 01:04:01 +0000 (10:04 +0900)
* Add SharedObject util

* Fix implementation

* Fix conflict

src/server/worker_thread.cc
src/server/worker_thread.hh
src/shared_object.hh [moved from src/server/shared_string.hh with 70% similarity]

index d4ee912..af8956d 100644 (file)
@@ -88,7 +88,7 @@ void WorkerThread::Run() {
     LOGD("Request type(%d)", static_cast<int>(type));
 
     if (!handler[type]->HandleRequest(req->GetData(), req->GetSize(),
-                                      locale_.GetString())) {
+                                      locale_.GetObject())) {
       LOGE("Failed to handle request");
       continue;
     }
@@ -105,9 +105,9 @@ std::shared_ptr<PkgRequest> WorkerThread::PopQueue() {
 }
 
 void WorkerThread::SetLocale(std::string locale) {
-  LOGD("Change locale (%s) -> (%s)", locale_.GetString().c_str(),
+  LOGD("Change locale (%s) -> (%s)", locale_.GetObject().c_str(),
        locale.c_str());
-  locale_.SetString(std::move(locale));
+  locale_.SetObject(std::move(locale));
 }
 
 }  // namespace pkgmgr_server
index ca1e458..61d507e 100644 (file)
@@ -25,7 +25,7 @@
 #include <thread>
 #include <vector>
 
-#include "shared_string.hh"
+#include "shared_object.hh"
 #include "pkg_request.hh"
 
 namespace pkgmgr_server {
@@ -46,7 +46,7 @@ class EXPORT_API WorkerThread {
 
  private:
   bool stop_all_;
-  SharedString locale_;
+  utils::SharedObject<std::string> locale_;
   std::queue<std::shared_ptr<PkgRequest>> queue_;
   std::vector<std::thread> threads_;
   std::mutex lock_;
similarity index 70%
rename from src/server/shared_string.hh
rename to src/shared_object.hh
index 9e720b4..cd2761a 100644 (file)
  * limitations under the License.
  */
 
-#ifndef SHARED_STRING_HH_
-#define SHARED_STRING_HH_
+#ifndef SHARED_OBJECT_HH_
+#define SHARED_OBJECT_HH_
 
 #include <mutex>
 #include <string>
 
-namespace pkgmgr_server {
+namespace utils {
 
-class SharedString {
+template<typename T>
+class SharedObject {
  public:
-  std::string GetString() {
+  T GetObject() {
     lock_.lock();
-    std::string ret = str_;
+    T ret = object_;
     lock_.unlock();
     return ret;
   }
-  void SetString(std::string& str) {
+  void SetObject(T& object) {
     lock_.lock();
-    str_ = str;
+    object_ = object;
     lock_.unlock();
   }
-  void SetString(std::string&& str) {
+  void SetObject(std::string&& object) {
     lock_.lock();
-    str_ = std::move(str);
+    object_ = std::move(object);
     lock_.unlock();
   }
 
  private:
-  std::string str_;
+  T object_;
   std::mutex lock_;
 };
 
-}  // namespace pkgmgr_server
+}  // namespace utils
 
-#endif  // SHARED_STRING_HH_
+#endif  // SHARED_OBJECT_HH_