OpenHarmony源码分析之分布式软总线:trans_service模块(1)/认证通道管理

本文主要分析了OpenHarmony中的trans_service模块,该模块依赖于系统内核的socket通信,负责设备认证通道管理及数据传输。核心功能包括启动监听套接字、创建设备身份认证线程以及执行认证数据处理。trans_service模块通过GCM模块确保数据的加密保护,而具体的认证过程则在authmanager模块实现。
摘要由CSDN通过智能技术生成

一、 概述

trans_service模块基于系统内核提供的socket通信,向authmanager模块提供设备认证通道管理和设备认证数据的传输;向业务模块提供session管理和基于session的数据收发功能,并且通过GCM模块的加密功能提供收发报文的加解密保护。

二、 源码分析

  1. 入口函数为StartListener(),主要是针对Linux系统内核,其它系统之后会有补充,解析如下
/*
函数功能: 启动监听其他设备的连接请求或者新数据响应
函数参数:callback  回调函数的地址;ip  需要绑定的server端ip地址
函数返回值:返回建立TCP连接的套接字的port
详细:监听器的主要作用是监听新连接请求和已建立连接的数据通信。
    1.首先作为server端产生监听套接字fd,然后绑定端口和IP,这里的端口绑定采用了动态分配的方式。
    2.然后创建子线程执行监听任务,采用的是select的io复用方式来处理并发请求。
*/
int StartListener(BaseListener *callback, const char *ip)
{
   
    if (callback == NULL || ip == NULL) {
   
        return -DBE_BAD_PARAM;
    }

    g_callback = callback;
	//产生并初始化监听描述符,传入的SESSIONPORT为0,绑定0端口号的意义在于动态选取本地可用端口号,不用考虑端口重用的问题
    int rc = InitListenFd(ip, SESSIONPORT);
    if (rc != DBE_SUCCESS) {
   
        return -DBE_BAD_PARAM;
    }
	//捕获SIGPIPE信号,SIG_IGN表示忽视该信号,不执行SIGPIPE默认操作:终止程序
    signal(SIGPIPE, SIG_IGN);
    //初始化线程属性,"auth"为线程名,线程栈大小为0x800 | MIN_STACK_SIZE,单位为字节,线程优先级为20
    ThreadAttr attr = {
   "auth", 0x800, 20, 0, 0};
    //创建子线程进行监听任务,包括设备认证过程中的新连接或者新数据
    register ThreadId threadId = (ThreadId)AuthCreate((Runnable)WaitProcess, &attr);
    if (threadId == NULL) {
   //创建子线程失败,则返回-1
        SOFTBUS_PRINT("[TRANS] StartListener AuthCreate fail\n");
        return -1;
    }
    //返回建立TCP连接的套接字的port,因为这里绑定的端口是0,其实是内核随机分配的端口号
    return GetSockPort(g_listenFd);
}
  1. 调用 InitListenFd() 函数产生并初始化监听套接字fd
/*
函数功能: 产生并初始化监听描述符
函数参数:ip    server端IP地址;port    server端端口
函数返回值:成功返回0,失败返回错误码
详细:
*/
static int InitListenFd(const char *ip, int port)//
{
   
    if (ip == NULL || g_listenFd != -1) {
   
        return -DBE_BAD_PARAM;
    }

    if (strncmp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值