虽然上面介绍了这么多消息处理:从网络接收到数据,再从数据解释到数据获取,但没有一个清晰的流程,下面就来详细地分析这个数据流程是怎么样调用的。具体调用流程如下:
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数据。
通过上面的流程,就可以分析服务器发来的数据,并且应用到当前界面里。其它类型的数据也是这样不断从服务器获取的,可以跟服务器同步数据,实现显示界面不断地更新。