Apollo 10.0
自动驾驶开放平台
GeneralChannelMessage类 参考

#include <general_channel_message.h>

类 GeneralChannelMessage 继承关系图:
GeneralChannelMessage 的协作图:

Public 类型

enum class  ErrorCode {
  NewSubClassFailed = -1 , CreateNodeFailed = -2 , CreateReaderFailed = -3 , MessageTypeIsEmpty = -4 ,
  ChannelNameOrNodeNameIsEmpty = -5 , NoCloseChannel = -6
}
 

Public 成员函数

 ~GeneralChannelMessage ()
 
std::string GetChannelName (void) const
 
void set_message_type (const std::string &msgTypeName)
 
const std::string & message_type (void) const
 
bool is_enabled (void) const
 
bool has_message_come (void) const
 
double frame_ratio (void) override
 
const std::string & NodeName (void) const
 
void add_reader (const std::string &reader)
 
void del_reader (const std::string &reader)
 
void add_writer (const std::string &writer)
 
void del_writer (const std::string &writer)
 
int Render (const Screen *s, int key) override
 
void CloseChannel (void)
 
- Public 成员函数 继承自 RenderableMessage
 RenderableMessage (RenderableMessage *parent=nullptr, int line_no=0)
 
virtual ~RenderableMessage ()
 
RenderableMessageparent (void) const
 
void set_parent (RenderableMessage *parent)
 
int page_item_count (void) const
 

静态 Public 成员函数

static const char * ErrCode2Str (ErrorCode errCode)
 
static bool IsErrorCode (void *ptr)
 
static ErrorCode CastPtr2ErrorCode (void *ptr)
 
static GeneralChannelMessageCastErrorCode2Ptr (ErrorCode errCode)
 

友元

class CyberTopologyMessage
 
class GeneralMessage
 

额外继承的成员函数

- 静态 Public 属性 继承自 RenderableMessage
static constexpr int FrameRatio_Precision = 2
 
- Protected 成员函数 继承自 GeneralMessageBase
void InsertRepeatedMessage (int line_no, GeneralMessageBase *item)
 
RenderableMessageChild (int line_no) const override
 
 GeneralMessageBase (RenderableMessage *parent=nullptr)
 
 ~GeneralMessageBase (void)
 
void clear (void)
 
 GeneralMessageBase (const GeneralMessageBase &)=delete
 
GeneralMessageBaseoperator= (const GeneralMessageBase &)=delete
 
- Protected 成员函数 继承自 RenderableMessage
int * line_no (void)
 
void set_line_no (int line_no)
 
void reset_line_page (void)
 
void SplitPages (int key)
 
- 静态 Protected 成员函数 继承自 GeneralMessageBase
static void PrintMessage (GeneralMessageBase *baseMsg, const google::protobuf::Message &msg, int *jump_lines, const Screen *s, int *line_no, int indent)
 
static void PrintField (GeneralMessageBase *baseMsg, const google::protobuf::Message &msg, int *jump_lines, const Screen *s, int *line_no, int indent, const google::protobuf::Reflection *ref, const google::protobuf::FieldDescriptor *field, int index)
 
static int LineCount (const google::protobuf::Message &msg, int screen_width)
 
static int LineCountOfField (const google::protobuf::Message &msg, int screen_width, const google::protobuf::FieldDescriptor *field, const google::protobuf::Reflection *reflection, bool is_folded=true)
 
- Protected 属性 继承自 GeneralMessageBase
std::map< const int, GeneralMessageBase * > children_map_
 
- Protected 属性 继承自 RenderableMessage
int line_no_
 
int pages_
 
int page_index_
 
int page_item_count_
 
RenderableMessageparent_
 
double frame_ratio_
 

详细描述

在文件 general_channel_message.h32 行定义.

成员枚举类型说明

◆ ErrorCode

