java ice开发_ice开发流程(一)

这一篇,我们先讲一些跟ice有关的接口函数的设计

我们仿照icedemo写两个结构体

struct zktrans_nat_cfg

{

/** STUN srv */

const char *stun_srv;

int stun_port;

/** TURN srv */

const char *turn_srv;

int turn_port;

const char *turn_username;

const char *turn_passwd;

/** callback */

PFN_zktrans_nat_cb_rtp cb_rtp;

PFN_zktrans_nat_cb_rtcp cb_rtcp;

PFN_zktrans_nat_cb_state cb_state;

void *userptr;

};

struct zktrans_nat_t

{

zktrans_nat_cfg cfg;// 用户配置信息

pj_caching_pool cp;

pj_pool_t *pool;

pj_ice_strans_cfg ice_cfg;

pj_ice_strans *ice_strans;

/** 保存本地, 对方 sdp 字符串 */

char *local_sdp, *remote_sdp;

pj_thread_t *thread;

pj_bool_t thread_quit_flag;

char *stun_srv, *turn_srv, *turn_user, *turn_passwd;

PFN_zktrans_nat_cb_rtp rtp_cb;

PFN_zktrans_nat_cb_rtp rtcp_cb;

void *userptr;

pj_thread_t *th_rtp, *th_rtcp;

pj_thread_desc th_rtp_desc, th_rtcp_desc;

pj_sockaddr def_rtp, def_rtcp;

};

1 结构体配置及库初始化 这一步主要围绕zktrans_nat_t 结构体中的ice_cfg这个变量展开。

int zktrans_nat_send_rtp(zktrans_nat_t *trans,const char *data,int len)

{

static bool _inited = false;

if(!_inited)// lib initialize

{

pj_init();

pjlib_util_init();

pjnath_init();

_inited = true;

}

zktrans_nat_t *ins =new zktrans_nat_t;

ins->cfg =*cfg;

ins->ice_strans=0;

pj_cacing_pool_init(&init->cp,0,0);

//default ice stream trans cfg

pj_ice_strans_cfg_default(&ins->ice_cfg);

ins->ice_cfg.stun.cfg.pf=&ins->cp.factory;

//ins->pool=pj_pool_create(&ins->cp.factory,"zktrans_nathlp",512,512,0);

//time heap

pj_timer_heap_create(ins->pool,100,&ins->ice_cfg.stun.cfg.timer_heap);//创建定时器堆,最多可放入100个定时器

//ioqueue

pj_ioqueue_create(ins->pool,16,&ins->ice_cfg.stun_cfg.ioqueue);

ins->quit=false;

// start worker thread for timer & ioqueue

pj_thread_create(ins->pool,"zktrans_nathlp poll thread",_poll_worker_thread,ins,0,0,&ins->worker_thread);

ins->local_stun_server=0,ins->local_turn_server=0,ins->local_turn_user=0,ins->local_turn_passwd=0;

if(ins->cfg.stun_srv)

{

ins->local_stun_server=strdup(ins->cfg.stun_srv);

ins->ice_cfg.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值