一种网口状态管理方法、状态机引擎装置、设备及介质与流程

文档序号:20779543发布日期:2020-05-19 21:06阅读:179来源:国知局
一种网口状态管理方法、状态机引擎装置、设备及介质与流程

本申请涉及通信技术领域,特别涉及一种网口状态管理方法、状态机引擎装置、电子设备及计算机可读存储介质。



背景技术:

在网络通信过程中,解析通信协议的驱动需要对网络端口即网口进行状态管理,例如启动本地网口、通过本地网口进行远端设备发现等。因此,一般均为设备的网口设置多种状态,以及在多种激励信号下的状态转换机制。

在执行网口状态管理时,现有技术中的相关程序逻辑一般是在一个函数中直接进行处理,需要进行大量判断,产生大量的判断分支处理;进而导致程序代码的结构较为冗余,查找困难,不便于进行维护,更严重降低了故障问题的定位效率。

鉴于此,提供一种解决上述技术问题的方案,已经是本领域技术人员所亟需关注的。



技术实现要素:

本申请的目的在于提供一种网口状态管理方法、状态机引擎装置、电子设备及计算机可读存储介质,以便简化代码结构,提高可维护性和可扩展性,并提高故障问题的定位和处理效率。

为解决上述技术问题,第一方面,本申请公开了一种网口状态管理方法,包括:

获取在预设状态机的状态存储库中记录的目标网口的当前状态;

当接收到当前激励信号后,在所述预设状态机的状态转换信息库中查询与所述当前状态和所述当前激励信号对应的状态转换操作信息;所述状态转换信息库中预先存储有所述目标网口在各状态下接收到各激励信号后待执行的状态转换操作的信息,所述状态转换操作的信息包括待跳转的下一状态及对应的跳转条件;

根据查询到的所述状态转换操作信息中的跳转条件,将所述预设状态机由所述当前状态跳转至下一状态,以便执行与所述下一状态对应的网口操作。

可选地,每个所述状态转换操作的信息为一个数组元素,所述状态转换信息库以数组的形式存储各个状态转换操作的信息;所述数组的元素个数为所述目标网口的状态总数与激励信号总数的乘积。

可选地,当查询到的所述状态转换操作信息中包括多个下一状态及对应的跳转条件时,所述根据查询到的所述状态转换操作信息中的跳转条件,将所述预设状态机由所述当前状态跳转至下一状态,包括:

将当前已满足的跳转条件所对应的下一状态确定为目标状态;

将所述预设状态机由所述当前状态跳转至所述目标状态。

可选地,所述状态转换信息库中存储的各状态转换操作的信息中还包括跳转后待执行操作函数;

所述执行与所述下一状态对应的网口操作,包括:执行与所述目标状态对应的跳转后待执行操作函数。

可选地,在所述将所述预设状态机由所述当前状态跳转至下一状态之后,还包括:

对所述预设状态机进行状态校验,以便在校验结果异常时进行报错。

可选地,在所述将所述预设状态机由所述当前状态跳转至下一状态之后,还包括:

记录所述预设状态机的状态跳转路径。

第二方面,本申请还公开了一种状态机引擎装置,包括:

获取模块,用于获取在预设状态机的状态存储库中记录的目标网口的当前状态;

查询模块,用于当接收到当前激励信号后,在所述预设状态机的状态转换信息库中查询与所述当前状态和所述当前激励信号对应的状态转换操作信息;所述状态转换信息库中预先存储有所述目标网口在各状态下接收到各激励信号后待执行的状态转换操作的信息,所述状态转换操作的信息包括待跳转的下一状态及对应的跳转条件;

跳转模块,用于根据查询到的所述状态转换操作信息中的跳转条件,将所述预设状态机由所述当前状态跳转至下一状态,以便执行与所述下一状态对应的网口操作。

可选地,还包括:

校验模块,用于在所述跳转模块将所述预设状态机由所述当前状态跳转至下一状态之后,对所述预设状态机进行状态校验,以便在校验结果异常时进行报错。

