NVIDIA DeepStream SDK API Reference

8.0 Release
msgbroker_c2d_receiver.hpp
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3  * SPDX-License-Identifier: LicenseRef-NvidiaProprietary
4  *
5  * NVIDIA CORPORATION, its affiliates and licensors retain all intellectual
6  * property and proprietary rights in and to this material, related
7  * documentation and any modifications thereto. Any use, reproduction,
8  * disclosure or distribution of this material and related documentation
9  * without an express license agreement from NVIDIA CORPORATION or
10  * its affiliates is strictly prohibited.
11  */
12 
13 #ifndef DEEPSTREAM_MSGBROKER_C2D_RECEIVER_HPP
14 #define DEEPSTREAM_MSGBROKER_C2D_RECEIVER_HPP
15 
16 #include <string>
17 #include <functional>
18 #include <vector>
19 #include <unordered_map>
20 #include <algorithm>
21 #include <cstdint>
22 
24 
25 namespace deepstream {
27  public:
28  typedef struct {
29  std::string proto_lib;
30  std::string conn_str;
31  std::string config_file_path;
32  std::string topicList;
33  std::string sensor_list_file;
34  } Config;
35  class IHandler {
36  public:
37  virtual ~IHandler() {}
38  };
39 
40  // smart recording controller
42  public:
43  virtual void startSmartRecord(int64_t camera_id, uint32_t *sessionId,
44  unsigned int startTime, unsigned int duration,
45  void *userData) = 0;
46  virtual void stopSmartRecord(int64_t camera_id, uint32_t sessionId) = 0;
47  };
48 
50  virtual ~Cloud2DeviceReceiver();
51 
52  void connect(Config& config);
53  void disconnect();
54  bool isConnected() { return context_ != nullptr; }
55  bool hasHandler(IHandler* handler) {
56  return std::find(handlers_.begin(), handlers_.end(), handler) != handlers_.end();
57  }
58  void addHandler(IHandler* handler) { handlers_.push_back(handler); }
59 
60  bool handleMessage(const char* topic, const char* payload, unsigned int size);
61 
63 
64  // static Cloud2DeviceReceiver& getInstance() {
65  // static Cloud2DeviceReceiver instance; // create a single instance on first use
66  // return instance;
67  // }
68 
69  private:
70 
71  bool parse_msgconv_config(const std::string& file_path);
72 
73  std::string config_path_;
74  NvDsC2DContext* context_ = nullptr;
75  std::vector<IHandler*> handlers_;
76  std::unordered_map<std::string, int64_t> sensor_name_id_map_;
77  std::unordered_map<std::string, uint32_t> sensor_sr_session_id_map_;
78 };
79 }
80 
81 #endif
deepstream::Cloud2DeviceReceiver::addHandler
void addHandler(IHandler *handler)
Definition: msgbroker_c2d_receiver.hpp:58
NvDsC2DContext
Definition: deepstream_c2d_msg.h:25
deepstream::Cloud2DeviceReceiver::IHandler::~IHandler
virtual ~IHandler()
Definition: msgbroker_c2d_receiver.hpp:37
deepstream::Cloud2DeviceReceiver::Config::conn_str
std::string conn_str
Definition: msgbroker_c2d_receiver.hpp:30
deepstream::Cloud2DeviceReceiver::Config::config_file_path
std::string config_file_path
Definition: msgbroker_c2d_receiver.hpp:31
deepstream::Cloud2DeviceReceiver::Cloud2DeviceReceiver
Cloud2DeviceReceiver()
deepstream::Cloud2DeviceReceiver::IHandler
Definition: msgbroker_c2d_receiver.hpp:35
deepstream::Cloud2DeviceReceiver::Config::sensor_list_file
std::string sensor_list_file
Definition: msgbroker_c2d_receiver.hpp:33
deepstream::Cloud2DeviceReceiver::Config::proto_lib
std::string proto_lib
Definition: msgbroker_c2d_receiver.hpp:29
deepstream
Definition: buffer.hpp:33
deepstream::Cloud2DeviceReceiver::ISmartRecordingController
Definition: msgbroker_c2d_receiver.hpp:41
deepstream::Cloud2DeviceReceiver::connect
void connect(Config &config)
deepstream::Cloud2DeviceReceiver::Config
Definition: msgbroker_c2d_receiver.hpp:28
deepstream::Cloud2DeviceReceiver::ISmartRecordingController::startSmartRecord
virtual void startSmartRecord(int64_t camera_id, uint32_t *sessionId, unsigned int startTime, unsigned int duration, void *userData)=0
deepstream::Cloud2DeviceReceiver::isConnected
bool isConnected()
Definition: msgbroker_c2d_receiver.hpp:54
deepstream::Cloud2DeviceReceiver
Definition: msgbroker_c2d_receiver.hpp:26
deepstream::Cloud2DeviceReceiver::getInstance
static Cloud2DeviceReceiver & getInstance()
deepstream::Cloud2DeviceReceiver::~Cloud2DeviceReceiver
virtual ~Cloud2DeviceReceiver()
deepstream::Cloud2DeviceReceiver::hasHandler
bool hasHandler(IHandler *handler)
Definition: msgbroker_c2d_receiver.hpp:55
deepstream::Cloud2DeviceReceiver::Config::topicList
std::string topicList
Definition: msgbroker_c2d_receiver.hpp:32
deepstream::Cloud2DeviceReceiver::disconnect
void disconnect()
deepstream::Cloud2DeviceReceiver::ISmartRecordingController::stopSmartRecord
virtual void stopSmartRecord(int64_t camera_id, uint32_t sessionId)=0
deepstream::Cloud2DeviceReceiver::handleMessage
bool handleMessage(const char *topic, const char *payload, unsigned int size)