LCOV - code coverage report
Current view: top level - bfd/rest_api - bfd_json_config.h (source / functions) Hit Total Coverage
Test: OpenSDN C/C++ coverage (all TARGET_SET jobs) Lines: 3 3 100.0 %
Date: 2026-08-03 02:19:58 Functions: 2 3 66.7 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :  * Copyright (c) 2014 CodiLime, Inc. All rights reserved.
       3             :  */
       4             : 
       5             : #ifndef SRC_BFD_JSON_CONFIG_H_
       6             : #define SRC_BFD_JSON_CONFIG_H_
       7             : 
       8             : #include "bfd/bfd_common.h"
       9             : 
      10             : #include <vector>
      11             : #include <map>
      12             : #include <string>
      13             : #include <boost/asio/ip/address.hpp>
      14             : #include <rapidjson/document.h>
      15             : 
      16             : namespace BFD {
      17             : namespace REST {
      18             : 
      19             : struct JsonData {
      20             :     class Constraint {
      21             :      public:
      22             :         typedef bool (contrail_rapidjson::Value::*TypecheckFunc)() const;
      23             : 
      24           4 :         Constraint(const char* member_name, TypecheckFunc func)
      25           4 :             : member_name(member_name), typecheck_func(func) {}
      26             : 
      27             :         const char* member_name;
      28             :         TypecheckFunc typecheck_func;
      29             :     };
      30             : 
      31             :     virtual bool ValidateJsonDocument(const contrail_rapidjson::Value& document) = 0;
      32             :     virtual bool ParseFromJsonDocument(const contrail_rapidjson::Value& document) = 0;
      33             :     virtual void EncodeJsonDocument(contrail_rapidjson::Value* document,
      34             :         contrail_rapidjson::Value::AllocatorType *allocator) = 0;
      35             : 
      36             :     bool ParseFromJsonString(const std::string& json);
      37             :     void EncodeJsonString(std::string* json);
      38             : 
      39          14 :     virtual ~JsonData() {}
      40             : 
      41             :  protected:
      42             :     bool AreConstraintsMet(const std::vector<Constraint>& constraints,
      43             :     const contrail_rapidjson::Value& document);
      44             : };
      45             : 
      46             : struct JsonConfig : public JsonData {
      47             :     JsonConfig();
      48             :     JsonConfig(boost::asio::ip::address address,
      49             :                TimeInterval desired_min_tx_interval,
      50             :                TimeInterval required_min_rx_interval,
      51             :                int detection_time_multiplier);
      52             : 
      53             :     bool ValidateJsonDocument(const contrail_rapidjson::Value& document);
      54             :     bool ParseFromJsonDocument(const contrail_rapidjson::Value& document);
      55             :     void EncodeJsonDocument(contrail_rapidjson::Value* document,
      56             :         contrail_rapidjson::Value::AllocatorType *allocator);
      57             : 
      58             :     boost::asio::ip::address address;
      59             :     TimeInterval desired_min_tx_interval;
      60             :     TimeInterval required_min_rx_interval;
      61             :     int detection_time_multiplier;
      62             : };
      63             : 
      64             : struct JsonState : public JsonData {
      65             :     virtual bool ValidateJsonDocument(const contrail_rapidjson::Value& document);
      66             :     virtual bool ParseFromJsonDocument(const contrail_rapidjson::Value& document);
      67             :     void EncodeJsonDocument(contrail_rapidjson::Value* document,
      68             :         contrail_rapidjson::Value::AllocatorType *allocator);
      69             : 
      70             :     JsonConfig session_config;
      71             : 
      72             :     Discriminator local_discriminator;
      73             :     Discriminator remote_discriminator;
      74             :     BFDState bfd_local_state;
      75             :     BFDState bfd_remote_state;
      76             :     TimeInterval remote_min_rx_interval;
      77             : };
      78             : 
      79             : struct JsonStateNotification : public JsonData {
      80             :     virtual bool ValidateJsonDocument(const contrail_rapidjson::Value& document);
      81             :     virtual bool ParseFromJsonDocument(const contrail_rapidjson::Value& document);
      82             :     void EncodeJsonDocument(contrail_rapidjson::Value* document,
      83             :         contrail_rapidjson::Value::AllocatorType *allocator);
      84             : 
      85             :     boost::asio::ip::address address;
      86             :     BFDState state;
      87             : };
      88             : 
      89             : struct JsonStateNotificationList : public JsonData {
      90             :     virtual bool ValidateJsonDocument(const contrail_rapidjson::Value& document);
      91             :     virtual bool ParseFromJsonDocument(const contrail_rapidjson::Value& document);
      92             :     void EncodeJsonDocument(contrail_rapidjson::Value* document,
      93             :         contrail_rapidjson::Value::AllocatorType *allocator);
      94             : 
      95             :     std::vector<JsonStateNotification> notifications;
      96             : };
      97             : 
      98             : struct JsonStateMap : public JsonData {
      99             :     typedef std::map<boost::asio::ip::address, BFDState> StateMap;
     100             :     StateMap states;
     101             : 
     102             :     virtual bool ValidateJsonDocument(const contrail_rapidjson::Value& document);
     103             :     virtual bool ParseFromJsonDocument(const contrail_rapidjson::Value& document);
     104             :     void EncodeJsonDocument(contrail_rapidjson::Value* document,
     105             :         contrail_rapidjson::Value::AllocatorType* allocator);
     106             : };
     107             : 
     108             : }  // namespace REST
     109             : }  // namespace BFD
     110             : 
     111             : #endif  // SRC_BFD_JSON_CONFIG_H_

Generated by: LCOV version 1.14