虽然上面介绍了这么多消息处理:从网络接收到数据,再从数据解释到数据获取,但没有一个清晰的流程,下面就来详细地分析这个数据流程是怎么样调用的。具体调用流程如下:
1.
LLAppViewer::idle()
空闲时处理函数。
2.
LLAppViewer::idleNetwork()空闲时处理网络事件。
3.
LLMessageSystem::checkAllMessages() 检查消息系统所有消息。
4.
LLMessageSystem::checkMessages()
检查一下是否有消息接收到。
5.
LLTemplateMessageReader::readMessage()读取当前的消息。
6.
LLTemplateMessageReader::decodeData()
把当前的消息解包。
7.
LLMessageTemplate::callHandlerFunc() 回调处理这个消息的函数。
8.
LLHUDManager::processViewerEffect()
这个消息是处理视图效果。
9.
LLHUDEffect::getIDType()
获取ID的类型。
10.
LLMessageSystem::getUUIDFast()
取得消息的UUID。
11.
LLTemplateMessageReader::getUUID()
从服务器传送回来的消息包里获取UUID数据。
通过上面的流程,就可以分析服务器发来的数据,并且应用到当前界面里。其它类型的数据也是这样不断从服务器获取的,可以跟服务器同步数据,实现显示界面不断地更新。