随笔分类 -  技术-C++

摘要:概述 业务测试的过程中,本来有一个时间函数“获取当天剩余时间”,其中使用了localtime()和mktime(),但是在压力测试的过程中发现,两个time函数都不是线程安全的,多线程并发的时候会产生一些随机的错误,结果就是获得的interval时间错误,进而影响到业务流程。 环境 centos:C 阅读全文
posted @ 2024-02-23 17:46 求真得真 阅读(70) 评论(0) 推荐(0) 编辑
摘要:概述 freeswitch 是一款好用的开源软交换平台。 随着voip客户的发展和运营商网络的升级换代,SBC在对接测试中的应用场景越来越多。 freeswitch通过简单的安装配置即可满足大部分SBC的功能需求。 我们需要有一个稳定版本的fs-sbc的安装过程和配置指南。 在这里记录一下新安装的f 阅读全文
posted @ 2022-12-08 17:54 求真得真 阅读(358) 评论(0) 推荐(0) 编辑
摘要:概述 最近在使用freeswitch测试发送DTMF码的时候,碰到一个函数调用流程的问题。 fs本身的模块较多,注册回调函数也比较多且复杂,有时候看到一条日志,却不知道流程的发起端在哪里。 通常我们在梳理代码调用流程的时候有几种方法。 1, 梳理源代码流程,代码太复杂的时候效果差。 2, 在调用函数 阅读全文
posted @ 2022-07-21 18:04 求真得真 阅读(121) 评论(1) 推荐(0) 编辑
摘要:概述 freeswitch 作为开源VOIP软交换,对经过fs的每一通电话都要有足够的控制。 在一通电话呼叫中,通话时长是一个重要的数据,客户在实际使用过程中,会有各种针对呼叫时长的场景需求。 本篇文档讨论fs如何设置最大呼叫时长,并从源代码的角度解析fs的实现原理。 环境 centos:CentO 阅读全文
posted @ 2022-06-15 17:33 求真得真 阅读(393) 评论(0) 推荐(0) 编辑
摘要:概述 freeswitch 在对VOIP语音通话中,可以通过playback命令播放IVR语音文件。 默认情况下,freeswitch支持wav文件,也可以直接播放VOIP中常见编解码的G711文件、G729文件等,但是对mp3是不支持的。 通过查询freeswitch的官方文档,发现mod_sho 阅读全文
posted @ 2022-05-25 17:32 求真得真 阅读(420) 评论(0) 推荐(0) 编辑
摘要:概述 最近因为机房原因,需要把我们的本地代码库做移库操作。 针对gitlab的安装升级操作重新进行了梳理,记录一下。 环境 CENTOS6 CENTOS7 gitlab-ce-8.14.2 GITLAB安装 方法1,下载rpm包安装。 wget https://mirrors.tuna.tsingh 阅读全文
posted @ 2022-05-05 17:06 求真得真 阅读(130) 评论(0) 推荐(0) 编辑
摘要:概述 centos6系统从2020年12月1号开始不再维护,官方的yum源不再可用,同时国内的阿里云镜像和163镜像也都不再可用。 但是我们有一些老的服务器仍然在使用centos6系统版本,依赖库的安装和更新就有了问题。 有问题就有需求,有需求就有解决方案。 yum源 在之前的老文章中,我们发过一个 阅读全文
posted @ 2022-04-06 19:03 求真得真 阅读(906) 评论(1) 推荐(0) 编辑
摘要:概述 freeswitch是一款开源的VOIP软交换平台,功能强大。 在使用fs进行呼叫业务的过程中,我们最常见到的日志就是呼叫通道的启动信息,日志如下 2022-03-03 14:14:30.028832 [NOTICE] switch_channel.c:1133 New Channel sof 阅读全文
posted @ 2022-03-24 09:12 求真得真 阅读(369) 评论(0) 推荐(0) 编辑
摘要:概述 freeswitch是开源、免费的VOIP软交换平台,自带了很多功能各异的模块。 mod_tts_commandline模块,本身没有TTS能力,而是通过调用TTS引擎的命令生成语音文件,tts命令可以配置,最终实现自动TTS语音播放的功能。 今天,我们介绍一下该模块的一般应用方法。 环境 c 阅读全文
posted @ 2022-03-18 22:37 求真得真 阅读(364) 评论(0) 推荐(0) 编辑
摘要:概述 freeswitch核心框架中有一个定时任务系统,在开发过程中用来做一些延时操作和异步操作很方便。 我们在VOIP的呼叫流程中,经常会有一些对实时性要求没那么高的操作,或者会有阻塞流程的操作,我们都可以开启一个定时任务子流程,来达到延时和异步的目标。 下面,我们来对这个任务引擎的代码实现做一个 阅读全文
posted @ 2022-03-02 18:02 求真得真 阅读(154) 评论(0) 推荐(0) 编辑
摘要:概述 freeswitch是由事件驱动的,fs内部有各种事件来标识状态的变化包括呼叫的变化、配置的变化、号码的变化等等。 而一个框架内的事件引擎需要实现哪些基本的功能呢? 让我们来看一下fs的事件引擎是如何实现的。 环境 centos:CentOS release 7.0 (Final)或以上版本 阅读全文
posted @ 2022-02-16 17:55 求真得真 阅读(319) 评论(0) 推荐(0) 编辑
摘要:概述 freeswitch的外围模块是插件式的,可以动态的加载和卸载,使用起来非常的灵活和方便。 如果我们自己来设计一个开源的代码框架,相信这种插件式的模块结构是非常适合多人合作的模式。 本文对fs的模块加载接口进行一些分析和讨论,作为借鉴。 环境 centos:CentOS release 7.0 阅读全文
posted @ 2022-02-09 17:58 求真得真 阅读(216) 评论(0) 推荐(0) 编辑
摘要:概述 在之前的文章中,我们介绍了如何使用fs的event事件机制来获取呼叫的各种信息。 这些event事件一般都是底层模块定义好的,其中的各种信息已经很完备了,日常的开发需求都可以满足。 但是,总有一些场景是无法完全满足的,例如,在fs的注册事件中,就没有X-自定义头域的信息。 在定制化的sip交互 阅读全文
posted @ 2022-01-26 14:03 求真得真 阅读(460) 评论(0) 推荐(0) 编辑
摘要:概述 freeswitch的核心源代码是基于apr库开发的,在不同的系统上有很好的移植性。 APR库在之前的文章中已经介绍过了,APR-UTIL库是和APR并列的工具库,它们都是由APACHE开源出来的跨平台可移植库,不同点在于库中实现的功能接口有区别。 在应用的开发过程中,多线程并发是提高效率的常 阅读全文
posted @ 2021-12-30 11:43 求真得真 阅读(289) 评论(0) 推荐(0) 编辑
摘要:概述 freeswitch的核心源代码是基于apr库开发的,在不同的系统上有很好的移植性。 APR库在之前的文章中已经介绍过了,APR-UTIL库是和APR并列的工具库,它们都是由APACHE开源出来的跨平台可移植库,不同点在于库中实现的功能接口有区别。 在应用的开发过程中,模块内部的消息传递是经常 阅读全文
posted @ 2021-12-22 09:28 求真得真 阅读(198) 评论(0) 推荐(0) 编辑
摘要:概述 VOIP服务器中,对于一通呼叫的管理一定会涉及到呼叫状态的变化,包括初始化、呼叫发起、振铃、接通、结束等各种状态。 呼叫业务流程为了管理呼叫状态的变化,就要用到有限状态机这一概念。 最简单的状态机实现,就是if-else或者switch分支方法。 当状态机的状态变化比较简单明了时,条件分支的写 阅读全文
posted @ 2021-12-15 14:31 求真得真 阅读(423) 评论(0) 推荐(0) 编辑
摘要:概述 freeswitch的核心源代码是基于apr库开发的,在不同的系统上有很好的移植性。 线程读写锁在多线程服务中有重要的作用。对于读数据比写数据频繁的服务,用读写锁代替互斥锁可以提高效率。 由于APR库是跨平台的,而不同平台上的系统接口有区别,所以在APR库中就有一个适配层目录libs\apr\ 阅读全文
posted @ 2021-12-09 19:55 求真得真 阅读(126) 评论(0) 推荐(0) 编辑
摘要:概述 freeswitch的核心源代码是基于apr库开发的,在不同的系统上有很好的移植性。 哈希表在开发中应用的非常广泛,主要场景是对查询效率要求较高的逻辑,是典型的空间换时间的数据结构实现。 大多数的底层库有各自的哈希表实现方法,那么apr库中对于哈希表究竟是如何实现的呢,其中有什么优点和缺点? 阅读全文
posted @ 2021-12-01 11:19 求真得真 阅读(156) 评论(0) 推荐(0) 编辑
摘要:概述 freeswitch的核心源代码是基于apr库开发的,在不同的系统上有很好的移植性。 apr库中的大部分API都需要依赖于内存池,使用内存池简化内存管理,提高内存分配效率,减少内存操作中出错的概率。 在fs的自定义模块开发中,我们也会用到内存池来操作内存,所以要对内存池的基本操作和使用限制有一 阅读全文
posted @ 2021-11-17 20:08 求真得真 阅读(252) 评论(0) 推荐(0) 编辑
摘要:概述 freeswitch依赖库源代码基本都可以在libs目录下找到。 在freeswitch的官方手册中,可以找到freeswitch的依赖库表格,其中freeswitch的core核心代码依赖库主要包括apr、apr-util、pcre、resample、sqlite、srtp、teletone 阅读全文
posted @ 2021-11-10 14:40 求真得真 阅读(264) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示