概况: Janus http 3条消息处理create,attach,message:join,目的是交换sdp. http线程和线程池是N对1.? http线程和线程池线程同步:msg->signal==>msg->cond_wait http线程和client线程同步:msg->connection 基于msg驱动,没有为每个client创建对象. janus_http.c是通信层:输入输出接口都在这里.(http session也是为通信服务的) janus.c是控制层:线程池和路由中心都在这里
流程图: request: http线程将消息放入线程池;线程池内业务逻辑处理. respond:将结果发送到janus发送接口,线程池发给http线程,http线程最终调用libmichttpd respond? ? ? ? ? ? ? ? 将msg放入线程池,respond也是基于msg.wait 找到对应的http线程
橘黄色模块是http线程入口和出口. 浅粉色模块是线程池入口和处理.蓝色模块是业务逻辑处理函数
log: post log: http recv local ip 10.10.110.3 from 10.10.135.44: { "janus": "create", "transaction": "WSADXD"} get log:? get event: http://218.206.90.6:8088/janus/1453015477720291?rid=63060478296514&maxev=1
|