FREESWITCH SEESION

SESSION

SESSIONFS的核心概念之一,所以需要拿出来专门的分析下。

从以下几个方面进行分析,结构类型,资源的管理,对于呼叫的意义,规格。

1、结构类型

每一次呼叫会申请一个session,并为每个申请的session申请一个channelChannel为每次呼叫的实体,呼叫中状态机状态就是从channel中获取。新申请的channelstateCS_NEWrunning_stateCS_NONE

相互关系为:

 

SESSION结构为:switch_core_session

CHANNEL结构为:switch_channel

2、资源管理

FS运行时可能存在多路呼叫,即会产生多个SESSION。对于SESSION的查找和管理通过全局结构变量session_manager实现,其keyUUID

FS运行中会执行大量的回调函数。SESSION中的变量endpoint_interface保存了全局函数指针endpoint_interface的地址。从而实现了会话的入局回调,出局回调函数的统一个调用。

FS主要是C语言完成的,所以要小心的保护好全部变量的值,在申请SESSION的时申请了各种类型的信号量,用来保证系统的正常的运行。

FS也是消息驱动的系统。所以申请SESSION的时候申请了2个消息队列,3个事件队列(FIFO也是FS的一个核心概念,以后进行描述,这里不再详细记录。)

你可能感兴趣的:(switch)