[hermes] Use generic Config on reload (#3985)
author박종현/On-Device Lab(SR)/Staff Engineer/삼성전자 <jh1302.park@samsung.com>
Wed, 26 Jun 2019 10:00:32 +0000 (19:00 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Wed, 26 Jun 2019 10:00:32 +0000 (19:00 +0900)
Source now has a default "reload" method implementation which uses
generic configure method.

Signed-off-by: Jonghyun Park <jh1302.park@samsung.com>
contrib/hermes/include/hermes/core/Config.h
contrib/hermes/include/hermes/core/Source.h
contrib/hermes/src/core/Source.cpp

index 49042dd..d937a36 100644 (file)
 #ifndef __HERMES_CONFIG_H__
 #define __HERMES_CONFIG_H__
 
+#include "hermes/core/Severity.h" // TODO Put this into SourceSetting.h
+#include "hermes/core/SourceSetting.h"
+
 namespace hermes
 {
 
+// TODO Introduce Source.forward.h
+class Source;
+
 /**
  * @brief Top-level configuration interface
  *
@@ -28,6 +34,8 @@ namespace hermes
 struct Config
 {
   virtual ~Config() = default;
+
+  virtual void configure(const Source *, SourceSetting &) const = 0;
 };
 
 } // namespace hermes
index b408b4a..b28532b 100644 (file)
@@ -77,8 +77,10 @@ public:
    * @brief Update Source with a given configuration
    *
    * WARNING Do NOT invoke this manually.
+   *
+   * TODO Remove virtual after migration
    */
-  virtual void reload(const Config *) = 0;
+  virtual void reload(const Config *);
 
 public:
   std::unique_ptr<MessageBuffer> buffer(const Severity &) const;
index 4d473cd..33f8b05 100644 (file)
@@ -59,6 +59,8 @@ void Source::deactivate(void)
   assert((_reg == nullptr) && (_bus == nullptr));
 }
 
+void Source::reload(const Config *c) { c->configure(this, _setting); }
+
 std::unique_ptr<MessageBuffer> Source::buffer(const Severity &) const
 {
   // TODO Pass Severity