[hermes] Extract SourceSetting class (#3976)
author박종현/On-Device Lab(SR)/Staff Engineer/삼성전자 <jh1302.park@samsung.com>
Wed, 26 Jun 2019 04:26:36 +0000 (13:26 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Wed, 26 Jun 2019 04:26:36 +0000 (13:26 +0900)
* [hermes] Extract SourceSetting class

This commit extracts SourceSetting class from Source as the first step
toward generic (reusable) Config support.

Signed-off-by: Jonghyun Park <jh1302.park@samsung.com>
* Fix a typo

contrib/hermes/include/hermes/core/Source.h
contrib/hermes/include/hermes/core/SourceSetting.h [new file with mode: 0644]

index 2dceee5..b408b4a 100644 (file)
@@ -21,6 +21,7 @@
 #include "hermes/core/Severity.h"
 #include "hermes/core/MessageBus.h"
 #include "hermes/core/MessageBuffer.h"
+#include "hermes/core/SourceSetting.h"
 
 namespace hermes
 {
@@ -42,85 +43,9 @@ public:
     virtual void detach(Source *) = 0;
   };
 
-  class Filter final
-  {
-  public:
-    Filter(int32_t *ptr) : _ptr{ptr}
-    {
-      // DO NOTHING
-    }
-
-  public:
-    inline void reject_all(void) { *_ptr = -1; }
-    inline void accept_upto(uint16_t lv) { *_ptr = static_cast<int32_t>(lv); }
-    inline void accept_all(void) { *_ptr = 65536; }
-
-  private:
-    int32_t *_ptr;
-  };
-
-  class Limit final
-  {
-  public:
-    Limit(const int32_t *ptr) : _ptr{ptr}
-    {
-      // DO NOTHING
-    }
-
-  public:
-    inline int32_t level(void) const { return *_ptr; }
-
-  private:
-    const int32_t *_ptr;
-  };
-
-  class Setting final
-  {
-  public:
-    Setting()
-    {
-      // Reject all the messages by default
-      reject_all();
-    }
-
-  public:
-    void reject_all(void)
-    {
-      filter(FATAL).reject_all();
-      filter(ERROR).reject_all();
-      filter(WARN).reject_all();
-      filter(INFO).reject_all();
-      filter(VERBOSE).reject_all();
-    }
-
-    void accept_all(void)
-    {
-      filter(FATAL).accept_all();
-      filter(ERROR).accept_all();
-      filter(WARN).accept_all();
-      filter(INFO).accept_all();
-      filter(VERBOSE).accept_all();
-    }
-
-    inline Filter filter(const SeverityCategory &cat)
-    {
-      return _ulimits.data() + static_cast<uint32_t>(cat);
-    }
-
-    inline Limit limit(const SeverityCategory &cat) const
-    {
-      return _ulimits.data() + static_cast<uint32_t>(cat);
-    }
-
-  private:
-    /**
-     * @brief Allowed message level for each category
-     *
-     * This source will accept all the messages whose level belongs to [0, ulimit)
-     *  where ulimit corresdpons to "limit(cat).value()"
-     */
-    std::array<int32_t, 5> _ulimits;
-  };
+  // NOTE This using statement is introduced for backward compatibility
+  // TODO Remove this using declaration after migration
+  using Setting = SourceSetting;
 
 protected:
   Source();
diff --git a/contrib/hermes/include/hermes/core/SourceSetting.h b/contrib/hermes/include/hermes/core/SourceSetting.h
new file mode 100644 (file)
index 0000000..3beaaa1
--- /dev/null
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __HERMES_SOURCE_SETTING_H__
+#define __HERMES_SOURCE_SETTING_H__
+
+#include <array>
+#include <cstdint>
+
+namespace hermes
+{
+
+class Filter final
+{
+public:
+  Filter(int32_t *ptr) : _ptr{ptr}
+  {
+    // DO NOTHING
+  }
+
+public:
+  inline void reject_all(void) { *_ptr = -1; }
+  inline void accept_upto(uint16_t lv) { *_ptr = static_cast<int32_t>(lv); }
+  inline void accept_all(void) { *_ptr = 65536; }
+
+private:
+  int32_t *_ptr;
+};
+
+class Limit final
+{
+public:
+  Limit(const int32_t *ptr) : _ptr{ptr}
+  {
+    // DO NOTHING
+  }
+
+public:
+  inline int32_t level(void) const { return *_ptr; }
+
+private:
+  const int32_t *_ptr;
+};
+
+class SourceSetting final
+{
+public:
+  SourceSetting()
+  {
+    // Reject all the messages by default
+    reject_all();
+  }
+
+public:
+  void reject_all(void)
+  {
+    filter(FATAL).reject_all();
+    filter(ERROR).reject_all();
+    filter(WARN).reject_all();
+    filter(INFO).reject_all();
+    filter(VERBOSE).reject_all();
+  }
+
+  void accept_all(void)
+  {
+    filter(FATAL).accept_all();
+    filter(ERROR).accept_all();
+    filter(WARN).accept_all();
+    filter(INFO).accept_all();
+    filter(VERBOSE).accept_all();
+  }
+
+  inline Filter filter(const SeverityCategory &cat)
+  {
+    return _ulimits.data() + static_cast<uint32_t>(cat);
+  }
+
+  inline Limit limit(const SeverityCategory &cat) const
+  {
+    return _ulimits.data() + static_cast<uint32_t>(cat);
+  }
+
+private:
+  /**
+   * @brief Allowed message level for each category
+   *
+   * This source will accept all the messages whose level belongs to [0, ulimit)
+   *  where ulimit corresdpons to "limit(cat).value()"
+   */
+  std::array<int32_t, 5> _ulimits;
+};
+
+} // namespace hermes
+
+#endif // __HERMES_SOURCE_SETTING_H__