/**
 * Nsmf_PDUSession
 * SMF PDU Session Service. © 2019, 3GPP Organizational Partners (ARIB, ATIS,
 * CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
 *
 * The version of the OpenAPI document: 1.1.0.alpha-1
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator
 * (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
 * the class manually.
 */
/*
 * GbrQosFlowInformation.h
 *
 *
 */

#ifndef GbrQosFlowInformation_H_
#define GbrQosFlowInformation_H_

#include "NotificationControl.h"
#include <string>
#include <nlohmann/json.hpp>

namespace oai {
namespace smf_server {
namespace model {

/// <summary>
///
/// </summary>
class GbrQosFlowInformation {
 public:
  GbrQosFlowInformation();
  virtual ~GbrQosFlowInformation();

  void validate();

  /////////////////////////////////////////////
  /// GbrQosFlowInformation members

  /// <summary>
  ///
  /// </summary>
  std::string getMaxFbrDl() const;
  void setMaxFbrDl(std::string const& value);
  /// <summary>
  ///
  /// </summary>
  std::string getMaxFbrUl() const;
  void setMaxFbrUl(std::string const& value);
  /// <summary>
  ///
  /// </summary>
  std::string getGuaFbrDl() const;
  void setGuaFbrDl(std::string const& value);
  /// <summary>
  ///
  /// </summary>
  std::string getGuaFbrUl() const;
  void setGuaFbrUl(std::string const& value);
  /// <summary>
  ///
  /// </summary>
  NotificationControl getNotifControl() const;
  void setNotifControl(NotificationControl const& value);
  bool notifControlIsSet() const;
  void unsetNotifControl();
  /// <summary>
  ///
  /// </summary>
  int32_t getMaxPacketLossRateDl() const;
  void setMaxPacketLossRateDl(int32_t const value);
  bool maxPacketLossRateDlIsSet() const;
  void unsetMaxPacketLossRateDl();
  /// <summary>
  ///
  /// </summary>
  int32_t getMaxPacketLossRateUl() const;
  void setMaxPacketLossRateUl(int32_t const value);
  bool maxPacketLossRateUlIsSet() const;
  void unsetMaxPacketLossRateUl();

  friend void to_json(nlohmann::json& j, const GbrQosFlowInformation& o);
  friend void from_json(const nlohmann::json& j, GbrQosFlowInformation& o);

 protected:
  std::string m_MaxFbrDl;

  std::string m_MaxFbrUl;

  std::string m_GuaFbrDl;

  std::string m_GuaFbrUl;

  NotificationControl m_NotifControl;
  bool m_NotifControlIsSet;
  int32_t m_MaxPacketLossRateDl;
  bool m_MaxPacketLossRateDlIsSet;
  int32_t m_MaxPacketLossRateUl;
  bool m_MaxPacketLossRateUlIsSet;
};

}  // namespace model
}  // namespace smf_server
}  // namespace oai

#endif /* GbrQosFlowInformation_H_ */