可选地,每个所述状态转换操作的信息为一个数组元素,所述状态转换信息库以数组的形式存储各个状态转换操作的信息;所述数组的元素个数为所述目标网口的状态总数与激励信号总数的乘积。

可选地,当查询到的所述状态转换操作信息中包括多个下一状态及对应的跳转条件时,所述跳转模块具体用于:

将当前已满足的跳转条件所对应的下一状态确定为目标状态;

将所述预设状态机由所述当前状态跳转至所述目标状态。

可选地,所述状态转换信息库中存储的各状态转换操作的信息中还包括跳转后待执行操作函数;

所述跳转模块具体用于:通过执行与所述目标状态对应的跳转后待执行操作函数,以实现与所述下一状态对应的网口操作。

可选地,还包括:

记录模块,用于在所述将所述预设状态机由所述当前状态跳转至下一状态之后,记录所述预设状态机的状态跳转路径。

第三方面,本申请还公开了一种电子设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序以实现如上所述的任一种网口状态管理方法的步骤。

第四方面,本申请还公开了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时用以实现如上所述的任一种网口状态管理方法的步骤。

本申请所提供的网口状态管理方法包括:获取在预设状态机的状态存储库中记录的目标网口的当前状态;当接收到当前激励信号后,在所述预设状态机的状态转换信息库中查询与所述当前状态和所述当前激励信号对应的状态转换操作信息;所述状态转换信息库中预先存储有所述目标网口在各状态下接收到各激励信号后待执行的状态转换操作的信息,所述状态转换操作的信息包括待跳转的下一状态及对应的跳转条件;根据查询到的所述状态转换操作信息中的跳转条件,将所述预设状态机由所述当前状态跳转至下一状态,以便执行与所述下一状态对应的网口操作。

可见,本申请基于预设状态机而实现网口状态管理,并设置了专用于存储各种状态转换逻辑的状态转换信息库,令预设状态机的处理引擎对状态转换逻辑的获取以信息查询的方式而实现,而非是基于程序代码中大量的判断分支,不仅简化了代码结构、增强了代码可读性,而且更加便于进行修改维护,降低了出错率,提高了故障问题的定位和处理效率。本申请所提供的状态机引擎装置、电子设备及计算机可读存储介质同样具有上述有益效果。

附图说明

为了更清楚地说明现有技术和本申请实施例中的技术方案,下面将对现有技术和本申请实施例描述中需要使用的附图作简要的介绍。当然,下面有关本申请实施例的附图描述的仅仅是本申请中的一部分实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图,所获得的其他附图也属于本申请的保护范围。

图1为本申请实施例公开的一种网口状态管理方法的流程图;

图2为本申请实施例公开的一种状态机引擎装置的结构框图;

图3为本申请实施例公开的一种电子设备的结构框图。

具体实施方式

本申请的核心在于提供一种网口状态管理方法、状态机引擎装置、电子设备及计算机可读存储介质,以便简化代码结构,提高可维护性和可扩展性,并提高故障问题的定位和处理效率。

为了对本申请实施例中的技术方案进行更加清楚、完整地描述,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行介绍。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

当前,在网络通信过程中,解析通信协议的驱动需要对网络端口即网口进行状态管理,例如启动本地网口、通过本地网口进行远端设备发现等。因此,一般均为设备的网口设置多种状态,以及在多种激励信号下的状态转换机制。

在执行网口状态管理时,现有技术中的相关程序逻辑一般是在一个函数中直接进行处理,需要进行大量判断,产生大量的判断分支处理;进而导致程序代码的结构较为冗余,查找困难,不便于进行维护,更严重降低了故障问题的定位效率。鉴于此,本申请提供了一种基于状态机的网口状态管理方案,可有效解决上述问题。

参见图1所示,本申请实施例公开了一种网口状态管理方法,主要包括:

s101:获取在预设状态机的状态存储库中记录的目标网口的当前状态。

具体地,首先需要指出的是,本申请实施例所公开的网口状态管理方法具体是基于预设状态机而实现的。该预设状态机设置有状态存储库,用于存储记录目标网口在当前时段所处的状态,即当前状态。

