CN115981888A - 通信方法、装置和计算机可读存储介质 - Google Patents
通信方法、装置和计算机可读存储介质 Download PDFInfo
- Publication number
- CN115981888A CN115981888A CN202211659422.0A CN202211659422A CN115981888A CN 115981888 A CN115981888 A CN 115981888A CN 202211659422 A CN202211659422 A CN 202211659422A CN 115981888 A CN115981888 A CN 115981888A
- Authority
- CN
- China
- Prior art keywords
- publisher
- subscriber
- cross
- message
- process message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 373
- 230000006854 communication Effects 0.000 title claims abstract description 314
- 238000004891 communication Methods 0.000 title claims abstract description 313
- 230000008569 process Effects 0.000 claims abstract description 60
- 230000006870 function Effects 0.000 claims description 124
- 230000004044 response Effects 0.000 claims description 73
- 238000012545 processing Methods 0.000 claims description 61
- 238000013507 mapping Methods 0.000 claims description 39
- 230000009131 signaling function Effects 0.000 claims description 33
- 238000012546 transfer Methods 0.000 claims description 8
- 230000002441 reversible effect Effects 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 13
- 230000002159 abnormal effect Effects 0.000 description 7
- 239000011800 void material Substances 0.000 description 6
- 101150064138 MAP1 gene Proteins 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000002452 interceptive effect Effects 0.000 description 3
- 101100075995 Schizosaccharomyces pombe (strain 972 / ATCC 24843) fma2 gene Proteins 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 230000001815 facial effect Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 238000005057 refrigeration Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本申请提供一种通信方法、装置和计算机可读存储介质。其中,通信方法包括:发布方生成当前通信模式对应的发布方接口,所述发布方接口包括参数名和参数类型;发布方获取所述参数名和所述参数类型对应的实参值,得到本进程消息;发布方将所述本进程消息转换为第一跨进程消息,所述第一跨进程消息包括主题;发布方发送所述第一跨进程消息,以使通过当前通信模式对应的订阅方接口依据所述第一跨进程消息,传递所述发布方与所述订阅方之间的信息。如此,可阅读性较高,通用性较高。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种通信方法、装置和计算机可读存储介质。
背景技术
进程间通信(Inter-Process Communication,简称IPC)是软件开发中常用的技术,它可以帮助我们将复杂软件系统进行模块划分,进而分别开发。
进程间通信协议比如为消息队列遥测传输(message queuing telemetrytransport,简称mqtt)协议。mqtt协议一种基于发布/订阅(publish/subscribe)模式的轻量级通讯协议。其中,基于mqtt协议的进程间通信协议,只有发布/订阅一种模式,应对复杂场景的数据交互,使用者需要写额外的功能的代码。而,不同使用者写同样功能的代码也有差异。并且,一个使用者完成一个功能的代码,对于其他使用者来说,不符合其他使用者的撰写习惯,并且功能的代码的内容多,从而导致可阅读性较差,通用性较差。
发明内容
本申请提供一种通信方法、装置和计算机可读存储介质,可阅读性较高,通用性较高。
本申请的提供一种通信方法,包括:发布方生成当前通信模式对应的发布方接口,发布方接口包括参数名和参数类型;发布方获取参数名和参数类型对应的实参值,得到本进程消息;发布方将本进程消息转换为第一跨进程消息,第一跨进程消息包括主题;发布方发送第一跨进程消息,以使通过当前通信模式对应的订阅方接口依据第一跨进程消息,传递发布方与订阅方之间的信息。
进一步的,发布方生成当前通信模式对应的发布方接口,包括:发布方根据Qt的元系统,生成用于作为发布方接口的信号函数,信号函数包括参数类型及参数名;发布方获取参数名和参数类型对应的实参值,得到本进程消息,包括:根据Qt的元系统,生成动态槽函数,动态槽函数与信号函数绑定,动态槽函数包括信号函数的参数名和参数类型;在动态槽函数中,获取参数名和参数类型对应的实参值,得到发布方的第一映射接口;发布方将本进程消息转换为第一跨进程消息,包括:发布方使用进程间通信协议,将第一映射接口转换为第一跨进程消息。
进一步的,发布方使用进程间通信协议,将第一映射接口转换为第一跨进程消息,包括:发布方将本进程消息转换为进程间通信协议对应的消息;进程间通信协议对应的消息包括主题,主题包括发布方名字和功能组合;发布方通过进程间通信协议发送进程间通信协议对应的消息,以使通过当前通信模式对应的订阅方接口依据进程间通信协议对应的消息,传递发布方与订阅方之间的信息。
进一步的,进程间通信协议包括mqtt协议;发布方将本进程消息转换为进程间通信协议对应的消息,包括:发布方将本进程消息转换为mqtt消息;mqtt消息包括主题,主题包括发布方名字和功能组合;发布方通过进程间通信协议发送进程间通信协议对应的消息,以使通过当前通信模式对应的订阅方接口依据进程间通信协议对应的消息,传递发布方与订阅方之间的信息,包括:发布方通过mqtt协议发送mqtt消息,以使通过当前通信模式对应的订阅方接口依据mqtt消息,传递发布方与订阅方之间的信息。
进一步的,进程间通信协议包括socked协议;进程间通信协议对应的消息包括socked协议对应的套接字消息;或者,进程间通信协议包括管道协议;进程间通信协议对应的消息包括管道协议对应的管道消息。
进一步的,当前通信模式包括广播订阅的第一通信模式,发布方为广播方;第一跨进程消息的主题为广播方名字和功能组合;发布方生成当前通信模式对应的发布方接口,包括:广播方根据Qt的元系统确定第一通信模式对应的广播方接口;发布方发送第一跨进程消息,以使通过当前通信模式对应的订阅方接口依据第一跨进程消息,传递发布方与订阅方之间的信息,包括:广播方发送第一跨进程消息,以通过第一通信模式对应的订阅方接口传递广播方的信息。
进一步的,第一跨进程消息的主题包括发布方名字和功能组合;在发布方发送第一跨进程消息之后,方法还包括:依据发布方订阅发布方名字的主题,发布方接收由订阅方发送的包含发布方名字的主题的第二跨进程消息,第二跨进程消息为第一跨进程消息的处理结果的跨进程消息。
进一步的,当前通信模式包括请求应答的第二通信模式,发布方为请求方,订阅方为应答方;依据发布方订阅发布方名字的主题,发布方接收由订阅方发送的包含发布方名字的主题的第二跨进程消息,包括:依据请求方订阅请求方名字的主题,请求方接收由应答方发送的包含请求方名字的主题的第二跨进程消息,包含请求方名字的主题的第二跨进程消息包括请求消息的处理结果的第二跨进程消息;或者,当前通信模式包括回调响应的第三通信模式,发布方为回调方,订阅方为响应方;依据发布方订阅发布方名字的主题,发布方接收由订阅方发送的包含发布方名字的主题的第二跨进程消息,包括:依据回调方订阅回调方名字的主题,回调方接收由响应方发送的包含回调方名字的主题的第二跨进程消息,包含发布方名字的主题的第二跨进程消息包括回调消息的处理结果的第二跨进程消息。
本申请的提供一种通信方法,包括:订阅方生成当前通信模式对应的订阅方接口;订阅方依据订阅方订阅的与发布方匹配的主题,接收第一跨进程消息;订阅方反向解析第一跨进程消息,获得发布方的参数名和实参值;订阅方在确定订阅方的参数名与发布方的参数名一致的情况下,根据实参值,调用订阅方接口,以通过订阅方接口传递发布方与订阅方之间的信息。
进一步的,当前通信模式包括广播订阅的第一通信模式;订阅方反向解析第一跨进程消息,获得发布方的参数名和实参值,包括:订阅方根据Qt的元系统,反向解析第一跨进程消息为第二映射接口;订阅方根据Qt的元系统,获得发布方的参数名;订阅方通过第二映射接口获得发布方的参数名对应的实参值;订阅方调用第三映射接口的动态槽函数的元方法,第三映射接口包括利用Qt的元系统记录的广播方名字和功能组合的主题及元方法;根据实参值,调用订阅方接口,以通过订阅方接口传递发布方与订阅方之间的信息,包括:订阅方将实参值赋给元方法,调用第一通信模式对应的订阅方接口,以通过订阅方接口传递广播方的信息。
进一步的,当前通信模式包括请求应答的第二通信模式或回调响应的第三通信模式,方法还包括:根据实参值,调用订阅方接口,以通过订阅方接口传递发布方与订阅方之间的信息,包括:根据实参值,订阅方调用订阅方接口,以通过订阅方接口生成第一跨进程消息的处理结果的第二跨进程消息,发送第一跨进程消息的处理结果的第二跨进程消息,第一跨进程消息的处理结果的第二跨进程消息的主题名字包括发布方名字。
本申请的提供一种通信装置,包括:发布方接口生成模块,用于发布方生成当前通信模式对应的发布方接口,发布方接口包括参数名和参数类型;本进
程消息得到模块,用于发布方获取参数名和参数类型对应的实参值,得到本进程消息;第一跨进程消息得到模块,用于发布方将本进程消息转换为第一跨进程消息,第一跨进程消息包括主题;第一跨进程消息发送模块,用于发布方发送第一跨进程消息,以使通过当前通信模式对应的订阅方接口依据第一跨进程消息,传递发布方与订阅方之间的信息。
本申请的提供一种通信装置,包括:订阅方接口生成模块,用于订阅方生成当前通信模式对应的订阅方接口;第一跨进程消息接收模块,用于订阅方依据订阅方订阅的与发布方匹配的主题,接收第一跨进程消息;第一跨进程消息反向解析模块,用于订阅方反向解析第一跨进程消息,获得发布方的参数名和实参值;订阅方接口调用模块,用于订阅方在确定订阅方的参数名与发布方的
参数名一致的情况下,根据实参值,调用订阅方接口,以通过订阅方接口传递发布方与订阅方之间的信息。
本申请的提供一种通信系统,包括一个或多个处理器,用于实现如上任一项的方法。
本申请的提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现如上任一项的方法。
在一些实施例中,本申请实施例的通信方法,发布方生成当前通信模式对应的发布方接口,发布方接口包括参数名和参数类型等功能信息,后续发布方向订阅方发送第一跨进程消息。这样使用者可以根据需求的当前通信模式,知道当前通信模式对应的发布方接口实现的功能,确定当前通信模式对应的发布
方接口,以使用发布接口发送第一跨进程消息,不需要知道当前通信模式对应的内部代码的具体内容,发布方接口的可阅读性较高,通用性较高。
附图说明
图1所示为本申请实施例提供的通信方法应用于发布方的流程示意图;
图2所示为图1所示的通信方法的步骤110、步骤120和步骤130的具体流程图;
图3所示为图2所示的通信方法的另一实施例的流程示意图;
图4所示为本申请实施例的当前通信模式为请求应答的第二通信模式的通信方法的请求应答的流程示意图;
图5所示为本申请实施例的当前通信模式为回调响应的第三通信模式的通信方法的一次回调响应的流程示意图;
图6所示为本申请实施例的通信方法应用于订阅方的流程示意图;
图7所示为本申请实施例的通信装置应用于发布方的模块示意图;
图8所示为本申请实施例的通信方法应用于订阅方的模块示意图;
图9所示为本申请实施例的当前通信模式为广播订阅的第一通信模式的通信装置的拓扑示意图;
图10所示为本申请实施例的当前通信模式为请求应答的第二通信模式的通信装置的拓扑示意图;
图11所示为本申请实施例的回调响应的第三通信模式的通信装置的请拓扑示意图;
图12所示为本申请实施例提供的通信系统的模块框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施例并不代表与本说明书一个或多个实施例相一致的所有实施例。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
为了解决上述可阅读性较差,通用性较差的技术问题,本申请实施例提供一种通信方法,该通信方法可以应用于桌面软件,实现通信功能。例如,桌面软件可以适用于口腔扫描、工业扫描、专业扫描、面部扫描、3d打印、辅助诊断等应用场景。
该通信方法中,发布方生成当前通信模式对应的发布方接口,发布方接口包括参数名和参数类型;发布方获取参数名和参数类型对应的实参值,得到本进程消息;发布方将本进程消息转换为第一跨进程消息,第一跨进程消息包括主题,第一跨进程消息的主题包括发布方名字和功能组合;发布方发送第一跨进程消息,以使通过当前通信模式对应的订阅方接口依据第一跨进程消息,传递发布方与订阅方之间的信息。
在本实施例中,发布方生成当前通信模式对应的发布方接口,发布方接口包括参数名和参数类型等功能信息,后续发布方向订阅方发送第一跨进程消息。这样使用者可以根据需求的当前通信模式,知道当前通信模式对应的发布方接口实现的功能,当前通信模式对应的发布方接口,以使用发布接口发送第一跨进程消息,不需要知道当前通信模式对应的内部代码的具体内容,发布方接口的可阅读性较高,通用性较高。
相应的,本申请实施例还提供一种通信方法,订阅方生成当前通信模式对应的订阅方接口;依据订阅方订阅的与发布方匹配的主题,订阅方接收第一跨进程消息;订阅方反向解析第一跨进程消息,获得发布方的参数名;在确定订阅方的参数名与发布方的参数名一致的情况下,订阅方调用订阅方接口,以通过订阅方接口传递发布方与订阅方之间的信息。
在本实施例中,依据订阅方订阅的与发布方匹配的主题,订阅方接收第一跨进程消息,以调用订阅方接口,来传递发布方与订阅方之间的信息。这样使用者根据需求的当前通信模式,知道当前通信模式对应的订阅方接口实现的功能,生成当前通信模式对应的订阅方接口,以使用订阅方接口发送传递发布方与订阅方之间的信息,不需要知道当前通信模式对应的内部代码的具体内容,订阅方接口的可阅读性较高,通用性较高。
上述两方面的通信方法可以分别应用于电子设备。具体的,该电子设备可以为:台式计算机、便携式计算机、智能移动终端等。在此不作限定,任何可以实现本申请实施例的电子设备,均属于本申请实施例的保护范围。上述两方面的通信方法的详细说明如下。
该通信方法中,在一些场景,相互通信的发布方和订阅方可以运行在同一个设备上。
比如,发布方和订阅方可以是同一设备不同应用程序的两个进程。
比如,发布方和订阅方可以是同一设备同一应用程序中的两个进程。
比如,发布方和订阅方可以是同一应用程序同一个进程中的两个子进程。
比如,发布方和订阅方可以是同一应用程序同一进程下,不同开发语言的两个线程。
在一些场景,发布方和订阅方可以运行在不同的设备上,比如,发布方和订阅方可以是两个设备的两个应用程序。
图1所示为本申请实施例提供的通信方法应用于发布方的流程示意图。
如图1所示,该通信方法可以但不限于包括如下步骤110至步骤140:
步骤110,发布方生成当前通信模式对应的发布方接口,发布方接口包括参数名和参数类型。
使用发布方接口时,需要填写参数名和参数类型。此处的参数名可以为发布方的参数名。
上述参数名可以但不限于通信设备。通信设备比如但不限于为手机、平板ipad、mac、电脑等移动终端。当然也可以应用到其他通信设备,在此并不做限定。
上述参数类型可以是实现此通信过程所使用的参数。在具体使用时,参数类型对应设置一些实参值。实参值比如但不限于为温度的数值,制冷的数值等。具体的表现形式可以但不限于为数字浮点类型的数值。
接着,上述当前通信模式可以但不限于包括广播订阅的第一通信模式、请求应答的第二通信模式及回调响应的第三通信模式。
步骤120,发布方获取参数类型和参数类型对应的实参值,得到本进程消息。本进程消息是指同一个进程的消息。
步骤130,发布方将本进程消息转换为第一跨进程消息,第一跨进程消息包括主题。第一跨进程消息用于实现多个进程之间的通信。
步骤140,发布方发送第一跨进程消息,以使通过当前通信模式对应的订阅方接口依据第一跨进程消息,传递发布方与订阅方之间的信息。
在本申请实施例中,直接通过发布方接口和订阅方接口的调用即可以完成进程间信息的通信。
图2所示为图1所示的通信方法的步骤110、步骤120和步骤130的具体流程图。
结合上述图1所示,步骤110进一步可以但不限于包括步骤111,发布方根据Qt的元系统,生成用于作为发布方接口的信号函数,信号函数包括参数类型及参数名。如此,基于Qt的元系统扩展的信号槽机制,使得处理对象间通信变得更加高效、灵活。
通过Qt的元系统用信号Signal与槽slot代替指针,可以将两个互不相关的对象绑定在一起,实现对象之间的通信。对于信号Signal,当对象改变状态时,信号Signal就由该对象发射出去,而且对象只负责发送信号Signal,它无需关心另一端是谁接收信号Signal。对于槽slot,用于接收信号Signal,而且槽slot只是普通的对象成员函数,一个槽slot并不知道是否有任何信号Signal与自己相连接,而且对象也无需了解具体的通信机制。
其中,Qt的元系统的信号Signal与槽,形式如下:
信号:Signal:void func(type1param1,type2param2);
槽:slot:void func(type1param1,type2param2){
函数体:利用param1,param2进行一系列操作
}
上述Qt的元系统的信号Signal形式上和函数相似,可以带有参数,且没有返回值。通常,信号Signal只有函数声明,信号Signal最多可带有10个参数。槽Slot,即有函数声明,又有函数实现,最多可带有10个参数,且可以带有返回值。信号Signal和槽slot是配对的,即参数要完全一样。当信号Signal和槽slot绑定在一起的时候,一端执行信号,另一端的槽就会被调用起来。
上述信号函数可以使用上述信号Signal的形式表达。下文的动态槽函数可以使用上述槽slot的形式表达。上述同一个进程之间的通信,可以直接绑定Qt的元系统的信号和槽,可以实现两个模块间的通信。但是,上述两个进程之间的通信,不能直接绑定Qt的元系统的信号和槽。针对不同场景,可以生成不同的通信模式对应的Qt的元系统的信号函数和槽函数,以实现不同的通信模式,具体请参见下文详细介绍3种通信模式的进程间通信。
上述步骤120进一步可以但不限于包括如下两步骤。步骤121,根据Qt的元系统,生成动态槽函数,动态槽函数与信号函数绑定,动态槽函数包括信号函数的参数名和参数类型。当调用信号函数时,动态槽函数(也可以称为槽函数)会被执行。步骤122,在动态槽函数中,获取参数名和参数类型对应的实参值,得到发布方的第一映射接口,发布方的第一映射接口用于作为本进程消息。
上述步骤130进一步可以但不限于包括步骤131,发布方使用进程间通信协议,将第一映射接口转换为第一跨进程消息。
上述步骤131可以但不限于进一步包括两步骤,1)、发布方将本进程消息转换为进程间通信协议对应的消息;进程间通信协议对应的消息包括主题,主题包括发布方名字和功能组合。2)、发布方通过进程间通信协议发送进程间通信协议对应的消息,以使通过当前通信模式对应的订阅方接口依据进程间通信协议对应的消息,传递发布方与订阅方之间的信息。
其中,进程间通信协议可以但不限于包括mqtt协议、socked协议或管道协议。相应地,进程间通信协议对应的消息可以但不限于包括mqtt协议对应的mqtt消息、socked协议对应的套接字消息、管道协议对应的管道消息。详细说明请参见下文。
在进程间通信协议为mqtt协议的实施例中,上述步骤131的上述1)的步骤可以但不限于包括如下第一个步骤,和上述2)的步骤可以但不限于包括如下第二个步骤。第一个步骤,发布方将本进程消息转换为mqtt消息;mqtt消息包括主题,主题包括发布方名字和功能组合。第二个步骤,发布方通过mqtt协议发送mqtt消息,以使通过当前通信模式对应的订阅方接口依据mqtt消息,传递发布方与订阅方之间的信息。相应的,订阅方也通过使用此mqtt协议,传递发布方与订阅方之间的信息。在本实施例中,将本进程消息转换为mqtt消息,mqtt是一个基于客户端服务器的消息发布,订阅传输协议,mqtt协议是轻量,简单,开放和易于实现。
在进程间通信协议为socked协议的实施例中,进程间通信协议为socked协议的实施例类似于上述进程间通信协议为mqtt协议的实施例,区别在于发布方将本进程消息转换为套接字消息,通过socked协议发送套接字消息,相应的,订阅方也通过使用此socked协议,传递发布方与订阅方之间的信息,在此不再详述。如此,socked及套接字消息可以提供可靠的、面向连接的通信。
在进程间通信协议为管道协议的实施例中,进程间通信协议为管道协议的实施例类似于上述进程间通信协议为mqtt协议的实施例,区别在于发布方将本进程消息转换为管道消息,通过管道协议发送管道消息,相应的,订阅方也通过使用此管道协议,传递发布方与订阅方之间的信息,在此不再详述。如此,在同一个电脑上通信,也可以不用socked通信,用管道协议及管道也可以完成通信,提供通信的多种选择性。
在一些具体应用实例的示例中,在动态槽函数中,利用QT的元系统,获取信号函数的参数名和实参值,形成一个第一映射接口map,第一映射接口map的键key为参数名,第一映射接口map的值value为实参值。再将第一映射接口map转成json字符串(就是将map的键值对形成字符串),再将json字符串可以作为第一跨进程消息,并发送出去,第一跨进程消息的主题topic包括发布方名字和功能组合。
在本实施例中,根据Qt的元系统生成动态槽函数和信号函数,并绑定动态槽函数和信号函数。在动态槽函数中,可以获取到随信号函数发出来的参数名和参数类型对应的实参值,后续将其转换为跨进程消息发送,从而实现由信号函数到第一跨进程消息的自动转换。
以下详细介绍3种通信模式的进程间通信。
在广播订阅模式的实施例中,当前通信模式包括广播订阅的第一通信模式,发布方为广播方;第一跨进程消息的主题为广播方名字和功能组合。
上述步骤110进一步可以包括广播方生成第一通信模式对应的广播方接口。
上述步骤140进一步可以包括广播方发送第一跨进程消息,以通过第一通信模式对应的订阅方接口传递广播方的信息。如此,广播方不清楚有多少个其他订阅方,但是广播方知道自己的信息。这样广播方订阅自己的名字,接收自己的名字的订阅内容,提高订阅内容的接收的准确性。
图3所示为图2所示的通信方法的另一实施例的流程示意图。
结合图1至图3所示,第一跨进程消息的主题包括发布方名字和功能组合。发布方不清楚有多少个其他订阅方,但是发布方知道自己的信息。这样发布方订阅自己的名字,接收自己的名字的订阅内容,不仅减少了解其他订阅方的信息而减少冗余的交互通信,而且,提高订阅内容的接收的准确性。
在上述步骤140之后,该通信方法可以但不限于还包括如下步骤150:
步骤150,依据发布方订阅发布方名字的主题,发布方接收由订阅方发送的包含发布方名字的主题的第二跨进程消息,包含发布方名字的主题的第二跨进程消息为第一跨进程消息的处理结果的第二跨进程消息。如此,可以接收订阅方返回的第二跨进程消息,实现订阅方与发布方之间的双向通信,并且,第二跨进程消息包含的发布方名字的主题,与第一跨进程消息的主题的发布方名字相同,保证第二跨进程消息传递的准确性。
图4所示为本申请实施例的当前通信模式为请求应答的第二通信模式的通5信方法的请求应答的流程示意图。
如图4所示,在当前通信模式可以但不限于为请求应答的第二通信模式的实施例中,发布方为请求方,订阅方为应答方;上述步骤150进一步可以包括依据请求方订阅请求方名字的主题,请求方接收由应答方发送的包含请求方名
字的主题的第二跨进程消息,包含请求方名字的主题的第二跨进程消息包括请0求消息的处理结果的第二跨进程消息。如此,请求方接收由应答方发送的包含请求方名字的主题的第二跨进程消息,实现请求方与应答方的双向交互通信,并且,第二跨进程消息包含的请求方名字的主题,与第一跨进程消息的主题的请求方名字的主题相同,提高第二跨进程消息传递的准确性。
继续图4所示,当前通信模式包括请求应答的通信模式。
5第1步骤、发出请求。当然,本步骤中,可以通过请求模块能够处理该请
求。请求模块详细说明请参见下文。
第2步骤、是否能够处理该请求。如果否,也就是全局网络不能处理该请求,直接执行如下请求消息的处理结果中的1)。如果是,也就是全局网络能够
处理该请求,直接执行如下请求消息的处理结果中的2)的对请求进行响应,继0续执行第3步骤。当然,本步骤中,可以通过功能模块确定是否有能够处理该请求。功能模块详细说明请参见下文。
第3步骤、是否被取消返回结果的信息。如果是,也就是被取消返回结果的信息,则可以执行如下请求消息的处理结果中的5)。如果否,也就是没有被取消返回结果的信息,执行第4步骤。
5第4步骤、是否生成请求消息的处理结果。如果是,也就是生成请求消息的处理结果,则可以执行如下请求消息的处理结果中的2)的返回一个或者多个就绪ready的结果信息。如果否,也就是没有生成请求消息的处理结果,则可以执行第5步骤。
第5步骤、是否生成结束的处理结果。如果是,也就是生成结束的处理结0果,则可以执行如下请求消息的处理结果中的4)。如果否,也就是未生成结束的处理结果,则重返返回第2步骤中的对请求进行响应,继续执行第3步骤。
其中,请求消息的处理结果可以但不限于包括如下任一:
1)、当全局网络中没有功能模块能够处理该请求时,直接抛出异常Exception的结果信息;
2)、功能模块对请求进行响应,返回一个或者多个就绪ready的结果信息;
3)、功能模块处理时发生异常,抛出异常Exception的结果信息;
4)、功能模块正常结束,返回完成Finished的结果信息;
5)、功能模块处理被取消,返回取消Canceled的结果的信息。
图5所示为本申请实施例的当前通信模式为回调响应的第三通信模式的通信方法的一次回调响应的流程示意图。
如图5所示,在当前通信模式可以但不限于为回调响应的第三通信模式的实施例中,发布方为回调方,订阅方为响应方;上述步骤150进一步可以包括依据回调方订阅回调方名字的主题,回调方接收由响应方发送的包含回调方名字的主题的第二跨进程消息,包含发布方名字的主题的第二跨进程消息包括回调消息的处理结果的第二跨进程消息。如此,回调方接收由响应方发送的包含回调方名字的主题的第二跨进程消息,实现回调方与响应方的双向交互通信,并且,第二跨进程消息包含的回调方名字的主题,与第一跨进程消息的主题的回调方名字的主题相同,第二跨进程消息传递地更准确。
图5的实施例类似于图4所示的实施例,相比较于图4所示的实施例,在图5的实施例中,区别在于,第1步、发出回调请求。当然,本步骤中,可以通过响应模块能够处理该回调。响应模块详细说明请参见下文。
第2步、是否能够处理该回调请求。如果是,也就是能够处理该回调,继续执行第3步。如果否,也就是不能够处理该回调,则可以执行直接执行如下回调消息的处理结果中的(1)。当然,本步骤中,可以通过功能模块确定是否有能够处理该回调。功能模块详细说明请参见下文。
第3步,等待回调结果。
第4步、是否抛出异常的结果信息。如果是,也就是抛出异常的结果信息,则可以执行如下回调消息的处理结果中的(5)。如果否,也就是不抛出异常的结果信息,则可以执行第5步。
第5步,是否返回取消的信息。如果是,也就是返回取消的信息,则可以执行如下回调消息的处理结果中的4)。如果否,也就是没有返回取消的信息,执行第6步。
第6步、是否在等待时间内返回回调消息的处理结果。如果是,也就是在等待时间内返回回调消息的处理结果,则可以执行如下回调消息的处理结果中的(3)。如果否,也就是在等待时间内不返回回调消息的处理结果,则可以执行可以如下回调消息的处理结果中的(7)。
第7步、是否都已返回。如果是,也就是都已返回,则可以执行如下返回所有回调结果。如果否,也就是未都已返回,则重返返回执行第3步。
其中,当前通信模式包括回调响应的通信模式,对于一次回调执行,功能模块可能获得如下回调消息的处理结果一种或多种结果:
(1)、没有响应模块挂载到该回调点上,则直接抛出无响应No Callbacker异常作为回调消息的处理结果;
(2)、如果有响应模块挂载到该回调点上,则会收到响应模块个数,Qt Tunnel通道会将回调请求发给所有响应模块;
(3)、获得响应模块的返回值作为回调消息的处理结果;
(4)、获得响应模块的取消Canceled的信息作为回调消息的处理结果;
(5)、获得响应模块的异常值作为回调消息的处理结果;
(6)、获得响应模块的完成Finished信息;
(7)、当功能模块回调超时,会抛出超时异常Timeout作为回调消息的处理结果。
图6所示为本申请实施例的通信方法应用于订阅方的流程示意图。
如图6所示,该通信方法,包括如下步骤210至步骤240:
步骤210,订阅方生成当前通信模式对应的订阅方接口,订阅方接口包括订阅方的参数名、参数类型及函数体。函数体用于进行一系列操作,并将结果返回给请求方或回调方。
上述当前通信模式对应的订阅方接口,与上述当前通信模式对应的发布方接口相匹配。示例性的,上述订阅方接口可以为槽函数。
步骤220,订阅方依据订阅方订阅的与发布方匹配的主题,接收第一跨进程消息。
在一些实施例中,第一跨进程消息的主题为发布方名字和功能组合的主题。对应的,订阅方订阅的主题,可以为订阅方名字和功能组合的主题。在另一些实施例中,第一跨进程消息的主题为订阅方名字和功能组合的主题。对应的,订阅方订阅的主题,可以为发布方名字和功能组合的主题。其他实施例,只要订阅方订阅的主题与第一跨进程消息的主题相匹配,均属于本申请实施例的保护范围。
步骤230,订阅方反向解析第一跨进程消息,获得发布方的参数名和实参值。
步骤240,订阅方在确定订阅方的参数名与发布方的参数名一致的情况下,根据实参值,调用订阅方接口,以通过订阅方接口传递发布方与订阅方之间的信息。
在申请实施例中,直接通过发布方接口和订阅方接口的调用即可以完成进程间信息的通信。
在一些实施例中,当前通信模式包括广播订阅的第一通信模式;
上述步骤230进一步可以但不限于包括如下4个步骤:
第一步骤,订阅方根据Qt的元系统,反向解析第一跨进程消息为第二映射接口。
第二步骤,订阅方根据Qt的元系统,获得发布方的参数名。
第三步骤,订阅方通过第二映射接口获得发布方的参数名对应的实参值。
第四步骤,订阅方调用第三映射接口的动态槽函数的元方法,第三映射接口包括利用Qt的元系统记录的广播方名字和功能组合的主题及元方法。在第四步骤之前,可以提前设置好第三映射接口map1,详细说明请参见下文。
上述步骤240进一步可以但不限于包括第五步骤,订阅方将实参值赋给元方法,调用第一通信模式对应的订阅方接口,以通过订阅方接口传递广播方的信息。如此,可以实现有效通信。
以下当前通信模式为广播订阅的第一通信模式,以及以进程间通信协议为mqtt协议为示例进行说明。
在本示例中,广播方:
1)、生成一个信号函数:
Signal:void pub_功能名(参数类型1参数名1,参数类型2参数名2,...);
2)、生成一个动态槽函数,并与信号函数绑定。
3)、在动态槽函数中,利用QT的元系统,获取信号函数的参数名和实参值,形成一个第一映射接口map,以得到mqtt消息,mqtt消息的主题topic为广播方名字和功能名组合。
订阅方:
<1>、生成一个槽函数:
Slot:void sub_广播方名字_功能名(参数类型1参数名1,参数类型2参数名2,...);
<2>、利用QT的元系统,解析槽函数的名字,得到广播方名字和功能名,组合广播方名字和功能名,作为一个订阅主题topic,通过mqtt消息订阅topic消息。如此,利用QT的元系统,将函数体转换成mqtt消息的主题topic,同时实现将信号函数的参数和mqtt的json消息互相转换,从而进程间信息传递可以像函数接口一样的形式进行传递。
<3>、利用QT的元系统,第三映射接口map1记录槽函数的元方法(QMetaMethod),第三映射接口map1的key为上述topic,key为元方法;
<4>、当广播方发出mqtt消息后,订阅方会收到mqtt消息,mqtt消息为json字符串,将json字符串反向解析成一个映射接口map,记为第二映射接口map2;
<5>、利用QT的元系统,得到参数名,由于广播方的参数名和订阅方的参数名是一样的,因此可以通过第二映射接口map2获取到广播方的参数名对应的实参值
<6>、调用第三映射接口map1的元方法,将<5>的实参值赋给该元方法,调用订阅方的槽函数,槽函数传递的信息为广播方传递过来的信息。
在一些实施例中,当前通信模式包括请求应答的第二通信模式或回调响应的第三通信模式,方法还包括:
通过发布方订阅发布方名字的主题;
上述步骤240进一步可以包括订阅方在确定订阅方的参数名与发布方的参数名一致的情况下,根据实参值,订阅方调用订阅方接口,以通过订阅方接口生成第一跨进程消息的处理结果的第二跨进程消息,发送第一跨进程消息的处理结果的第二跨进程消息,第一跨进程消息的处理结果的第二跨进程消息的主题名字包括发布方名字。
以下以当前通信模式为请求应答的第二通信模式,以及进程间通信协议为mqtt协议为示例进行说明。本示例类似于上述当前通信模式为广播订阅的第一通信模式的示例,区别在于,简单描述如下:
请求方:
1>、生成一个信号函数:
Signal:返回结果req_应答方_功能名(参数类型1参数名1,参数类型2参数名2,...);
2>、订阅一个topic,topic名字为请求方名字,生成一个动态槽函数,与信号绑定;
3>、将函数参数和实参值转为json字符串,通过mqtt消息发送出去,mqtt消息的主题topic名字为应答方名+功能名组合,然后继续由应答方执行应答方的3>的步骤,但是在执行应答方的3>之前,需要应答方预先设置槽函数和订阅主题,即,应答方的1>和2>的步骤。
4>、等待接收应答方的消息;
5>、收到应答方的消息,返回信号函数的结果。
应答方:
1>、生成一个槽函数:
Slot:void req_功能名(参数类型1参数名1,参数类型2参数名2,...)
{
函数体:进行一系列操作,并将结果返回给请求方;
}
2>、订阅一个topic,topic名字为应答方名字+功能名组合;
3>、等待请求方的消息;
4>、接收请求方的消息,将消息解析为槽函数的参数名和实参值,调用槽函数;
5>、槽函数生成请求方的处理结果,通过mqtt消息发送出去,mqtt消息的topic名字为请求方名字。然后继续由请求方执行请求方的4>和5>的步骤。
以下以当前通信模式为回调响应的第三通信模式,以及进程间通信协议为mqtt协议为示例进行说明。本示例类似于上述回调响应的第三通信模式的示例,区别在于,回调方替换请求方,且信号函数不同,简单描述如下:
1、生成一个信号函数:
Signal:返回结果map_功能名(参数类型1参数名1,参数类型2参数名2,...);
2、订阅一个topic,topic名字为回调方名字;
3、生成一个动态槽函数,与信号绑定;
4、将函数参数和实参值转为json字符串,通过mqtt消息发送出去,mqtt消息息的主题topic名字为回调方名字+功能名组合;
5、等待响应方的消息;
6、收到响应方的消息,返回信号函数的结果。
响应方替换应答方,且槽函数不同:
1、生成一个槽函数:
Slot:void cab_回调方_功能名(参数类型1参数名1,参数类型2参数名2,...)
{
函数体:进行一系列操作,并将结果返回给回调方;
}
2、订阅一个topic,topic名字为回调方名字+功能名组合;
3、等待回调方的消息;
4、收到回调方的消息,将消息解析为槽函数的参数名和实参值,调用槽函数;
5、槽函数生成回调方的处理结果,通过mqtt消息发送出去,mqtt消息的topic名字为回调方名字。
图7所示为本申请实施例的通信装置应用于发布方的模块示意图。
如图7所示,该通信装置可以但不限于包括如下:
发布方接口生成模块31,用于发布方生成当前通信模式对应的发布方接口,发布方接口包括参数名和参数类型;
本进程消息得到模块32,用于发布方获取参数名和参数类型对应的实参值,得到本进程消息;
第一跨进程消息得到模块33,用于发布方将本进程消息转换为第一跨进程消息,第一跨进程消息包括主题;
第一跨进程消息发送模块34,用于发布方发送第一跨进程消息,以使通过当前通信模式对应的订阅方接口依据第一跨进程消息,传递发布方与订阅方之间的信息。
在一些实施例中,发布方接口生成模块31,包括发布方接口生成子模块,其用于发布方根据Qt的元系统,生成用于作为发布方接口的信号函数,信号函数包括参数类型及参数名;
本进程消息得到模块32,包括本进程消息得到子模块,其用于发布方根据Qt的元系统,生成动态槽函数,动态槽函数与信号函数绑定,动态槽函数包括信号函数的参数名和参数类型;发布方在动态槽函数中,获取参数名和参数类型对应的实参值,得到发布方的第一映射接口;
第一跨进程消息得到模块33,包括第一跨进程消息得到子模块,其用于发布方使用进程间通信协议,将第一映射接口转换为第一跨进程消息。
在一些实施例中,第一跨进程消息得到子模块,包括进程间消息得到单元,其用于发布方将本进程消息转换为进程间通信协议对应的消息;进程间通信协议对应的消息包括主题,主题包括发布方名字和功能组合;
进程间消息发送单元,其用于发布方通过进程间通信协议发送进程间通信协议对应的消息,以使通过当前通信模式对应的订阅方接口依据进程间通信协议对应的消息,传递发布方与订阅方之间的信息。
在一些实施例中,进程间通信协议包括mqtt协议;
进程间消息得到单元,进一步用于:
发布方将本进程消息转换为mqtt消息;mqtt消息包括主题,主题包括发布方名字和功能组合;
进程间消息发送单元,进一步用于:
发布方通过mqtt协议发送mqtt消息,以使通过当前通信模式对应的订阅方接口依据mqtt消息,传递发布方与订阅方之间的信息。
在一些实施例中,进程间通信协议包括socked协议;进程间通信协议对应的消息包括socked协议对应的套接字消息;
或者,
进程间通信协议包括管道协议;进程间通信协议对应的消息包括管道协议对应的管道消息。
图8所示为本申请实施例的通信方法应用于订阅方的模块示意图。
如图8所示,该通信装置可以但不限于包括:
订阅方接口生成模块41,用于订阅方生成当前通信模式对应的订阅方接口;
第一跨进程消息接收模块42,用于订阅方依据订阅方订阅的与发布方匹配的主题,接收第一跨进程消息;
第一跨进程消息反向解析模块43,用于订阅方反向解析第一跨进程消息,获得发布方的参数名和实参值;
订阅方接口调用模块44,用于订阅方在确定订阅方的参数名与发布方的参数名一致的情况下,根据实参值,调用订阅方接口,以通过订阅方接口传递发布方与订阅方之间的信息。
图9所示为本申请实施例的当前通信模式为广播订阅的第一通信模式的通信装置的拓扑示意图。
如图9所示,上述当前通信模式可以但不限于为广播订阅的第一通信模式,发布方为广播方;第一跨进程消息的主题为广播方名字和功能组合。
当前通信模式为广播订阅的第一通信模式的通信装置,广播方包括功能模块。订阅方包括订阅模块。具体的,功能模块包括上述发布方接口生成模块、本进程消息得到模块及第一跨进程消息得到模块等用于实现发布方功能的模块。订阅模块包括上述第一跨进程消息接收模块、第一跨进程消息反向解析模块及订阅方接口调用模块等用于实现订阅方订阅的模块。
当然,功能模块的数量并不做限定,功能模块可以包含功能模块1、功能模块2等等。在此不再一一举例。订阅模块可以订阅一个功能模块的内容,也可以订阅多个功能模块的内容。订阅模块的数量并不做限定,订阅模块可以包含订阅模块1、订阅模块2等等。在此不再一一举例。
继续图9所示,该当前通信模式适用于一对多且无需返回结果的场景。
具体来说,一个功能模块将特定事件以广播的形式对外通知,其他感兴趣的模块可以订阅,也可以不订阅;如果选择订阅,则订阅之后,功能模块发出该广播时,订阅模块就会收到该广播事件。广播订阅拓扑图如图9所示。
此外如果订阅方不想再订阅某个事件,则可以随时取消订阅。一旦取消订阅,将不再收到广播事件。当然,订阅模块也可以随时再次订阅。
其中,发布方接口生成模块,具体用于广播方根据Qt的元系统确定第一通信模式对应的广播方接口;
第一跨进程消息发送模块,具体用于广播方发送第一跨进程消息,以通过第一通信模式对应的订阅方接口传递广播方的信息。
相应的,第一跨进程消息反向解析模块,具体用于订阅方根据Qt的元系统,反向解析第一跨进程消息为第二映射接口;订阅方根据Qt的元系统,获得发布方的参数名;订阅方通过第二映射接口获得发布方的参数名对应的实参值;订阅方调用第三映射接口的动态槽函数的元方法,第三映射接口包括利用Qt的元系统记录的广播方名字和功能组合的主题及元方法;
订阅方接口调用模块,具体用于订阅方将实参值赋给元方法,调用第一通信模式对应的订阅方接口,以通过订阅方接口传递广播方的信息。
第一跨进程消息的主题包括发布方名字和功能组合;在订阅方接口调用模块用于发布方发送第一跨进程消息之后,装置还包括第二跨进程消息接收模块,用于依据发布方订阅发布方名字的主题,发布方接收由订阅方发送的包含发布方名字的主题的第二跨进程消息,第二跨进程消息为第一跨进程消息的处理结果的跨进程消息。
图10所示为本申请实施例的当前通信模式为请求应答的第二通信模式的通信装置的拓扑示意图。
图10的实施例类似于图8和图9所示的实施例,相比较于图8至图9所示的实施例,在图10的实施例中,上述当前通信模式可以但不限于为请求应答的第二通信模式,发布方为请求方,订阅方为应答方。
在如图10所示的当前通信模式可以但不限于为请求应答的第二通信模式的通信装置,请求方包括请求模块,应答方包括功能模块。该请求应答的第二通信模式适用于一对一且需要返回结果的场景。
上述请求模块可以包括多个请求模块。多个请求模块可以包括请求模块1、请求模块2等等。
具体来说,一个功能模块实现了一个功能,并注册到全局网络中,请求模块对此功能进行请求,功能模块将响应请求,并将结果返回给请求模块。具体请求应答拓扑图如图10所示。
结合示意图,请求应答模式有以下特点:
1)请求应答一定是一来一去对应的,即一次请求和一次应答匹配,应答没有完成则该次请求未完成;
2)功能模块的一个功能接口可以为多个请求模块服务;
3)单次应答和请求的先后顺序是确定的,但多次应答和请求之间的顺序不确定,例如从功能模块的时间线上来看,以下几个时间顺序都可能发生:
a)请求1->应答1->请求2->应答2
b)请求1->请求2->应答1->应答2
c)请求1->请求2->应答2->应答1
继续结合图10所示,装置还包括发布方主题订阅模块包括请求方主题订阅模块,用于通过请求方订阅请求方名字的主题。
第二跨进程消息接收模块,具体用于依据请求方订阅请求方名字的主题,请求方接收由应答方发送的包含请求方名字的主题的第二跨进程消息,包含请求方名字的主题的第二跨进程消息包括请求消息的处理结果的第二跨进程消息;
相应的,当前通信模式包括请求应答的第二通信模式,装置还包括如下两个模块。
订阅方接口调用模块包括应答方接口调用模块,具体用于根据实参值,应答方调用应答方接口,以通过应答方接口生成第一跨进程消息的处理结果的第二跨进程消息,发送第一跨进程消息的处理结果的第二跨进程消息,第一跨进程消息的处理结果的第二跨进程消息的主题名字包括请求方名字。
图11所示为本申请实施例的回调响应的第三通信模式的通信装置的请拓扑示意图。
图11的实施例类似于图8和图9所示的实施例,相比较于图8至图9所示
的实施例,在图11的实施例中,发布方为回调方,订阅方为响应方。回调方包5括功能模块,响应方包括响应模块。该回调响应的第三通信模式适用于一对多且需要返回结果的场景。
一个回调点可以挂载多个响应模块。多个响应模块可以包括响应模块1、响应模块2等等。对于多个响应模块的情况,功能模块的回调信息是同时发出去的,但是不同的响应模块的响应返回顺序是不确定的,甚至可能会缺失。
0具体来说,回调响应模式适用于功能模块想要其他模块处理一个数据然后还想拿到处理结果的场景。回调模块在全局网络中注册一个回调点,响应模块得到该数据,处理完成之后返回结果给回调模块。具体回调响应拓扑图如图11所示。
装置还包括:发布方主题订阅模块包括回调方主题订阅模块,用于通过回5调方订阅回调方名字的主题;
第二跨进程消息接收模块,具体用于依据回调方订阅回调方名字的主题,回调方接收由响应方发送的包含回调方名字的主题的第二跨进程消息,包含发布方名字的主题的第二跨进程消息包括回调消息的处理结果的第二跨进程消息。
相应的,当前通信模式包括请求应答的第二通信模式,装置还包括:0订阅方接口调用模块包括响应方接口调用模块,具体用于根据实参值,响应方调用响应方接口,以通过响应方接口生成第一跨进程消息的处理结果的第二跨进程消息,发送第一跨进程消息的处理结果的第二跨进程消息,第一跨进程消息的处理结果的第二跨进程消息的主题名字包括回调方名字。
上述装置中各个模块的功能和作用的实现过程具体详见上述装置中对应步5骤的实现过程,在此不再赘述。
图12所示为本申请实施例提供的通信系统50的模块框图。
如图12所示,该通信系统50包括一个或多个处理器51,用于实现如上的通信装置。
在一些实施例中,通信系统50可以包括计算机可读存储介质59,计算机可0读存储介质59可以存储有可被处理器51调用的程序,可以包括非易失性存储介质。在一些实施例中,通信系统50可以包括内存58和接口57。在一些实施例中,通信系统50还可以根据实际应用包括其他硬件。
本申请实施例的计算机可读存储介质59,其上存储有程序,该程序被处理器51执行时,用于实现如上描述的通信装置。
本申请可采用在一个或多个其中包含有程序代码的计算机可读存储介质59
(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序5产品的形式。计算机可读存储介质59包括永久性和非永久性、可移动和非可移动媒体,可以任何装置或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机可读存储介质59的例子包括但不限于:相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可0编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
以上仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说5明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包
括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、0方法、商品或者设备所固有的要素。在没有更多限制的情况下,语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
Claims (14)
1.一种通信方法,其特征在于,包括:
发布方生成当前通信模式对应的发布方接口,所述发布方接口包括参数名和参数类型;
发布方获取所述参数名和所述参数类型对应的实参值,得到本进程消息;
发布方将所述本进程消息转换为第一跨进程消息,所述第一跨进程消息包括主题;
发布方发送所述第一跨进程消息,以使通过当前通信模式对应的订阅方接口依据所述第一跨进程消息,传递所述发布方与所述订阅方之间的信息。
2.如权利要求1所述的通信方法,其特征在于,所述发布方生成当前通信模式对应的发布方接口,包括:
发布方根据Qt的元系统,生成用于作为发布方接口的信号函数,所述信号函数包括所述参数类型及所述参数名;
所述发布方获取所述参数名和所述参数类型对应的实参值,得到本进程消息,包括:
根据Qt的元系统,生成动态槽函数,所述动态槽函数与所述信号函数绑定,所述动态槽函数包括所述信号函数的所述参数名和参数类型;
在所述动态槽函数中,获取所述参数名和所述参数类型对应的实参值,得到所述发布方的第一映射接口;
所述发布方将所述本进程消息转换为第一跨进程消息,包括:
发布方使用进程间通信协议,将所述第一映射接口转换为第一跨进程消息。
3.如权利要求2所述的通信方法,其特征在于,所述发布方使用进程间通信协议,将所述第一映射接口转换为第一跨进程消息,包括:
发布方将所述本进程消息转换为进程间通信协议对应的消息;所述进程间通信协议对应的消息包括主题,所述主题包括发布方名字和功能组合;
发布方通过所述进程间通信协议发送所述进程间通信协议对应的消息,以使通过当前通信模式对应的订阅方接口依据所述进程间通信协议对应的消息,传递所述发布方与所述订阅方之间的信息。
4.如权利要求3所述的通信方法,其特征在于,所述进程间通信协议包括mqtt协议;
所述发布方将所述本进程消息转换为进程间通信协议对应的消息,包括:
发布方将所述本进程消息转换为mqtt消息;所述mqtt消息包括主题,所述主题包括发布方名字和功能组合;
所述发布方通过所述进程间通信协议发送所述进程间通信协议对应的消息,以使通过当前通信模式对应的订阅方接口依据所述进程间通信协议对应的消息,传递所述发布方与所述订阅方之间的信息,包括:
发布方通过所述mqtt协议发送所述mqtt消息,以使通过当前通信模式对应的订阅方接口依据所述mqtt消息,传递所述发布方与所述订阅方之间的信息。
5.如权利要求3所述的通信方法,其特征在于,所述进程间通信协议包括socked协议;所述进程间通信协议对应的消息包括socked协议对应的套接字消息;
或者,
所述进程间通信协议包括管道协议;所述进程间通信协议对应的消息包括所述管道协议对应的管道消息。
6.如权利要求1所述的通信方法,其特征在于,所述当前通信模式包括广播订阅的第一通信模式,所述发布方为广播方;所述第一跨进程消息的主题为广播方名字和功能组合;
所述发布方生成当前通信模式对应的发布方接口,包括:
广播方根据Qt的元系统确定所述第一通信模式对应的广播方接口;
所述发布方发送所述第一跨进程消息,以使通过当前通信模式对应的订阅方接口依据所述第一跨进程消息,传递所述发布方与所述订阅方之间的信息,包括:
广播方发送所述第一跨进程消息,以通过所述第一通信模式对应的订阅方接口传递所述广播方的信息。
7.如权利要求1所述的通信方法,其特征在于,所述第一跨进程消息的主题包括发布方名字和功能组合;
在所述发布方发送所述第一跨进程消息之后,所述方法还包括:
依据所述发布方订阅所述发布方名字的主题,发布方接收由所述订阅方发送的包含所述发布方名字的主题的第二跨进程消息,所述第二跨进程消息为所述第一跨进程消息的处理结果的跨进程消息。
8.如权利要求7所述通信方法,其特征在于,所述当前通信模式包括请求应答的第二通信模式,所述发布方为请求方,所述订阅方为应答方;所述依据所述发布方订阅所述发布方名字的主题,发布方接收由所述订阅方发送的包含所述发布方名字的主题的第二跨进程消息,包括:依据所述请求方订阅所述请求方名字的主题,所述请求方接收由所述应答方发送的包含请求方名字的主题的第二跨进程消息,所述包含请求方名字的主题的第二跨进程消息包括请求消息的处理结果的第二跨进程消息;
或者,
所述当前通信模式包括回调响应的第三通信模式,所述发布方为回调方,所述订阅方为响应方;所述依据所述发布方订阅所述发布方名字的主题,发布方接收由所述订阅方发送的包含所述发布方名字的主题的第二跨进程消息,包括:所述依据所述回调方订阅所述回调方名字的主题,所述回调方接收由所述响应方发送的包含所述回调方名字的主题的第二跨进程消息,所述包含所述发布方名字的主题的第二跨进程消息包括回调消息的处理结果的第二跨进程消息。
9.一种通信方法,其特征在于,包括:
订阅方生成当前通信模式对应的订阅方接口;
订阅方依据订阅方订阅的与发布方匹配的主题,接收第一跨进程消息;
订阅方反向解析所述第一跨进程消息,获得所述发布方的参数名和实参值;
订阅方在确定所述订阅方的参数名与所述发布方的参数名一致的情况下,根据所述实参值,调用所述订阅方接口,以通过所述订阅方接口传递所述发布方与所述订阅方之间的信息。
10.如权利要求9所述的通信方法,其特征在于,所述当前通信模式包括广播订阅的第一通信模式;
所述订阅方反向解析所述第一跨进程消息,获得所述发布方的参数名和实参值,包括:
订阅方根据Qt的元系统,反向解析所述第一跨进程消息为第二映射接口;
订阅方根据Qt的元系统,获得所述发布方的参数名;
订阅方通过所述第二映射接口获得所述发布方的参数名对应的实参值;
订阅方调用第三映射接口的动态槽函数的元方法,所述第三映射接口包括利用Qt的元系统记录的广播方名字和功能组合的主题及元方法;
所述根据所述实参值,调用所述订阅方接口,以通过所述订阅方接口传递所述发布方与所述订阅方之间的信息,包括:
订阅方将所述实参值赋给所述元方法,调用所述第一通信模式对应的订阅方接口,以通过所述订阅方接口传递广播方的信息。
11.如权利要求9所述的通信方法,其特征在于,所述当前通信模式包括请求应答的第二通信模式或回调响应的第三通信模式,所述方法还包括:
所述根据所述实参值,调用所述订阅方接口,以通过所述订阅方接口传递所述发布方与所述订阅方之间的信息,包括:
根据所述实参值,所述订阅方调用所述订阅方接口,以通过所述订阅方接口生成所述第一跨进程消息的处理结果的第二跨进程消息,发送所述第一跨进程消息的处理结果的第二跨进程消息,所述第一跨进程消息的处理结果的第二跨进程消息的主题名字包括发布方名字。
12.一种通信装置,其特征在于,包括:
发布方接口生成模块,用于发布方生成当前通信模式对应的发布方接口,所述发布方接口包括参数名和参数类型;
本进程消息得到模块,用于发布方获取所述参数名和所述参数类型对应的实参值,得到本进程消息;
第一跨进程消息得到模块,用于发布方将所述本进程消息转换为第一跨进程消息,所述第一跨进程消息包括主题;
第一跨进程消息发送模块,用于发布方发送所述第一跨进程消息,以使通过当前通信模式对应的订阅方接口依据所述第一跨进程消息,传递所述发布方与所述订阅方之间的信息。
13.一种通信装置,其特征在于,包括:
订阅方接口生成模块,用于订阅方生成当前通信模式对应的订阅方接口;
第一跨进程消息接收模块,用于订阅方依据订阅方订阅的与发布方匹配的主题,接收第一跨进程消息;
第一跨进程消息反向解析模块,用于订阅方反向解析所述第一跨进程消息,获得所述发布方的参数名和实参值;
订阅方接口调用模块,用于订阅方在确定所述订阅方的参数名与所述发布方的参数名一致的情况下,根据所述实参值,调用所述订阅方接口,以通过所述订阅方接口传递所述发布方与所述订阅方之间的信息。
14.一种计算机可读存储介质,其特征在于,其上存储有程序,该程序被处理器执行时,实现如权利要求1-8中任一项和/或9-11任一项所述的通信方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211659422.0A CN115981888A (zh) | 2022-12-22 | 2022-12-22 | 通信方法、装置和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211659422.0A CN115981888A (zh) | 2022-12-22 | 2022-12-22 | 通信方法、装置和计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115981888A true CN115981888A (zh) | 2023-04-18 |
Family
ID=85959168
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211659422.0A Pending CN115981888A (zh) | 2022-12-22 | 2022-12-22 | 通信方法、装置和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115981888A (zh) |
-
2022
- 2022-12-22 CN CN202211659422.0A patent/CN115981888A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9055026B2 (en) | Systems and methods for the demand-driven deployment of location-neutral software | |
CN112448969B (zh) | 链路追踪方法、装置、系统、设备及可读存储介质 | |
AU2007227774A1 (en) | Estimation of initial dynamic rendering control data | |
CN110944018A (zh) | 一种基于注解和动态代理的rpc通信方法及设备、介质 | |
US20150370546A1 (en) | Method and apparatus for generating data distribution service application | |
CN112689020B (zh) | 一种消息传输方法、消息中间件、电子设备及存储介质 | |
US20020046304A1 (en) | Dynamic class loading | |
CN104702675A (zh) | 用户事件的响应方法及装置 | |
CN109729121B (zh) | 一种云存储系统及用于云存储系统中实现自定义数据处理的方法 | |
CN114221995A (zh) | 服务调用方法、装置及电子设备 | |
CN114500546B (zh) | 基于负载均衡集群的通信消息发送方法、装置及设备 | |
CN110618768B (zh) | 信息呈现方法和装置 | |
CN111966653A (zh) | 微服务调用链路数据处理方法、装置、服务器及存储介质 | |
CN113468445B (zh) | 请求处理方法、装置、电子设备和计算机可读介质 | |
CN107395663B (zh) | 数据获取方法及装置 | |
CN115277816B (zh) | 服务适配方法、设备、系统以及计算机可读介质 | |
CN115827278A (zh) | 跨模块通信方法、系统、设备及存储介质 | |
CN115981888A (zh) | 通信方法、装置和计算机可读存储介质 | |
US20090083296A1 (en) | Metadata endpoint for a generic service | |
CN111615091B (zh) | 一种基于智能手表的交通卡开卡方法及设备 | |
CN114327941A (zh) | 一种服务提供方法及装置 | |
CN110928944B (zh) | 一种数据处理方法及其装置 | |
KR20120083710A (ko) | 데이터 전송 방법 및 장치와 데이터 처리 방법 및 장치 | |
CN109600403B (zh) | 一种发送信息的方法及装置 | |
CN113506569B (zh) | 一种语音交互的方法、系统及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |