• 11 libubox


    1 libubox

    主要提供事件循环,二进制块格式处理、linux链表实现和一些JSON辅助
    主要包含3个软件包:libuboxjshnlibblobmsg-json


    1.1 libubox

    1、提供多种基础通用功能接口。如:链表、平衡二叉树、二进制块处理、MD5
    2、提供多种sock接口封装
    3、提供事件驱动机制及任务管理功能


    • utils.h
      提供简单实用功能。如:字节序转换、位操作、编译器属性包装、连续的内存分配函数、静态数组大小的宏、base64编码解码等
    • blob.h
      提供二进制数据处理功能。可以创建块数据在socket上发送。整形数字会在libubox库内转换为网络字节序进行处理。二进制的处理方法是创建一个TLV(类型-长度-值)、
    • usock.h
      socket对象封装。
    • uloop.h
      提供时间驱动机制接口。基于epoll来实现的。
      文件描述符fd是由uloop_fd结构来设置
      超时管理由uloop_timeout结构来管理
    libubox常用uloop接口函数
    uloop_fd_add    : 将一个新文件描述符添加到事件处理循环中
    uloop_fd_delete : 将一个文件描述符从事件循环中删除
    uloop_init      : 初始化uloop中epoll_create来创建epoll
    uloop_run       : 进入事件处理循环中
    uloop_done      : 释放uloop中的epoll
    uloop_end       : 设置uloop内部结束循环标志
    uloop_time_set  : 设置定时器超时时间,并添加到链表
    

    1.2 jshn

    jshn封装JSON对象的装换库,用于脚本语言生成JSON对象和将JSON对象数据取出来。
    jshn软件包包含两个文件jshnjshn.sh

    • jshn
      读取JSON格式的字符串,并组合为jshn_add_*命令导出到标准输出stdout
      将环境变量中的设置组合为JSON字符串,并输出到标准输出中
    • jshn.sh
      利用jshn工具对JSON的操作进行更为方便的封装
      JSON格式的字符串在环境变量中导入和导出
      将配置内容设置到环境变量中
      从环境变量中查询配置设置的值
    jshn定义的命令接口含义
    json_init       : 初始化JSON对象
    json_add_string : 增加字符串数据类型,例 json_add_string name zhang
    json_dump       : 以JSON格式输出所有增加的JSON内容
    json_add_init   : 添加整形数据,例 json_add_init 36
    json_add_boolean: 添加布尔类型
    json_load       : 将所有内容读入JSON对象中,并设置到环境变量中
    json_get_var    : 从环境变量中获取JSON对象的值 json_get_var ifdev device 获取device的值并赋值给ifdev变量
    json_get_type   : 从环境变量中获取JSON对象类型,例 json_get_var ifdev device
    json_get_keys   : 从环境变量中获取JSON对象的所有名称
    json_get_values : 从环境变量中获取JSON对象的所有值
    json_select     : 选择JSON对象
    json_add_object : 添加json对象
    json_close_add  : 完成对象添加
    json_add_array  : 增加顺序数组,例如json_add_array study,数组的内容后续通过json_add_string来增加
    json_clean      : 清除jshn所有设置的环境变量
    json_close_array   : 关闭顺序数组的增加
    json_set_namespace : 定义命名空间。及定义设置变量的前缀,将变量区分开
    

    JSON格式

    以左花括符开始,右花括符结束
    名称后有冒号与值分隔,值与名称间使用逗号分隔
    数组,向量,链表使用数组形式储存

    {
            "vlan": {
                    "type-list": [
                            "management"
                    ],
                    "management-list": [
                            "cfg027ec2"
                    ],
                    "management": {
                            "cfg027ec2": {
                                    "enable": "0"
                            }
                    }
            }
    }
    
  • 相关阅读:

    删与改

    基本操作
    名词解释
    Python内置函数(11)——complex
    Python内置函数(10)——float
    Python内置函数(9)——int
    Python内置函数(8)——bool
    Python内置函数(7)——sum
  • 原文地址:https://www.cnblogs.com/burnk/p/15812546.html
Copyright © 2020-2023  润新知