MyHandler.h中RTSP流的连接
2017-03-08 10:37
92 查看
MyHandler向外部提供了一个接口connect来完成RTSP流的连接。
下面贴出安卓N版本MyHandler::connect原文:
下面贴出安卓N版本mConn->observeBinaryData(notify)的调用流程:
小结:MyHandler函数提供的connect函数接口对RTSP流的连接是通过MyHandler应有的ARTSPConnection对象的引用mConn提供的connect函数来完成对RTSP流的连接的。
在连接前设置了ARTSPConnection对象mConn的成员对象mObserveBinaryMessage,即完成这个消息引用的设置,消息名为’biny’,消息处理者为MyHandler,对这个消息的处理将会在MyHandler::onMessageReceived的case ‘biny’处理分支里。
下面贴出安卓N版本MyHandler::connect原文:
void connect() { //下面是注册两个handler,mConn(sp<ARTSPConnection>)和mRTPConn(sp<ARTPConnection>) //注册后mConn这个handler与looper()得到的looper绑定在一起 //mRTPConn这个handler与mNetLooper这个looper绑定在一起 looper()->registerHandler(mConn); (1 ? mNetLooper : looper())->registerHandler(mRTPConn); //新建立一个通知消息notify作为参数传递给observeBinaryData函数 //注意:notify消息创建传递的handler是this,也就是MyHandler,那么对消息名为'biny'的消息notify的处理在MyHandler::onMessageReceived的case 'biny'处理分支里 //mConn->observeBinaryData(notify)函数的功能在下文介绍 sp<AMessage> notify = new AMessage('biny', this); mConn->observeBinaryData(notify); //新建一个应答消息,消息名为'conn',消息的处理者为this,也即MyHandler //相应的对消息名为'conn'的消息reply处理就会在MyHandler::onMessageReceived的case 'conn'分支里 //mOriginalSessionURL.c_str()为会话的url,也就是需要连接的RTSP源的地址 //将参数mOriginalSessionURL.c_str()和reply传递给mConn(sp<ARTSPConnection>)的connect函数来完成RTSP流的连接 //mConn(sp<ARTSPConnection>)的connect函数后续的文章向大家介绍 sp<AMessage> reply = new AMessage('conn', this); mConn->connect(mOriginalSessionURL.c_str(), reply); }
下面贴出安卓N版本mConn->observeBinaryData(notify)的调用流程:
==> mConn->observeBinaryData(notify) ==> void ARTSPConnection::observeBinaryData(const sp<AMessage> &reply) { //新建消息msg,消息名为kWhatObserveBinaryData,消息的处理者为this。也即ARTSPConnection //则对消息名为kWhatObserveBinaryData的消息msg的处理就是在ARTSPConnection::onMessageReceived的case kWhatObserveBinaryData处理分支 //将传递来的参数即消息reply的引用设置到"reply"字段中 sp<AMessage> msg = new AMessage(kWhatObserveBinaryData, this); msg->setMessage("reply", reply); msg->post(); } ==> void ARTSPConnection::onMessageReceived(const sp<AMessage> &msg) { switch (msg->what()) { case kWhatConnect: onConnect(msg); break; case kWhatDisconnect: onDisconnect(msg); break; case kWhatCompleteConnection: onCompleteConnection(msg); break; case kWhatSendRequest: onSendRequest(msg); break; case kWhatReceiveResponse: onReceiveResponse(); break; case kWhatObserveBinaryData: { //对消息名为kWhatObserveBinaryData的处理 //从该消息的"reply"字段得到reply消息的引用 CHECK(msg->findMessage("reply", &mObserveBinaryMessage)); break; } default: TRESPASS(); break; } }
小结:MyHandler函数提供的connect函数接口对RTSP流的连接是通过MyHandler应有的ARTSPConnection对象的引用mConn提供的connect函数来完成对RTSP流的连接的。
在连接前设置了ARTSPConnection对象mConn的成员对象mObserveBinaryMessage,即完成这个消息引用的设置,消息名为’biny’,消息处理者为MyHandler,对这个消息的处理将会在MyHandler::onMessageReceived的case ‘biny’处理分支里。
相关文章推荐
- TNS-12519与processes参数设置;jdbc 连接oracle 报 ORA-12519, TNS:no appropriate service handler found 问题解决
- ARTSPConnection对RTSP流的连接过程
- Linux下巧用my.cnf,mysql连接服务器不需要输入账号密码信息
- linux服务器中mysql 设置远程连接配置文件my.cnf 被分割情况
- android之handler和异步连接服务器
- Linux下,巧用my.cnf,mysql连接服务器不需要输入账号密码信息
- progressBar +handler+textview进度条与textview显示的数据连接,并跳转
- 一些数据连接:What I have done in the past year:my old code "DataSet"
- jdbc连接数据库的时候,显示出乱码。所以修改my.ini下的编码格式,把utf-8改为gbk,但是保存的时候出现说my.ini拒绝访问的情况。保存不成功,希望大家能够帮我解决,谢谢!
- MyHandlerFactory
- ORA-12519, TNS:no appropriate service handler found(数据库上当前的连接数目已经超过最大值)
- Android_Handler连接网络时显示进度条
- MyHandler.h对消息"accu"的处理
- 数据库连接时报:ORA-12519, TNS:no appropriate service handler found
- solr SearchHandler扩展,解决httpclient连接问题以及对连接异常的容错处理
- VC连接MYSQL错误资料收集my_real_connect
- ARTSPConnection::performConnect函数完成RTSP流的连接
- Handler进行网络连接获取数据
- www.myjavaserver.com免费空间中Hypersonic 数据库的连接
- 拦截器MyHandlerInterceptor和MyWebConfigurer