UC故事 2012/04/26

 

1. client/server browsing

Q: 以下为对应关系?

session::CConference <-> gcc::InfoSvrConf

session::CConfSession <-> gcc:InfoSvrSession

 

Note: :CConfDetailInfo is used by both client and gcc !

 

* biz concept

conference: status chart ?  

sessinon: status chart ? 

 

* data 传到component的路径

connection -> CConference::onReceiveData -> CConfSession::OnReceiveData -> (ISessionClientSink) Component:OnReceiveData

 

* 几个可能需要改进的方面

 # session代码中根据session type或pdu type或DATA_FLAG做的switch,不利于新功能加入

 # client与serer之间关于session的create/enroll的交互,可能可以优化,减少交互次数

 

* 关于T120系列的标准

http://www.itu.int/rec/T-REC-T.122-199802-I/en

 

* MCS与Port

 # MCS注册了很多不同种类的port

 # 其核心功能是SendData,转发数据,会调用Port::SendData

 # 转发过程中,会使用Route Table提供的信息

 

* 线程有关的特殊代码

McsThreadProxy::CreateChannel(CInfoSID& channelID, DWORD channelEx)
{

 ...
 RtResult rv = _GetInfoSIDSequence(CInfoSID::ITYPE_CHANNEL, channelID);
 RT_ASSERTE_RETURN( RT_SUCCEEDED(rv) , RT_ERROR_FAILURE );
 Function::Functor* pFunctor = Bind::bind(_pMcs, &Mcs::CreateChannel, channelID, channelEx, (IInfoSvrPort*)NULL , TRUE );
 return CThreadSwitch::SwitchToNetThreadSyn(pFunctor);
}

Q: What's up here ?

    A:在net thread中执行Mcs::CreateChannel   2012/07/14

 

* ThreadProxy::SendData

其实质就是向network thread / user thread post一个event

 Function::Functor* pFunctor = Bind::bind(_pMcs,
           &Mcs::EvtSendData,
           pSrcPort,
           DstID,
           Data.DuplicateChained(),
           DataFlag,
           DataPriority);
 CThreadSwitch::SwitchToNetThreadAsyn(pFunctor);
 return RT_OK;

..

}

 

RtResult CThreadSwitch::SwitchToThreadAsyn(Function::Functor* pFunctor ,
             CRtThreadManager::TType dwRtThreadID )
{
 RT_ASSERTE( pFunctor != NULL );
 
 CRtThread* pUserThread = CRtThreadManager::Instance()->GetThread(dwRtThreadID);
 if( NULL == pUserThread )
 {
  return RT_ERROR_NULL_POINTER;
 }
 
 return pUserThread->GetEventQueue()->PostEvent(pFunctor);
}

 

namespace Function
{
 
 class Functor : public IRtEvent
 {
 ,,,
 public:
  virtual RtResult OnEventFire()
  {
   return RT_OK;
  }
 };

...

}

 

Q:这里的Bind::bind与Function::Functor到底为何物 ???

 

2. iPhone/iPad audio  

 

3. 杂想杂问

Q:网络已经断掉这个消息如何通知到Client的应用层的?

Q:ThreadProxy::SendData方法why是灰色的并且在VC的method list search中找不到呢?

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值