预设状态机的状态转换具体基于状态机引擎实现,并由当前状态和当前接收到的激励信号(即当前激励信号)决定,当前状态不同,或者当前激励信号不同,均可能会触发不同的状态转换,即可能转换至不同的下一个状态,或者在状态转换后执行不同的管理操作。

例如,目标网口在上电时处于“初始化”状态,检测到网线连接成功的激励信号后,触发预设状态机执行状态切换,令目标端口跳转到下一状态,即“准备收发数据”的状态,以便收发数据。

s102:当接收到当前激励信号后,在预设状态机的状态转换信息库中查询与当前状态和当前激励信号对应的状态转换操作信息。

状态转换信息库中预先存储有目标网口在各状态下接收到各激励信号后待执行的状态转换操作的信息,状态转换操作的信息包括待跳转的下一状态及对应的跳转条件。

具体地,本申请实施例中,预设状态机还设置有状态转换信息库。本申请实施例根据通信需求预先设置了目标网口在不同状态下接收到不同激励信号后的状态转换操作,并将状态转换操作的相关信息存储在状态转换信息库中,包括每个状态转换操作待跳转的下一状态,以及跳转至该下一状态的跳转条件。

其中,跳转条件的作用是,在当前状态下接收到当前激励信号后,若同时满足该跳转条件,则可跳转到与该跳转条件对应的下一状态。

假设预先为目标网口的预设状态机设置了m个状态,且共有n种激励信号,则该状态转换信息库中最多需存储m*n个状态转换操作的相关信息。当然,容易理解的是,某些状态之间可能并不具有直接跳转关系,因此,状态转换信息库中存储的信息数量需要根据实际情况中预设状态机的转换机制而定。

s103:根据查询到的状态转换操作信息中的跳转条件,将预设状态机由当前状态跳转至下一状态,以便执行与下一状态对应的网口操作。

具体地,当确定了与当前状态、当前激励信号对应的状态转换操作之后,即可跳转至与当前满足的跳转条件对应的下一状态。容易理解的是,状态存储库中所记录的当前状态也随之更换。

还需补充说明的是,本申请中预设状态机可具体在linux系统基于c语言实现。当然,本领域技术人员还可根据实际情况选择其他应用系统和具体的编程实现方式,本申请对此并不做进一步限定。

本申请实施例所提供的网口状态管理方法包括:获取在预设状态机的状态存储库中记录的目标网口的当前状态;当接收到当前激励信号后,在预设状态机的状态转换信息库中查询与当前状态和当前激励信号对应的状态转换操作信息;状态转换信息库中预先存储有目标网口在各状态下接收到各激励信号后待执行的状态转换操作的信息,状态转换操作的信息包括待跳转的下一状态及对应的跳转条件;根据查询到的状态转换操作信息中的跳转条件,将预设状态机由当前状态跳转至下一状态,以便执行与下一状态对应的网口操作。

可见,本申请基于预设状态机而实现网口状态管理,并设置了专用于存储各种状态转换逻辑的状态转换信息库,令预设状态机的处理引擎对状态转换逻辑的获取以信息查询的方式而实现,而非是基于程序代码中大量的判断分支,基于处理引擎与状态转换信息库的分离机制,不仅简化了代码结构、增强了代码可读性,而且更加便于进行修改维护,降低了出错率,提高了故障问题的定位和处理效率。

作为一种具体实施例,本申请实施例所提供的网口状态管理方法在上述内容的基础上,每个状态转换操作的信息为一个数组元素,状态转换信息库以数组的形式存储各个状态转换操作的信息;数组的元素个数为目标网口的状态总数与激励信号总数的乘积。

具体地,本实施例中,每个状态转换操作的相关信息,包含跳转条件、下一状态等,均作为一个结构体,以数组元素存储在数组中。若预设状态机共有m个状态、n种激励信号,则该数组中最多需存储m*n个数组元素。

