WebRtc AllocationSequeue类随笔

AllocationSequeue类

成员变量:

BasicPortAllocatorSession    *session_;
NetWork	                     *network_;
PortConfiguration			 *config_;

UDPPort						 *udp_port_;
AsyncPacketSocket			 *udp_socket_;

AllocationSequeue::State	 state_;	//[kInit, kRunning, kStoped, kCompleted]
unsigned int				 flags_;
int 						 phase_;	//[PHASE_UDP, PHASE_RELAY, PHASE_TCP]


关键接口函数:

void Init();

void Start();
void Stop();

void OnMessage(Message *msg);

信号:
sigslot::signal1<AllocationSequeue *> SignalPortAllocationComplete;

对应的槽:
BasicPortAllocatorSession::OnPortAllocationComplete;


使用方法:
AllocationSequeue *sequeue = new AllocationSequeue(BasicPortAllocatorSession *p, NetWork *p1, config, flags);
sequeue->SignalPortAllocationComplete.connect(&BasicPortAllocatorSession::OnPortAllocationComplete);
sequeue->Init();
sequeue->Start();


void Init()方法:

udp_socket_.reset();	//创建udp_socket_
udp_socket_->SignalReadPacket.connect(this, &AllocationSequeue::OnReadPacket);


void Start()方法流程:

state_ = kRunning;
session_->network_thread()->Post(this, MSG_ALLOCATION_PHASE);
previous_best_ip_ = network_->GetBestIP();

void OnMessage()方法流程主要时处理MSG_ALLOCATION_PHASE消息


CreateUDPPorts()流程:

udp_port_ = UDPPort::Create();
udp_port_->SignalDestroyed.connect(this, &AllocationSequeue::OnPortDestroyed);
udp_port_->set_server_address(stun server ip);

session_->AddAllocatedPort(udp_port_, this, true);	//!!!

udp_socket_相关的信号槽:
SignalReadPacket.connect(this, &AllocationSequeue::OnReadPacket);

void OnReadPacket()内部逻辑:
udp_port_->HandleIncomingPacket();	//将收到数据传递给UDPPort对象

-----------------------分割线------------------------

void Start() ----Post----> void OnMessage() -> CreateUDPPorts() -> BasicPortAllocatorSession::AddAllocatedPort()

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

airmanisvip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值