RenderWidgetHost继承于IPC::Channel::Listener,所以它必然需要实现Listener::OnMessageReceived纯虚函数。
Chrome对这个函数进行了宏的封装,宏的写法有点类似于MFC/wxWidget的事件响应表,不同点在于Chrome里的宏是对函数的实现封装,而MFC/wxWidget里却是对事件表的初始化。
IPC::Channel::Sender类的实现
class Channel : public Message ::Sender {
// Security tests need access to the pipe handle.
friend class ChannelTest ;
public:
// Implemented by consumers of a Channel to receive messages.
class Listener {
public:
virtual ~ Listener () {}
// Called when a message is received.
virtual void OnMessageReceived ( const Message & message ) = 0;
// Called when the channel is connected and we have received the internal
// Hello message from the peer.
virtual void OnChannelConnected ( int32 peer_pid ) {}
// Called when an error is detected that causes the channel to close.
// This

本文介绍了Chrome中RenderWidgetHost如何处理来自RenderProcess的IPC消息。通过分析`IPC_DEFINE_MESSAGE_MAP`等宏的使用,揭示了Chrome如何根据消息类型调用相应的处理函数,实现了进程间通信的关键步骤。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