作为一种具体实施例,本申请实施例所提供的网口状态管理方法在上述内容的基础上,当查询到的状态转换操作信息中包括多个下一状态及对应的跳转条件时,根据查询到的状态转换操作信息中的跳转条件,将预设状态机由当前状态跳转至下一状态,包括:

将当前已满足的跳转条件所对应的下一状态确定为目标状态;

将预设状态机由当前状态跳转至目标状态。

具体地,同一个当前状态、同一个当前激励信号可对应多个跳转条件及下一状态,本领域技术人员可根据实际情况自行选择设置。

作为一种具体实施例,本申请实施例所提供的网口状态管理方法在上述内容的基础上,状态转换信息库中存储的各状态转换操作的信息中还包括跳转后待执行操作函数;

执行与下一状态对应的网口操作,包括:执行与目标状态对应的跳转后待执行操作函数。

具体地,当目标网口的状态切换后,可能会需要在新状态下执行相关的网口操作,可称为跳转后待执行操作。例如,可为目标端口预先设置用于对外应答的应答状态,并可进一步为目标网口设置在跳转到应答状态后执行发送应答消息的操作。

由此,本实施例以跳转后待执行操作函数的形式,将跳转后待执行操作记录在状态转换信息库中,以便预设状态机在跳转至下一状态后,通过执行该跳转后待执行操作函数而对目标网口完成对应的跳转后待执行操作。

作为一种具体实施例,本申请实施例所提供的网口状态管理方法在上述内容的基础上,在将预设状态机由当前状态跳转至下一状态之后,还包括:

对预设状态机进行状态校验,以便在校验结果异常时进行报错。

具体地,本申请实施例通过状态校验,可在状态机出错时及时报错,避免造成更严重的后果,进一步提高安全性。

作为一种具体实施例,本申请实施例所提供的网口状态管理方法在上述内容的基础上,在将预设状态机由当前状态跳转至下一状态之后,还包括:

记录预设状态机的状态跳转路径。

具体地,为了便于日后的故障查验,可记录下预设状态机的状态跳转路径,生成相关日志。进一步地,状态跳转路径的记录可存储在状态转换信息库中。

结合上文内容,例如,状态转换信息库中存储的一个数组元素(对应的当前状态为状态0,当前激励信号为x)的程序结构可具体为:

{

{跳转条件1,状态1,{跳转后待执行操作函数1,

跳转后待执行操作函数2,},路径记录函数},

{跳转条件2,状态2,{跳转后待执行操作函数3},路径记录函数},

}

其中,状态1为跳转条件1满足时待跳转的下一状态,在预设状态机跳转至状态1后,将执行跳转后待执行操作函数1和跳转后待执行操作函数2,之后通过执行路径记录函数完成对状态跳转路径的记录。

当跳转条件1不满足时,进入对跳转条件2的判断。

状态2为跳转条件2满足时待跳转的下一状态,在预设状态机跳转至状态2后,将执行跳转后待执行操作函数3,之后通过执行路径记录函数完成对状态跳转路径的记录。

通常,最后一个跳转条件的跳转条件2可设置为空条件,即(在跳转条件1不满足的情况下)无条件地执行跳转后待执行操作函数3。本领域技术人员可根据实际应用情况进行设置。

进一步地,本申请还提供了一个采用上述程序结构的具体实施例:

{

{fc2_rport_is_target,rport_sm_state_adisc_in_prog,

{fc_sm_send_adisc_hdlr,trigger_ns_disc,},

fc2_sm_transtion_log},

{fc2_sm_no_cond,rport_sm_state_adisc_in_prog,

{fc_sm_send_adisc_hdlr},fc2_sm_transtion_log,}

}

具体地,在本实施例中,条件fc2_rport_is_target为“目标网口被选中”;若该条件满足,则跳转的下一状态为rport_sm_state_adisc_in_prog,即“准备收发报文状态”;然后,将先后执行两个待执行操作函数:fc_sm_send_adisc_hdlr即“发送报文”,以及trigger_ns_disc即“触发远端网口发现”;之后,将通过执行fc2_sm_transtion_log即路径记录函数来记录状态跳转路径。

