基于共享内存的跨进程消息通知方法及装置与流程

文档序号:30063410发布日期:2022-05-18 00:14阅读:311来源:国知局
基于共享内存的跨进程消息通知方法及装置与流程

1.本发明涉及计算机技术领域,尤其涉及一种基于共享内存的跨进程消息通知方法及装置。


背景技术:

2.现有windows平台可以支持多进程架构的应用(app)。相关技术中,当开发人员想要接收跨进程消息回调通知时,可以通过使用信号量,互斥量,事件等内核对象进行实现。
3.但是,相关技术中基于上述内核对象进行跨进程通信时,通常需要重复编写一些代码,开发效率低。


技术实现要素:

4.针对相关技术存在的问题,本发明提供一种基于共享内存的跨进程消息通知方法及装置。
5.本发明提供一种基于共享内存的跨进程消息通知方法,应用于目标应用的发布端进程,其中所述目标应用的发布端进程和观察端进程运行于终端;所述方法包括:
6.所述发布端进程在目标关键字的对应数据发生变化时,从所述终端上的共享内存中查找与所述目标关键字对应的目标进程标识信息,触发与所述目标进程标识信息对应的第一通知事件,向所述目标进程标识信息对应的观察端进程发送目标事件通知;其中,所述共享内存中存储有关键字和进程标识信息的对应关系;所述发布端进程和所述观察端进程共享所述共享内存;所述目标事件通知用于指示所述目标关键字的对应数据发生变化。
7.根据本发明提供的一种基于共享内存的跨进程消息通知方法,所述发布端进程在目标关键字的对应数据发生变化时,从所述终端上的共享内存中查找与所述目标关键字对应的目标进程标识信息,包括:
8.所述发布端进程在所述目标关键字的对应数据发生变化时,遍历所述共享内存,查找与所述目标关键字对应的目标进程标识信息。
9.根据本发明提供的一种基于共享内存的跨进程消息通知方法,所述方法还包括:在所述终端上运行的所述目标应用的任一进程内对事件监听数据加锁;其中,以下操作在任一进程内互斥:
10.注册监听事件的操作;
11.反注册操作;
12.所述第二线程获取目标数据的操作。
13.根据本发明提供的一种基于共享内存的跨进程消息通知方法,所述方法还包括:
14.在所述终端上运行的所述目标应用的任一进程对所述共享内存进行目标操作时,当在预设超时时间内没有获取到跨进程锁时,确定所述目标操作失败。
15.所述目标操作包括以下至少一项:
16.在所述共享内存中插入注册项;
17.在所述共享内存中删除注册项;
18.查询所述共享内存中关键字对应的进程标识信息列表;
19.初始化时检查数据完整性。
20.本发明还提供一种基于共享内存的跨进程消息通知方法,应用于目标应用的观察端进程,其中所述目标应用的发布端进程和观察端进程运行于终端;所述方法包括:
21.所述观察端进程接收到所述目标事件通知时,获取所述目标关键字对应的目标数据。
22.根据本发明提供的一种基于共享内存的跨进程消息通知方法,所述观察端进程接收到所述目标事件通知时,获取所述目标关键字对应的目标数据之前,所述方法还包括:
23.所述观察端进程基于所述目标关键字注册一个注册事件及对应的回调通知,将所述观察端进程的目标进程标识信息与所述目标关键字的对应关系存储至所述共享内存。
24.根据本发明提供的一种基于共享内存的跨进程消息通知方法,所述方法还包括:
25.所述观察端进程初始化时,生成所述观察端进程的目标进程标识信息,及基于所述目标进程标识信息创建所述第一通知事件;其中,所述第一通知事件对应于所述观察端进程的目标进程标识信息。
26.根据本发明提供的一种基于共享内存的跨进程消息通知方法,所述观察端进程注册目标关键字对应的回调通知之后,所述方法还包括:
27.所述观察端进程创建第一线程;所述第一线程用于接收所述目标事件通知;所述第一线程接收到所述目标事件通知时,遍历查找所述观察端进程对应的所有的注册事件中已触发的注册事件;派发所述已触发的注册事件的对应通知。
28.根据本发明提供的一种基于共享内存的跨进程消息通知方法,所述派发所述已触发的注册事件的对应通知,包括:
29.所述观察端进程创建第二线程,基于所述第二线程派发所述已触发的注册事件的对应通知。
30.本发明还提供一种基于共享内存的跨进程消息通知装置,应用于目标应用的发布端进程,其中所述目标应用的发布端进程和观察端进程运行于终端;所述装置包括:
31.第一处理模块,用于在目标关键字的对应数据发生变化时,从所述终端上的共享内存中查找与所述目标关键字对应的目标进程标识信息,触发与所述目标进程标识信息对应的第一通知事件,向所述目标进程标识信息对应的观察端进程发送目标事件通知;其中,所述共享内存中存储有关键字和进程标识信息的对应关系;所述发布端进程和所述观察端进程共享所述共享内存;所述目标事件通知用于指示所述目标关键字的对应数据发生变化。
32.本发明还提供一种基于共享内存的跨进程消息通知装置,应用于目标应用的观察端进程,其中所述目标应用的发布端进程和观察端进程运行于终端;所述装置包括:
33.获取模块,用于接收到所述目标事件通知时,获取所述目标关键字对应的目标数据。
34.本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述基于共享内存的跨进程消息通知方法的步骤。
35.本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述基于共享内存的跨进程消息通知方法的步骤。
36.本发明提供的基于共享内存的跨进程消息通知方法中,通过在终端上共享内存中存储关键字和进程标识信息的对应关系,发布端进程在目标关键字的对应数据发生变化时,从所述共享内存中查找与所述目标关键字对应的目标进程标识信息,触发与目标进程标识信息对应的第一通知事件,向目标进程标识信息对应的观察端进程发送目标事件通知,以指示目标关键字的对应数据发生变化,而观察端进程接收到所述目标事件通知时,获取所述目标关键字对应的目标数据,从而实现了观察端进程仅需注册一个注册事件及对应的回调通知,并在收到跨进程的目标事件通知时调起回调函数,而发布端进程也只需要调用相关接口进行通知,跨进程消息通知实现简单,能够提高开发效率。
附图说明
37.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
38.图1是本发明提供的基于共享内存的跨进程消息通知方法的流程示意图之一;
39.图2是本发明提供的基于共享内存的跨进程消息通知方法的流程示意图之二;
40.图3是本发明提供的基于共享内存的跨进程消息通知方法的流程示意图之三;
41.图4是本发明提供的基于共享内存的跨进程消息通知方法的流程示意图之四;
42.图5为本发明提供的基于共享内存的跨进程消息通知装置的结构示意图;
43.图6是本发明提供的终端的结构示意图之一;
44.图7是本发明提供的终端的结构示意图之二。
具体实施方式
45.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
46.下面结合附图,通过一些实施例及其应用场景对本发明提供的基于共享内存的跨进程消息通知方法进行详细地说明。
47.本发明提供一种基于共享内存的跨进程消息通知方法,该方法可适用于操作系统中跨进程消息通知的场景中,通过在终端上共享内存中存储关键字和进程标识信息的对应关系,发布端进程在目标关键字的对应数据发生变化时,从所述共享内存中查找与所述目标关键字对应的目标进程标识信息,触发与目标进程标识信息对应的第一通知事件,向目标进程标识信息对应的观察端进程发送目标事件通知,以指示目标关键字的对应数据发生变化;观察端进程接收到所述目标事件通知时,获取所述目标关键字对应的目标数据,从而实现了观察端进程仅需注册一个注册事件及对应的回调通知,并在收到跨进程的目标事件通知时调起回调函数,而发布端进程也只需要调用相关接口进行通知,跨进程消息通知实
现简单,能够提高开发效率。
48.图1是本发明提供的基于共享内存的跨进程消息通知方法的流程示意图之一,该方法应用于终端,终端上运行目标应用的发布端进程和观察端进程,例如system进程;如图1所示,该方法包括步骤101-步骤102,其中:
49.步骤101,发布端进程在目标关键字的对应数据发生变化时,从所述终端上的共享内存中查找与所述目标关键字对应的目标进程标识信息;
50.步骤102,触发与所述目标进程标识信息对应的第一通知事件,向所述目标进程标识信息对应的观察端进程发送目标事件通知;其中,所述共享内存中存储有关键字和进程标识信息的对应关系;所述发布端进程和所述观察端进程共享所述共享内存;所述目标事件通知用于指示所述目标关键字的对应数据发生变化。
51.需要说明的是,本发明提供的基于共享内存的跨进程消息通知方法可适用于操作系统中跨进程消息通知的场景中,操作系统例如windows或linux等。该方法的执行主体可以为基于共享内存的跨进程消息通知装置,例如终端、或者该基于共享内存的跨进程消息通知装置中的用于执行基于共享内存的跨进程消息通知方法的控制模块。
52.本发明中,在终端上运行的目标应用可以支持多个发布端进程和多个观察端进程。
53.可选地,观察端进程接收到所述目标事件通知时,获取所述目标关键字对应的目标数据。
54.可选地,观察端进程初始化时,都会生成所述观察端进程对应的目标进程标识信息,例如guid;目标进程标识信息用于全局唯一地标该观察端进程,观察端进程基于所述目标进程标识信息创建一个唯一的第一通知事件;其中,所述第一通知事件对应于所述观察端进程的目标进程标识信息。具体地,第一通知事件可以表示为:
55.notifier_newnotify_[guid];所述guid表示所述观察端进程的目标进程标识信息。例如,第一通知事件为:
[0056]
notifier_newnotify_{e0208792-f756-48a0-856a-679ae14d6fea};其中,guid为“e0208792-f756-48a0-856a-679ae14d6fea”。
[0057]
可选地,当任意一个观察端进程对某个key(也即目标关键字)比较关注,想要接收与该key相关的跨进程消息回调通知时,该观察端进程基于目标关键字注册一个注册事件及对应的回调通知,将该观察端进程的目标进程标识信息与所述目标关键字的对应关系存储至所述共享内存。具体地,该观察端进程注册一个注册事件及对应的回调通知时,将该观察端进程的目标进程标识信息和目标关键字进行拼接,得到事件名(eventname)。eventname可以表示为:notifier_event_[key][guid];其中,所述key表示所述目标关键字,所述guid表示该观察端进程的目标进程标识信息,所述guid用于全局唯一地标该观察端进程。例如,eventname为:
[0058]
notifier_event_client.language.value{e0208792-f756-48a0-856a-679ae14d6fea};其中,key为“client.language.value”,guid为“e0208792-f756-48a0-856a-679ae14d6fea”。
[0059]
可选地,共享内存中包括以下至少一项内核对象:信号量、互斥量和事件。将内核对象存放在共享内存,共享内存为全局命令空间(global//)。对于system进程,也能够通过
本发明方案接收回调通知。
[0060]
本发明中观察端进程只需要注册一个回调通知,通过共享内存存放key及对应的事件名(event name);观察端进程注册了关心的key及回调后,发布端进程在key对应的数据发生变化时,调用相关接口通知观察端进程。
[0061]
具体地,发布端进程在检测到目标关键字的对应数据发生变化时,遍历所述共享内存,查找到与所述目标关键字对应的目标进程标识信息,触发与所述目标进程标识信息对应的第一通知事件,向所述目标进程标识信息对应的观察端进程发送目标事件通知。例如,当服务器向终端推送了针对目标应用的配置项时,目标应用的发布端进程会检测到数据变化,发布端进程将目标数据先存放在硬盘上,和观察端进程约定好存放位置;然后发布端进程向观察端进程发送目标事件通知,通知观察端进程获取数据;观察端进程在接收到目标事件通知时,在约定的存放位置获取目标数据。
[0062]
本发明提供的基于共享内存的跨进程消息通知方法中,通过在终端上共享内存中存储关键字和进程标识信息的对应关系,发布端进程在目标关键字的对应数据发生变化时,从所述共享内存中查找与所述目标关键字对应的目标进程标识信息,触发与目标进程标识信息对应的第一通知事件,向目标进程标识信息对应的观察端进程发送目标事件通知,以指示目标关键字的对应数据发生变化;观察端进程接收到所述目标事件通知时,获取所述目标关键字对应的目标数据,从而实现了观察端进程仅需注册一个注册事件及对应的回调通知,并在收到跨进程的目标事件通知时调起回调函数,而发布端进程也只需要调用相关接口进行通知,跨进程消息通知实现简单,能够提高开发效率。
[0063]
图2是本发明提供的基于共享内存的跨进程消息通知方法的流程示意图之二,该方法应用于终端,终端上运行目标应用的发布端进程和观察端进程;如图2所示,该方法包括步骤201-步骤202,其中:
[0064]
步骤201,发布端进程在目标关键字的对应数据发生变化时,从所述终端上的共享内存中查找与所述目标关键字对应的目标进程标识信息,触发与所述目标进程标识信息对应的第一通知事件,向所述目标进程标识信息对应的观察端进程发送目标事件通知;其中,所述共享内存中存储有关键字和进程标识信息的对应关系;所述发布端进程和所述观察端进程共享所述共享内存;所述目标事件通知用于指示所述目标关键字的对应数据发生变化。
[0065]
步骤202,观察端进程接收到所述目标事件通知时,获取所述目标关键字对应的目标数据。
[0066]
需要说明的是,本发明提供的方案,依靠内核对象的引用计数来确定资源是否应该释放,并不依赖某个服务,实现去中心化;例如:任一进程注册某个通知,其他进程就可以通知该进程,不需要依赖某个服务启动。
[0067]
可选地,观察端进程注册目标关键字对应的回调通知之后,观察端进程在进程内创建第一线程;第一线程用于接收目标事件通知;例如所述第一线程等待第一通知事件notifier_newnotify_[guid]事件;所述第一线程接收到所述目标事件通知时,遍历观察端进程对应的所有的注册事件(例如,notifier_event_xx),检查是否触发;当查找到观察端进程对应的所有的注册事件中已触发的注册事件时,观察端进程派发已触发的注册事件的对应通知。
[0068]
实际中,观察端进程派发所述已触发的注册事件的对应通知的方式可以包括:所述观察端进程创建第二线程,基于所述第二线程派发所述已触发的注册事件的对应通知,不会同步等待派发结束。
[0069]
本发明中,对于进程内注册回调和跨进程加入数据,都是多线程安全的。具体地,
[0070]
针对进程内多线程数据同步,本发明在所述终端上运行的所述目标应用的任一进程内对事件监听数据加锁;其中,以下操作在任一进程内互斥:
[0071]
注册监听事件的操作;
[0072]
反注册操作;
[0073]
所述第二线程获取目标数据的操作。
[0074]
针对跨进程数据同步,本发明在所述终端上运行的所述目标应用的任一进程对所述共享内存进行目标操作时,当在预设超时时间内没有获取到跨进程锁时,确定所述目标操作失败,例如读/写失败。
[0075]
所述目标操作包括以下至少一项:
[0076]
在所述共享内存中插入注册项;注册项例如为eventname;
[0077]
在所述共享内存中删除注册项;
[0078]
查询所述共享内存中关键字对应的进程标识信息列表;
[0079]
初始化时检查数据完整性。
[0080]
图3是本发明提供的基于共享内存的跨进程消息通知方法的流程示意图之三,参见图3,该方法包括步骤301-步骤304,其中:
[0081]
步骤301,观察端进程注册一个注册事件及对应回调通知。
[0082]
该注册事件也可称为观察事件。
[0083]
步骤302,观察端进程等待事件通知。
[0084]
步骤303,观察端进程判断是否接收到事件通知;当接收到事件通知时,转到步骤304;当未接收到事件通知时,转到步骤302。
[0085]
步骤304,观察端进程调用事件对应回调。
[0086]
图4是本发明提供的基于共享内存的跨进程消息通知方法的流程示意图之四,参见图4,该方法包括步骤401-步骤403,其中:
[0087]
步骤401,发布端进程通知一个事件(event)。
[0088]
步骤402,发布端进程打开共享内存,找到事件对应的事件名(event名)。
[0089]
步骤403,发布端进程通知对应事件。
[0090]
下面对本发明提供的基于共享内存的跨进程消息通知装置进行描述,下文描述的基于共享内存的跨进程消息通知装置与上文描述的基于共享内存的跨进程消息通知方法可相互对应参照。
[0091]
图5为本发明提供的基于共享内存的跨进程消息通知装置的结构示意图,该基于共享内存的跨进程消息通知装置500应用于终端,在所述终端上运行目标应用的发布端进程和观察端进程;如图5所示,该基于共享内存的跨进程消息通知装置500包括:
[0092]
第一处理模块501,用于在目标关键字的对应数据发生变化时,从所述终端上的共享内存中查找与所述目标关键字对应的目标进程标识信息,触发与所述目标进程标识信息对应的第一通知事件,向所述目标进程标识信息对应的观察端进程发送目标事件通知;其
中,所述共享内存中存储有关键字和进程标识信息的对应关系;所述发布端进程和所述观察端进程共享所述共享内存;所述目标事件通知用于指示所述目标关键字的对应数据发生变化。
[0093]
本发明提供的基于共享内存的跨进程消息通知装置,通过在终端上共享内存中存储关键字和进程标识信息的对应关系,发布端进程在目标关键字的对应数据发生变化时,从所述共享内存中查找与所述目标关键字对应的目标进程标识信息,触发与目标进程标识信息对应的第一通知事件,向目标进程标识信息对应的观察端进程发送目标事件通知,以指示目标关键字的对应数据发生变化;观察端进程接收到所述目标事件通知时,获取所述目标关键字对应的目标数据,从而实现了观察端进程仅需注册一个注册事件及对应的回调通知,并在收到跨进程的目标事件通知时调起回调函数,而发布端进程也只需要调用相关接口进行通知,跨进程消息通知实现简单,能够提高开发效率。
[0094]
可选地,第一处理模块501,具体用于所述发布端进程在所述目标关键字的对应数据发生变化时,遍历所述共享内存,查找与所述目标关键字对应的目标进程标识信息。
[0095]
可选地,所述基于共享内存的跨进程消息通知装置500还包括:
[0096]
加锁模块,用于在所述终端上运行的所述目标应用的任一进程内对事件监听数据加锁;其中,以下操作在任一进程内互斥:
[0097]
注册监听事件的操作;
[0098]
反注册操作;
[0099]
所述第二线程获取目标数据的操作。
[0100]
可选地,所述基于共享内存的跨进程消息通知装置500还包括:
[0101]
确定模块,用于在所述终端上运行的所述目标应用的任一进程对所述共享内存进行目标操作时,当在预设超时时间内没有获取到跨进程锁时,确定所述目标操作失败。
[0102]
所述目标操作包括以下至少一项:
[0103]
在所述共享内存中插入注册项;
[0104]
在所述共享内存中删除注册项;
[0105]
查询所述共享内存中关键字对应的进程标识信息列表;
[0106]
初始化时检查数据完整性。
[0107]
本发明提供的基于共享内存的跨进程消息通知装置能够实现图1所示方法实施例实现的各个过程,并达到相同的技术效果,为避免重复,这里不再赘述。
[0108]
图6是本发明提供的终端的结构示意图之一,如图6所示,本发明提供的终端600,包括处理器601,存储器602,存储在存储器602上并可在所述处理器601上运行的程序或指令,该程序或指令被处理器601执行时实现上述终端侧的基于共享内存的跨进程消息通知方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0109]
图7是本发明提供的终端的结构示意图之二,如图7所示,该终端700,可以包括:处理器(processor)710、通信接口(communications interface)720、存储器(memory)730和通信总线740,其中,处理器710,通信接口720,存储器730通过通信总线740完成相互间的通信。处理器710可以调用存储器730中的逻辑指令,以执行基于共享内存的跨进程消息通知方法,该方法包括:发布端进程在目标关键字的对应数据发生变化时,从所述终端上的共享内存中查找与所述目标关键字对应的目标进程标识信息,触发与所述目标进程标识信息对
应的第一通知事件,向所述目标进程标识信息对应的观察端进程发送目标事件通知;其中,所述共享内存中存储有关键字和进程标识信息的对应关系;所述发布端进程和所述观察端进程共享所述共享内存;所述目标事件通知用于指示所述目标关键字的对应数据发生变化;所述观察端进程接收到所述目标事件通知时,获取所述目标关键字对应的目标数据。
[0110]
此外,上述的存储器730中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0111]
另一方面,本发明还提供一种计算机程序产品,计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,计算机程序被处理器执行时,计算机能够执行上述各方法所提供的基于共享内存的跨进程消息通知方法,该方法包括:发布端进程在目标关键字的对应数据发生变化时,从所述终端上的共享内存中查找与所述目标关键字对应的目标进程标识信息,触发与所述目标进程标识信息对应的第一通知事件,向所述目标进程标识信息对应的观察端进程发送目标事件通知;其中,所述共享内存中存储有关键字和进程标识信息的对应关系;所述发布端进程和所述观察端进程共享所述共享内存;所述目标事件通知用于指示所述目标关键字的对应数据发生变化;所述观察端进程接收到所述目标事件通知时,获取所述目标关键字对应的目标数据。
[0112]
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的基于共享内存的跨进程消息通知方法,该方法包括:发布端进程在目标关键字的对应数据发生变化时,从所述终端上的共享内存中查找与所述目标关键字对应的目标进程标识信息,触发与所述目标进程标识信息对应的第一通知事件,向所述目标进程标识信息对应的观察端进程发送目标事件通知;其中,所述共享内存中存储有关键字和进程标识信息的对应关系;所述发布端进程和所述观察端进程共享所述共享内存;所述目标事件通知用于指示所述目标关键字的对应数据发生变化;所述观察端进程接收到所述目标事件通知时,获取所述目标关键字对应的目标数据。
[0113]
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0114]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指
令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0115]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1