NVIDIA DeepStream SDK API Reference

7.1 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 
23 
24 namespace deepstream {
26  public:
27  typedef struct {
28  std::string proto_lib;
29  std::string conn_str;
30  std::string config_file_path;
31  std::string topicList;
32  std::string sensor_list_file;
33  } Config;
34  class IHandler {
35  public:
36  virtual ~IHandler() {}
37  };
38 
39  // smart recording controller
41  public:
42  virtual void startSmartRecord(int64_t camera_id, uint32_t *sessionId,
43  unsigned int startTime, unsigned int duration,
44  void *userData) = 0;
45  virtual void stopSmartRecord(int64_t camera_id, uint32_t sessionId) = 0;
46  };
47 
49  virtual ~Cloud2DeviceReceiver();
50 
51  void connect(Config& config);
52  void disconnect();
53  bool isConnected() { return context_ != nullptr; }
54  bool hasHandler(IHandler* handler) {
55  return std::find(handlers_.begin(), handlers_.end(), handler) != handlers_.end();
56  }
57  void addHandler(IHandler* handler) { handlers_.push_back(handler); }
58 
59  bool handleMessage(const char* topic, const char* payload, unsigned int size);
60 
62 
63  // static Cloud2DeviceReceiver& getInstance() {
64  // static Cloud2DeviceReceiver instance; // create a single instance on first use
65  // return instance;
66  // }
67 
68  private:
69 
70  bool parse_msgconv_config(const std::string& file_path);
71 
72  std::string config_path_;
73  NvDsC2DContext* context_ = nullptr;
74  std::vector<IHandler*> handlers_;
75  std::unordered_map<std::string, int64_t> sensor_name_id_map_;
76  std::unordered_map<std::string, uint32_t> sensor_sr_session_id_map_;
77 };
78 }
79 
80 #endif
deepstream::Cloud2DeviceReceiver::addHandler
void addHandler(IHandler *handler)
Definition: msgbroker_c2d_receiver.hpp:57
NvDsC2DContext
Definition: deepstream_c2d_msg.h:25
deepstream::Cloud2DeviceReceiver::IHandler::~IHandler
virtual ~IHandler()
Definition: msgbroker_c2d_receiver.hpp:36
deepstream::Cloud2DeviceReceiver::Config::conn_str
std::string conn_str
Definition: msgbroker_c2d_receiver.hpp:29
deepstream::Cloud2DeviceReceiver::Config::config_file_path
std::string config_file_path
Definition: msgbroker_c2d_receiver.hpp:30
deepstream::Cloud2DeviceReceiver::Cloud2DeviceReceiver
Cloud2DeviceReceiver()
deepstream::Cloud2DeviceReceiver::IHandler
Definition: msgbroker_c2d_receiver.hpp:34
deepstream::Cloud2DeviceReceiver::Config::sensor_list_file
std::string sensor_list_file
Definition: msgbroker_c2d_receiver.hpp:32
deepstream::Cloud2DeviceReceiver::Config::proto_lib
std::string proto_lib
Definition: msgbroker_c2d_receiver.hpp:28
deepstream
Definition: buffer.hpp:33
deepstream::Cloud2DeviceReceiver::ISmartRecordingController
Definition: msgbroker_c2d_receiver.hpp:40
deepstream::Cloud2DeviceReceiver::connect
void connect(Config &config)
deepstream::Cloud2DeviceReceiver::Config
Definition: msgbroker_c2d_receiver.hpp:27
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:53
deepstream::Cloud2DeviceReceiver
Definition: msgbroker_c2d_receiver.hpp:25
deepstream::Cloud2DeviceReceiver::getInstance
static Cloud2DeviceReceiver & getInstance()
deepstream::Cloud2DeviceReceiver::~Cloud2DeviceReceiver
virtual ~Cloud2DeviceReceiver()
deepstream::Cloud2DeviceReceiver::hasHandler
bool hasHandler(IHandler *handler)
Definition: msgbroker_c2d_receiver.hpp:54
deepstream::Cloud2DeviceReceiver::Config::topicList
std::string topicList
Definition: msgbroker_c2d_receiver.hpp:31
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)