枚举值
NewSubClassFailed 
CreateNodeFailed 
CreateReaderFailed 
MessageTypeIsEmpty 
ChannelNameOrNodeNameIsEmpty 
NoCloseChannel 

在文件 general_channel_message.h34 行定义.

构造及析构函数说明

◆ ~GeneralChannelMessage()

GeneralChannelMessage::~GeneralChannelMessage ( )
inline

在文件 general_channel_message.h55 行定义.

55 {
56 channel_node_.reset();
57 channel_reader_.reset();
58 channel_message_.reset();
59 if (raw_msg_class_) {
60 delete raw_msg_class_;
61 raw_msg_class_ = nullptr;
62 }
63 }

成员函数说明

◆ add_reader()

void GeneralChannelMessage::add_reader ( const std::string &  reader)
inline

在文件 general_channel_message.h81 行定义.

81{ DoAdd(&readers_, reader); }

◆ add_writer()

void GeneralChannelMessage::add_writer ( const std::string &  writer)
inline

在文件 general_channel_message.h84 行定义.

84{ DoAdd(&writers_, writer); }

◆ CastErrorCode2Ptr()

static GeneralChannelMessage * GeneralChannelMessage::CastErrorCode2Ptr ( ErrorCode  errCode)
inlinestatic

在文件 general_channel_message.h50 行定义.

50 {
51 return reinterpret_cast<GeneralChannelMessage*>(
52 static_cast<intptr_t>(errCode));
53 }

◆ CastPtr2ErrorCode()

static ErrorCode GeneralChannelMessage::CastPtr2ErrorCode ( void *  ptr)
inlinestatic

在文件 general_channel_message.h46 行定义.

46 {
47 assert(IsErrorCode(ptr));
48 return static_cast<ErrorCode>(reinterpret_cast<intptr_t>(ptr));
49 }
static bool IsErrorCode(void *ptr)

◆ CloseChannel()

void GeneralChannelMessage::CloseChannel ( void  )
inline

在文件 general_channel_message.h94 行定义.

94 {
95 if (channel_reader_ != nullptr) {
96 channel_reader_.reset();
97 }
98
99 if (channel_node_ != nullptr) {
100 channel_node_.reset();
101 }
102 }

◆ del_reader()

void GeneralChannelMessage::del_reader ( const std::string &  reader)
inline

在文件 general_channel_message.h82 行定义.

82{ DoDelete(&readers_, reader); }

◆ del_writer()

void GeneralChannelMessage::del_writer ( const std::string &  writer)
inline

在文件 general_channel_message.h85 行定义.

85 {
86 DoDelete(&writers_, writer);
87 if (!writers_.size()) {
88 set_has_message_come(false);
89 }
90 }

◆ ErrCode2Str()

const char * GeneralChannelMessage::ErrCode2Str ( GeneralChannelMessage::ErrorCode  errCode)
static

在文件 general_channel_message.cc36 行定义.

37 {
38 const char* ret;
39 switch (errCode) {
41 ret = "Cannot Create Parser Object";
42 break;
43
45 ret = "Cannot Create Cyber Node";
46 break;
47
49 ret = "Cannot Create Cyber Reader";
50 break;
51
53 ret = "Message Type is Empty";
54 break;
55
57 ret = "Channel Name or Node Name is Empty";
58 break;
59
61 ret = "No Close Channel";
62 break;
63
64 default:
65 ret = "Unknown Error Code";
66 }
67 return ret;
68}

◆ frame_ratio()

double GeneralChannelMessage::frame_ratio ( void  )
overridevirtual

重载 RenderableMessage .

在文件 general_channel_message.cc88 行定义.

