17 #ifndef TOOLS_CVT_MONITOR_GENERAL_CHANNEL_MESSAGE_H_ 18 #define TOOLS_CVT_MONITOR_GENERAL_CHANNEL_MESSAGE_H_ 48 return static_cast<ErrorCode>(
reinterpret_cast<intptr_t
>(ptr));
52 static_cast<intptr_t
>(errCode));
56 channel_node_.reset();
57 channel_reader_.reset();
58 channel_message_.reset();
60 delete raw_msg_class_;
61 raw_msg_class_ =
nullptr;
66 return channel_reader_->GetChannelName();
70 message_type_ = msgTypeName;
72 const std::string&
message_type(
void)
const {
return message_type_; }
74 bool is_enabled(
void)
const {
return channel_reader_ !=
nullptr; }
79 const std::string&
NodeName(
void)
const {
return node_name_; }
81 void add_reader(
const std::string& reader) { DoAdd(&readers_, reader); }
82 void del_reader(
const std::string& reader) { DoDelete(&readers_, reader); }
84 void add_writer(
const std::string& writer) { DoAdd(&writers_, writer); }
86 DoDelete(&writers_, writer);
87 if (!writers_.size()) {
88 set_has_message_come(
false);
95 if (channel_reader_ !=
nullptr) {
96 channel_reader_.reset();
99 if (channel_node_ !=
nullptr) {
100 channel_node_.reset();
108 current_state_(State::ShowDebugString),
109 has_message_come_(
false),
113 msg_time_(last_time_.ToNanosecond() + 1),
114 channel_node_(
nullptr),
115 node_name_(node_name),
118 channel_message_(
nullptr),
119 channel_reader_(
nullptr),
121 raw_msg_class_(
nullptr) {}
126 static void DoDelete(std::vector<std::string>* vec,
const std::string& str) {
127 for (
auto iter = vec->begin(); iter != vec->end(); ++iter) {
135 static void DoAdd(std::vector<std::string>* vec,
const std::string& str) {
136 for (
const auto& item : *vec) {
142 vec->emplace_back(str);
145 void UpdateRawMessage(
146 const std::shared_ptr<apollo::cyber::message::RawMessage>& raw_msg) {
147 set_has_message_come(
true);
150 std::lock_guard<std::mutex> _g(inner_lock_);
151 channel_message_.reset();
152 channel_message_ = raw_msg;
155 std::shared_ptr<apollo::cyber::message::RawMessage> CopyMsgPtr(
void)
const {
156 decltype(channel_message_) channel_msg;
158 std::lock_guard<std::mutex> g(inner_lock_);
159 channel_msg = channel_message_;
166 void RenderDebugString(
const Screen* s,
int key,
int*
line_no);
167 void RenderInfo(
const Screen* s,
int key,
int* line_no);
169 void set_has_message_come(
bool b) { has_message_come_ = b; }
171 enum class State { ShowDebugString, ShowInfo } current_state_;
173 bool has_message_come_;
174 std::string message_type_;
175 std::atomic<int> frame_counter_;
180 std::unique_ptr<apollo::cyber::Node> channel_node_;
182 std::string node_name_;
184 std::vector<std::string> readers_;
185 std::vector<std::string> writers_;
187 std::shared_ptr<apollo::cyber::message::RawMessage> channel_message_;
188 std::shared_ptr<apollo::cyber::Reader<apollo::cyber::message::RawMessage>>
190 mutable std::mutex inner_lock_;
192 google::protobuf::Message* raw_msg_class_;
198 #endif // TOOLS_CVT_MONITOR_GENERAL_CHANNEL_MESSAGE_H_ Definition: cyber_topology_message.h:37
GeneralMessageBase(RenderableMessage *parent=nullptr)
Definition: general_message_base.h:54
bool has_message_come(void) const
Definition: general_channel_message.h:75
ErrorCode
Definition: general_channel_message.h:34
Definition: renderable_message.h:24
static const char * ErrCode2Str(ErrorCode errCode)
bool is_enabled(void) const
Definition: general_channel_message.h:74
const std::string & message_type(void) const
Definition: general_channel_message.h:72
Definition: general_channel_message.h:32
void del_reader(const std::string &reader)
Definition: general_channel_message.h:82
int Render(const Screen *s, int key) override
static GeneralChannelMessage * CastErrorCode2Ptr(ErrorCode errCode)
Definition: general_channel_message.h:50
const std::string & NodeName(void) const
Definition: general_channel_message.h:79
void add_reader(const std::string &reader)
Definition: general_channel_message.h:81
Definition: general_message_base.h:28
~GeneralChannelMessage()
Definition: general_channel_message.h:55
std::string GetChannelName(void) const
Definition: general_channel_message.h:65
int * line_no(void)
Definition: renderable_message.h:55
Definition: general_message.h:26
RenderableMessage * parent(void) const
Definition: renderable_message.h:44
void CloseChannel(void)
Definition: general_channel_message.h:94
static ErrorCode CastPtr2ErrorCode(void *ptr)
Definition: general_channel_message.h:46
static bool IsErrorCode(void *ptr)
void set_message_type(const std::string &msgTypeName)
Definition: general_channel_message.h:69
void del_writer(const std::string &writer)
Definition: general_channel_message.h:85
double frame_ratio(void) override
Cyber has builtin time type Time.
Definition: time.h:31
void add_writer(const std::string &writer)
Definition: general_channel_message.h:84