22#include "cyber/proto/role_attributes.pb.h"
23#include "cyber/proto/topology_change.pb.h"
33 second_column_(SecondColumnType::MessageFrameRatio),
36 specified_channel_(channel),
37 all_channels_map_() {}
40 for (
auto item : all_channels_map_) {
47bool CyberTopologyMessage::IsFromHere(
const std::string& node_name) {
48 std::ostringstream out_str;
49 out_str <<
"MonitorReader" << pid_;
51 std::string templateName = out_str.str();
52 const std::string baseName = node_name.substr(0, templateName.size());
54 return (templateName.compare(baseName) == 0);
60 if (iter != all_channels_map_.cend() &&
62 iter->second->is_enabled()) {
68std::map<std::string, GeneralChannelMessage*>::const_iterator
69CyberTopologyMessage::FindChild(
int line_no)
const {
72 std::map<std::string, GeneralChannelMessage*>::const_iterator ret =
73 all_channels_map_.cend();
78 auto iter = all_channels_map_.cbegin();
84 for (i = 0; iter != all_channels_map_.cend(); ++iter) {
106 if (iter != all_channels_map_.cend() &&
111 iter->second->del_writer(node_name);
113 iter->second->del_reader(node_name);
123 if (!specified_channel_.empty() && specified_channel_ != channel_name) {
127 if (
static_cast<int>(channel_name.length()) > col1_width_) {
128 col1_width_ =
static_cast<int>(channel_name.length());
131 const std::string& node_name = role.
node_name();
132 if (IsFromHere(node_name)) {
138 auto iter = all_channels_map_.find(channel_name);
139 if (iter == all_channels_map_.cend()) {
140 static int index = 0;
142 std::ostringstream out_str;
143 out_str <<
"MonitorReader" << pid_ <<
'-' << index++;
147 if (channel_msg !=
nullptr) {
149 channel_msg->OpenChannel(channel_name))) {
157 all_channels_map_[channel_name] = channel_msg;
159 channel_msg = iter->second;
176void CyberTopologyMessage::ChangeState(
const Screen* s,
int key) {
180 second_column_ = SecondColumnType::MessageFrameRatio;
185 second_column_ = SecondColumnType::MessageType;
189 auto iter = FindChild(*
line_no());
198 all_channels_map_[iter->first] = ret;
218 switch (second_column_) {
219 case SecondColumnType::MessageType:
223 case SecondColumnType::MessageFrameRatio:
229 auto iter = all_channels_map_.cbegin();
231 register int line = 0;
238 std::ostringstream out_str;
241 for (line = 1; iter != all_channels_map_.cend() && line < tmp;
246 if (iter->second->has_message_come()) {
247 if (iter->second->is_enabled()) {
256 s->
AddStr(0, line, iter->first.c_str());
259 switch (second_column_) {
260 case SecondColumnType::MessageType:
262 iter->second->message_type().c_str());
264 case SecondColumnType::MessageFrameRatio: {
267 << iter->second->frame_ratio();
269 out_str.str().c_str());
void AddReaderWriter(const apollo::cyber::proto::RoleAttributes &role, bool isWriter)
int Render(const Screen *s, int key) override
CyberTopologyMessage(const std::string &channel)
RenderableMessage * Child(int index) const override
void TopologyChanged(const apollo::cyber::proto::ChangeMsg &change_msg)
static bool IsErrorCode(void *ptr)
bool is_enabled(void) const
const std::string & NodeName(void) const
void add_writer(const std::string &writer)
void set_message_type(const std::string &msgTypeName)
static ErrorCode CastPtr2ErrorCode(void *ptr)
static const char * ErrCode2Str(ErrorCode errCode)
static GeneralChannelMessage * CastErrorCode2Ptr(ErrorCode errCode)
void add_reader(const std::string &reader)
static constexpr int FrameRatio_Precision
void AddStr(int x, int y, ColorPair color, const char *str) const
void SetCurrentColor(ColorPair color) const
void ClearCurrentColor(void) const
constexpr int SecondColumnOffset
std::string MessageType()
optional RoleAttributes role_attr
optional OperateType operate_type
optional RoleType role_type
optional string node_name
optional string channel_name
optional string message_type