88 {
89 if (!is_enabled() || !has_message_come()) {
90 return 0.0;
91 }
92 auto time_now = apollo::cyber::Time::MonoTime();
93 auto interval = time_now - time_last_calc_;
94 if (interval.ToNanosecond() > 1000000000) {
95 int old = frame_counter_;
96 while (!frame_counter_.compare_exchange_strong(old, 0)) {
97 }
98 if (old == 0) {
99 return 0.0;
100 }
101 auto curMsgTime = msg_time_;
102 auto deltaTime = curMsgTime - last_time_;
103 frame_ratio_ = old / deltaTime.ToSecond();
104 last_time_ = curMsgTime;
105 time_last_calc_ = time_now;
106 }
107 return frame_ratio_;
108}
static Time MonoTime()
Definition time.cc:67
double ToSecond() const
convert time to second.
Definition time.cc:77

◆ GetChannelName()

std::string GeneralChannelMessage::GetChannelName ( void  ) const
inline

在文件 general_channel_message.h65 行定义.

65 {
66 return channel_reader_->GetChannelName();
67 }

◆ has_message_come()

bool GeneralChannelMessage::has_message_come ( void  ) const
inline

在文件 general_channel_message.h75 行定义.

75{ return has_message_come_; }

◆ is_enabled()

bool GeneralChannelMessage::is_enabled ( void  ) const
inline

在文件 general_channel_message.h74 行定义.

74{ return channel_reader_ != nullptr; }

◆ IsErrorCode()

bool GeneralChannelMessage::IsErrorCode ( void *  ptr)
static

在文件 general_channel_message.cc70 行定义.

70 {
72 (GeneralChannelMessage::ErrorCode)(reinterpret_cast<intptr_t>(ptr));
73 switch (err) {
80 return true;
81
82 default: {
83 }
84 }
85 return false;
86}

◆ message_type()

const std::string & GeneralChannelMessage::message_type ( void  ) const
inline

在文件 general_channel_message.h72 行定义.

72{ return message_type_; }

◆ NodeName()

const std::string & GeneralChannelMessage::NodeName ( void  ) const
inline

在文件 general_channel_message.h79 行定义.

79{ return node_name_; }

◆ Render()

int GeneralChannelMessage::Render ( const Screen s,
int  key 
)
overridevirtual

实现了 RenderableMessage.

在文件 general_channel_message.cc141 行定义.

141 {
142 switch (key) {
143 case 'b':
144 case 'B':
145 current_state_ = State::ShowDebugString;
146 break;
147
148 case 'i':
149 case 'I':
150 current_state_ = State::ShowInfo;
151 break;
152
153 default: {
154 }
155 }
156
157 clear();
158
159 int line_no = 0;
160
162 s->AddStr(0, line_no++, "ChannelName: ");
163 s->AddStr(channel_reader_->GetChannelName().c_str());
164
165 s->AddStr(0, line_no++, "MessageType: ");
166 s->AddStr(message_type().c_str());
167
168 if (is_enabled()) {
169 switch (current_state_) {
170 case State::ShowDebugString:
171 RenderDebugString(s, key, &line_no);
172 break;
173 case State::ShowInfo:
174 RenderInfo(s, key, &line_no);
175 break;
176 }
177 } else {
178 s->AddStr(0, line_no++, "Channel has been closed");
179 }
181
182 return line_no;
183}
const std::string & message_type(void) const
void AddStr(int x, int y, ColorPair color, const char *str) const
Definition screen.cc:152
void SetCurrentColor(ColorPair color) const
Definition screen.cc:124
void ClearCurrentColor(void) const
Definition screen.cc:145
@ WHITE_BLACK
Definition screen.h:39

◆ set_message_type()

void GeneralChannelMessage::set_message_type ( const std::string &  msgTypeName)
inline

在文件 general_channel_message.h69 行定义.

69 {
70 message_type_ = msgTypeName;
71 }

友元及相关函数文档

◆ CyberTopologyMessage

friend class CyberTopologyMessage
friend

在文件 general_channel_message.h199 行定义.

◆ GeneralMessage

friend class GeneralMessage
friend

在文件 general_channel_message.h200 行定义.


该类的文档由以下文件生成: