UC故事 2012/04/26
2012-04-26 08:07
351 查看
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中找不到呢?
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中找不到呢?
相关文章推荐
- UC故事 2010-11-27
- UC故事2011/11/19
- UC故事 2011/12/2
- UC故事 回顾 2012/04/05
- UC故事2012/04/23
- UC故事2012/05/03 - 2 Server 文档
- IPv6 和 UC 不得不说的故事
- UC故事 2011/06/23 - 1
- UC故事2011/12/03 - 1 线程相关的东东
- UC故事 2011/12/10 setup env
- UC故事 2011/12/19 build linix servers
- UC故事2012/05/04 Server 文档
- UC故事2012/05/08 Server 文档
- UC(Unified Communication)统一通讯故事 2010-11-3
- UC 故事 05/13/2011 杂记:代码
- UC故事2011/12/03 - 2 总结与规划
- UC故事2012/04/28
- UC故事 2011-04-11
- UC故事 05/13/2011 - 2:代码
- UC故事2011/11/20 - 1