阅读Sofia-SIP源码 - su模块 - su_log.c/su_log.h

阅读Sofia-SIP源码三 源码文件结构 源码文件结构 阅读详情


su.log.h

首先看头文件。最重要的莫过于su_log_t结构体了:

/** Type of log structure. */
typedef struct su_log_s su_log_t;

/** Prototype for logging function */
typedef void (su_logger_f)(void *stream, char const *fmt, va_list ap);

/** Log object. */
struct su_log_s {
  int          log_size;
  char const  *log_name;
  char const  *log_env;
  unsigned     log_default;
  unsigned     log_level;
  int          log_init;

  su_logger_f *log_logger;
  void        *log_stream;
};

结构体本身并不复杂。包括结构体对象空间大小、日志名称、日志的环境变量名、日志等级(包括缺省)、日志是否初始化标志、日志输出函数和日志流对象指针。

然后定义了一个初始化结构体变量的宏,可以用做右值。

/** Initialize a su_log_t structure */
#define SU_LOG_INIT(name, env, level) \
  { sizeof(su_log_t), name, env, level, SU_LOG_MAX, 0, NULL, NULL, }


接着看到了一个之前未见过的用法:

SOFIAPUBFUN void su_log(char const *fmt, ...)
  __attribute__ ((
阅读Sofia-SIP源码 - su模块 - su.h dsf 阅读详情

相关推荐

阅读Sofia-SIP源码 - su模块 - su.c

现在进入到su.c文件内看看具体如何做到跨平台效果的。在su.h头文件内为了跨平台目的而重新定义了一套api,通用的socket描述符类,以及相应的结构体。 su_init/su_deinit int su_init(void) { #if HAVE_OPEN_C char apname[60]; su_socket_t s; #endif su_home_threa

Neohan的专栏 2020

阅读Sofia-SIP源码 - su模块 - su_default_log.c/su_global_log.c

之前一直提到:未看到过任何详细初始化su_log_t结构体变量的代码。可以说,su_default_log.h代码向我们展示了如何详细初始化su_log文件中申明的su_log_default变量。 su_log_t su_log_default[1] = {{ sizeof(su_log_t), "sofia", /* Log name */ "SOFIA_DEBUG",

Neohan的专栏 1120

阅读Sofia-SIP源码五 源码文件文档化的注释

偶然看到Sofia wiki中某一个头文件的文档页面时,突然觉得像是明白了如何在头文件中写那些Doxygen可以使用的注释内容了。就以sofia-sip/su_types.h头文件为例说明。 #ifndef SU_TYPES_H /** Defined when has been included */ #define SU_TYPES_H上面那张图对应的是上面这段代码。这是介

Neohan的专栏 1203

阅读Sofia-SIP源码 - su模块 - su_configure.h/su_config.h/su_types.h

从Visual Studio 2010中打开SofiaSIP解决方案。在libsofia_sip_ua工程下的Header Files/win32 headers子目录下可以看到su_configure.h文件。我本来想选取su_types.h头文件来先分析。但我在su_types.h头文件的开始处看到了su_configure.h头文件。这让我想到任何一个工程,照理说都应该有一个初始确定环境信息

Neohan的专栏 1241

阅读Sofia-SIP源码 - su模块 - su_alloc.c/h

阅读Sofia-SIP源码 - su模块 - su_alloc.c/h

Neohan的专栏 1356

Sofia-SIP辅助文档八 - Sofia SIP用户代理库 - "sresolv" - 异步DNS解析

http://sofia-sip.sourceforge.net/refdocs/sresolv/index.html,翻译自官网的这张网页。

Neohan的专栏 1024

FreeSWITCH 1.10 源码阅读(4)-从呼入处理分析核心状态机

在 FreeSWITCH 1.10 源码阅读(3)-sofia 模块原理及其呼入处理流程 中笔者分析了 sofia 模块对底层 Sofia-SIP 协议栈的封装使用,而实际上呼叫进程的推进是由上层的状态机流转完成处理的。通常一通会话的完整生命周期如下,大致可以将其划分为 3 个阶段:FreeSWITCH 具有非常典型的分层结构,这一点也体现在 SIP 会话交互流程中,如下是一个简单示意图如下是 FreeSWITCH 对一通会话完整生命周期处理的源码时序,部分触发步骤有所省略,读者可结合 FreeSWITCH

谈谈1974 6343

sofia sip协议栈

sofia-sip协议栈,可用于开发ip电话,比较轻巧,支持多系统。

一个SIP协议栈的实现源码

一个SIP协议栈的实现源码,对sip协议进行了完整的封装。 Implementation of a SIP protocol stack source code, to sip protocol complete package.

开源软交换系统:freeSwitch架构设计分析

介绍freeswitch源码结构

microsip 源代码

MicroSIP-源代码,提供简单sip开发

Android逆向分析

Android 逆向开发是指对已发布的 Android 应用进行分析和破解,以了解应用程序的内部工作原理,获取应用程序的敏感信息,或者修改应用程序的行为。Android应用 Java编写的,利用Android SDK编译代码,并并且把所有的数据和资源文件打包成一个APK(Android Package)文件这是一个后缀名为.apk的压缩文件,apk文件中包含了一个Anddroid应用程序的所有内容,是Android平台用于安装应用程序的文件。

qq_51598534的博客 6293

lidar360 V8.0 & lidar360MLS V8.0雷达点云数据处理软件

机载林业 — 基于机载激光雷达点云数据提取一系列森林结构参数(如:高度分位数、叶面积指数、郁闭度等),分割单木并提取单木参数(包括树的位置、树高、胸径、枝下高、冠幅等属性),利用软件的多种回归分析功能可以结合地面调查数据反演森林生物量、蓄积量等功能参数。还可以生成等高线、山体阴影、坡度、坡向、粗糙度等多种产品。分类 — LiDAR360提供多种分类功能,包括地面点分类、模型关键点分类、选择区域地面点分类、机器学习模型分类(可高效地分离建筑、植被、路灯等通用类别)、深度学习模型分类、自定义深度学习分类等。

2403_83796253的博客 5146

增量式PID的P和I怎么理解(一)

增量式PID的P、I理解之推翻片 据我所知的资料里关于PID三个参数的理解是这样的:(我这里只说P和I,先不说D) P的作用:比例P可以加快系统调节速度,P过小调节时间变长,响应性不够,P越大响应性越高超调也越严重,过大的P会使系统振荡。 I的作用:消除静差,提高控制精度,I越大越滞后,过大会使系统振荡。 ...

fangchenglia的博客 1万+

麦克斯韦电磁场理论

1)从知识先后上说:麦克斯韦方程组为理解光的传播、反射、折射等现象提供了理论基础。不理解基础,怎么能理解上层建筑。2)从如何学懂上说,把基础学习的越牢,越深刻,后续学习上层建筑就会水到渠成一些,不会越学越多疑问。而是越学越少疑问。

weixin_55255438的博客 2824

智能测试策略优化:平衡覆盖率、时间和资源

在软件开发过程中,测试是确保软件质量的关键环节。然而,测试工作往往面临着诸多挑战,其中如何在保证测试覆盖率的前提下,合理分配时间和资源是一个核心问题。本文章的目的在于探讨智能测试策略的优化方法,帮助软件测试团队在有限的时间和资源条件下,实现尽可能高的测试覆盖率。文章的范围涵盖了智能测试策略的核心概念、算法原理、数学模型、实际应用案例以及相关工具和资源等方面。本文将按照以下结构进行组织:首先介绍智能测试策略优化的背景和相关概念,包括核心术语和缩略词的定义;

AIGC应用创新大全的博客 619

【26美赛F题 To Gen-AI, or Not To Gen-AI】(MCM/ICM)思路解析及代码分享

摘要:本文研究生成式人工智能(Gen-AI)对三类职业(STEM、技能型工艺、艺术)的影响,建立量化模型预测未来10-20年岗位需求变化。通过分析AI替代效应($R_{sub}(t)$)和增强效应($R_{enh}(t)$),提出差异化高校课程调整策略:STEM专业需加强AI集成能力,技能型工艺专业应结合智能工具与实操训练,艺术专业需平衡AI创作辅助与原创性培养。模型表明,高校通过针对性课程优化可提升毕业生在AI时代的就业竞争力,为教育决策提供数据支持。(149字)

一键难忘的博客 636

YOLOv8【第二章:卷积创新篇·第23节】一文搞懂,Transformer与卷积混合架构!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》,该专栏持续复现网络上各种热门内容(全网YOLO改进最全最新的专栏,质量分97分+,全网顶流),改进内容支持(分类、检测、分割、追踪、关键点、OBB检测)。且专栏会随订阅人数上升而涨价(毕竟不断更新),当前性价比极高,有一定的参考&学习价值,部分内容会基于现有的国内外顶尖人工智能AIGC等AI大模型技术总结改进而来,嘎嘎硬核。    ✨ 特惠福利:目前活动一折秒杀价!一次订阅,永久免费,所有后续更新内容均免费阅读!

**My Coding Family** 1385

SQL Server数据库备份与恢复

在 SQL Server 中,数据库备份与恢复是保障数据安全的核心操作。

zjw541806的博客 1876

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

上一篇: 阅读Sofia-SIP源码 - su模块 - su.h
下一篇: 阅读Sofia-SIP源码 - su模块 - su.c
Neohan
博客等级 码龄26年 33粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值