若目标网口没有被选中,则条件fc2_rport_is_target不满足,此时进入对另一个条件fc2_sm_no_cond的判断。

fc2_sm_no_cond为“无条件成立”,即前文所述空条件,因此其一定成立,则此时跳转至状态rport_sm_state_adisc_in_prog;然后仅执行一个待执行操作函数fc_sm_send_adisc_hdlr,进行报文发送;滞后,将通过执行fc2_sm_transtion_log即路径记录函数来记录状态跳转路径。

参见图2所示,本申请实施例公开了一种状态机引擎装置,主要包括:

获取模块201,用于获取在预设状态机的状态存储库中记录的目标网口的当前状态;

查询模块202,用于当接收到当前激励信号后,在预设状态机的状态转换信息库中查询与当前状态和当前激励信号对应的状态转换操作信息;状态转换信息库中预先存储有目标网口在各状态下接收到各激励信号后待执行的状态转换操作的信息,状态转换操作的信息包括待跳转的下一状态及对应的跳转条件;

跳转模块203,用于根据查询到的状态转换操作信息中的跳转条件,将预设状态机由当前状态跳转至下一状态,以便执行与下一状态对应的网口操作。

可见,本申请实施例所公开的状态机引擎装置,基于预设状态机而实现网口状态管理,并设置了专用于存储各种状态转换逻辑的状态转换信息库,令预设状态机的处理引擎对状态转换逻辑的获取以信息查询的方式而实现,而非是基于程序代码中大量的判断分支,基于处理引擎与状态转换信息库的分离机制,不仅简化了代码结构、增强了代码可读性,而且更加便于进行修改维护,降低了出错率,提高了故障问题的定位和处理效率。

关于上述状态机引擎装置的具体内容,可参考前述关于网口状态管理方法的详细介绍,这里就不再赘述。

作为一种具体实施例,本申请实施例所公开的状态机引擎装置在上述内容的基础上,还包括:

校验模块,用于在跳转模块203将预设状态机由当前状态跳转至下一状态之后,对预设状态机进行状态校验,以便在校验结果异常时进行报错。

作为一种具体实施例,本申请实施例所公开的状态机引擎装置在上述内容的基础上,每个状态转换操作的信息为一个数组元素,状态转换信息库以数组的形式存储各个状态转换操作的信息;数组的元素个数为目标网口的状态总数与激励信号总数的乘积。

作为一种具体实施例,本申请实施例所公开的状态机引擎装置在上述内容的基础上,当查询到的状态转换操作信息中包括多个下一状态及对应的跳转条件时,跳转模块203具体用于:

将当前已满足的跳转条件所对应的下一状态确定为目标状态;将预设状态机由当前状态跳转至目标状态。

作为一种具体实施例,本申请实施例所公开的状态机引擎装置在上述内容的基础上,状态转换信息库中存储的各状态转换操作的信息中还包括跳转后待执行操作函数;

跳转模块203具体用于:通过执行与目标状态对应的跳转后待执行操作函数,以实现与下一状态对应的网口操作。

作为一种具体实施例,本申请实施例所公开的状态机引擎装置在上述内容的基础上,还包括:

记录模块,用于在将预设状态机由当前状态跳转至下一状态之后,记录预设状态机的状态跳转路径。

参见图3所示,本申请实施例公开了一种电子设备,包括:

存储器301,用于存储计算机程序;

处理器302,用于执行所述计算机程序以实现如上所述的任一种网口状态管理方法的步骤。

进一步地,本申请实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时用以实现如上所述的任一种网口状态管理方法的步骤。

关于上述电子设备和计算机可读存储介质的具体内容,可参考前述关于网口状态管理方法的详细介绍,这里就不再赘述。

本申请中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的设备而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

还需说明的是,在本申请文件中,诸如“第一”和“第二”之类的关系术语,仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或者操作之间存在任何这种实际的关系或者顺序。此外,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上对本申请所提供的技术方案进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1