摘自:https://blog.csdn.net/m0_47413019/article/details/106729466
写在前面,最近忙于工作与上王者。王者已上,已无它望,哈哈,以后还是保持尽量保证每周一更。
1 、何为连接与会话
开发者要开始使用Sysrepo,首先必须创建一个连接。一个应用程序或者进程即使可以允许创建多个连接,但是一般情况只会创建一个连接。Sysrepo允许同时创建多个连接。简单的举个例子,通常情况下,sysrepo-plugin在init_cb初始时就会创建一个连接,这是一个由sysrepo-plugin与Sysrepo所创建的连接,只要发生异常不释放,该连接会一直存在整个sysrepo-plugin进程的生命周期,此外,例如用户通过sysrepoctl -l |grep ***看某个Yang模型是否已经加载,sysrepoctl应用程序也创建一个短连接,该连接在命令执行结束后立即释放,假如是极端修改,不释放该连接,再使用sysrepocfg来配置runing库,这时有3个与Sysrepo连接。并且3个连接不干扰,也不影响Sysrepo的正常工作。
而会话,是建立在连接之下,一个连接下可以创建多个会话,每个会话都有一个唯一的标识,每个会话总是可以选择一个可随时更改的数据库,使用些会话的所有API调用都将在该数据库下操作。
连接与会话的关系如下所示,可能不是特别准备,但大概就是这个意思。
2、核心数据结构
Connection的数据结构主要是存储Sysrepo连接与Libyang的上下文,该连接所创建的共享内存结构。数据结构定义如下
。。。。。。。
连接与会话核心处就是这4个API函数,其它与连接与会话有关的API都是对相关的补充,想要进一步了解的.请阅读源码.
接下来会分析sysrepo的共享内存机制.SHM机制是新Sysrepo的核心,需要好好说道说道.