发明内容
本发明的实施例提供一种事件通知方法及装置,提供了服务器主动向客户端通知文件系统变化的机制。
本发明的第一方面,提供一种事件通知方法,应用于服务器中,所述服务器与第一客户端、第二客户端通信,所述服务器注册所述第一客户端的应用APP的至少一个操作动作,所述APP是运行在所述第一客户端的程序,包括:
接收所述第二客户端发送的对第一文件的操作指示,其中,所述第一文件是存储在所述服务器的所述第一客户端的APP的数据的文件;
按照所述操作指示所指定的第一操作动作,对所述第一文件执行操作;
查找注册的所述第一客户端的APP的所述操作动作中,是否注册有所述第一操作动作;
当注册有所述第一操作动作时,向所述第一客户端发送事件通知消息;其中,所述事件通知消息中携带有所述第一操作动作的信息。
结合第一方面,在一种可能的实现方式中,在所述接收所述第二客户端发送的对第一文件的操作指示之前,还包括:
接收所述第一客户端发送的所述APP的注册请求;其中,所述注册请求中携带注册操作动作信息;
根据所述注册请求携带的注册操作动作信息,在所述APP的分布式通知notify注册表中添加与所述注册操作动作信息相应的操作动作的注册项。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,在所述根据所述注册请求携带的操作动作信息,在所述APP的分布式通知notify注册表中添加与所述操作动作信息相应的操作动作的注册项之后,还包括:
向所述第一客户端发送注册成功消息;其中,所述注册成功消息中包含所述APP的目录信息,以便所述第一客户端将所述目录信息添加到预存的侦听列表中,进而当所述第一客户端在接收到所述事件通知消息后,根据所述侦听列表将所述事件通知消息通知所述APP。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,还包括:
接收所述第一客户端发送的所述APP的注销请求;其中,所述注销请求中携带注销操作动作信息;
根据所述注销请求携带的注销操作动作信息,将所述APP的分布式notify注册表中与所述注销操作动作信息相应的操作动作的注册项删除。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,在所述根据所述注销请求携带的注销操作动作信息,将所述APP的分布式notify注册表中与所述注销操作动作信息相应的操作动作的注册项删除之后,还包括:
向所述第一客户端发送注销成功消息;其中所述注销成功消息中包含所述APP的目录信息,以便所述第一客户端根据所述注销成功消息从侦听列表中删除所述目录信息。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,所述操作动作包括删除、修改、创建、添加。
本发明的第二方面,提供一种事件通知方法,应用于第一客户端,所述第一客户端与服务器通信,所述服务器与第二客户端通信,包括:
生成所述第一客户端的应用APP的注册请求;其中,所述注册请求中携带注册操作动作信息,所述APP是运行在所述第一客户端的程序;
将所述注册请求发送至所述服务器;以便所述服务器注册所述注册操作动作信息对应的操作动作后,接收到所述第二客户端发送的对第一文件的操作指示时,根据所述操作指示所指定的第一操作动作对所述第一文件执行操作,并且当查找到注册有所述第一操作动作时,向所述第一客户端发送事件通知消息;其中,所述事件通知消息中携带有所述第一操作动作的信息;
其中,所述第一文件是存储在所述服务器的所述第一客户端的APP的数据的文件。
结合第二方面,在一种可能的实现方式中,在所述生成所述第一客户端的应用APP的注册请求之后,还包括:
将所述注册请求中携带的所述注册操作动作信息的格式进行转换得到所述服务器内部的统一格式;以便所述服务器将运行不同操作系统的客户端发送的所述注册操作动作信息对应的操作动作进行统一注册。
结合第二方面和上述可能的实现方式,在另一种可能的实现方式中,在所述将所述注册请求发送至所述服务器之后,还包括:
接收所述服务器发送的注册成功消息;其中,所述注册成功消息中包含所述APP的目录信息;
将所述目录信息添加到预存的侦听列表中,以便在接收到所述事件通知消息之后,根据所述侦听列表将所述事件通知消息通知所述APP。
本发明的第三方面,提供一种事件通知装置,应用于服务器中,所述服务器与第一客户端、第二客户端通信,所述服务器注册所述第一客户端的应用APP的至少一个操作动作,所述APP是运行在所述第一客户端的程序,包括:
第一接收单元,用于接收所述第二客户端发送的对第一文件的操作指示,其中,所述第一文件是存储在所述服务器的所述第一客户端的APP的数据的文件;
执行单元,用于按照所述第一接收单元接收的所述操作指示所指定的第一操作动作,对所述第一文件执行操作;
查找单元,用于查找注册的所述第一客户端的APP的所述操作动作中,是否注册有所述第一操作动作;
第一发送单元,用于当注册有所述第一操作动作时,向所述第一客户端发送事件通知消息;其中,所述事件通知消息中携带有所述第一操作动作的信息。
结合第三方面,在一种可能的实现方式中,还包括:
第二接收单元,用于在所述第一接收单元接收所述第二客户端发送的对第一文件的操作指示之前,接收所述第一客户端发送的所述APP的注册请求;其中,所述注册请求中携带注册操作动作信息;
添加单元,用于根据所述第二接收单元接收的所述注册请求携带的注册操作动作信息,在所述APP的分布式通知notify注册表中添加与所述注册操作动作信息相应的操作动作的注册项。
结合第三方面和上述可能的实现方式,在另一种可能的实现方式中,还包括:
第二发送单元,用于在所述添加单元根据所述注册请求携带的操作动作信息,在所述APP的分布式通知notify注册表中添加与所述操作动作信息相应的操作动作的注册项之后,向所述第一客户端发送注册成功消息;其中,所述注册成功消息中包含所述APP的目录信息,以便所述第一客户端将所述目录信息添加到预存的侦听列表中,进而当所述第一客户端在接收到所述事件通知消息后,根据所述侦听列表将所述事件通知消息通知所述APP。
结合第三方面和上述可能的实现方式,在另一种可能的实现方式中,
所述第二接收单元,还用于接收所述第一客户端发送的所述APP的注销请求;其中,所述注销请求中携带注销操作动作信息;
所述装置还包括:
删除单元,用于根据所述第二接收单元接收的所述注销请求携带的注销操作动作信息,将所述APP的分布式notify注册表中与所述注销操作动作信息相应的操作动作的注册项删除。
结合第三方面和上述可能的实现方式,在另一种可能的实现方式中,
所述第二发送单元,还用于在所述删除单元根据所述注销请求携带的注销操作动作信息,将所述APP的分布式notify注册表中与所述注销操作动作信息相应的操作动作的注册项删除之后,向所述第一客户端发送注销成功消息;其中所述注销成功消息中包含所述APP的目录信息,以便所述第一客户端根据所述注销成功消息从侦听列表中删除所述目录信息。
本发明的第四方面,提供一种事件通知装置,应用于第一客户端,所述第一客户端与服务器通信,所述服务器与第二客户端通信,包括:
生成单元,用于生成所述第一客户端的应用APP的注册请求;其中,所述注册请求中携带注册操作动作信息,所述APP是运行在所述第一客户端的程序;
发送单元,用于将所述生成单元生成的注册请求发送至所述服务器;以便所述服务器注册所述注册操作动作信息对应的操作动作后,接收到所述第二客户端发送的对第一文件的操作指示时,根据所述操作指示所指定的第一操作动作对所述第一文件执行操作,并且当查找到注册有所述第一操作动作时,向所述第一客户端发送事件通知消息;其中,所述事件通知消息中携带有所述第一操作动作的信息;
其中,所述第一文件是存储在所述服务器的所述第一客户端的APP的数据的文件。
结合第四方面,在另一种可能的实现方式中,还包括:
转换单元,用于在所述生成单元生成所述第一客户端的应用APP的注册请求之后,将所述注册请求中携带的所述注册操作动作信息的格式进行转换得到所述服务器内部的统一格式;以便所述服务器将运行不同操作系统的客户端发送的所述注册操作动作信息对应的操作动作进行统一注册。
结合第四方面和上述可能的实现方式,在另一种可能的实现方式中,还包括:
接收单元,用于在所述发送单元将所述注册请求发送至所述服务器之后,接收所述服务器发送的注册成功消息;其中,所述注册成功消息中包含所述APP的目录信息;
添加单元,用于将所述接收单元接收的目录信息添加到预存的侦听列表中,以便在接收到所述事件通知消息之后,根据所述侦听列表将所述事件通知消息通知所述APP。
本发明实施例提供的一种事件通知方法及装置,当服务器接收第二客户端对第一文件的操作指示,并在根据操作指示所指定的第一操作动作对第一文件执行操作后,查找注册的第一客户端的应用的至少一个操作动作中,是否注册有第一操作动作,并当注册有第一操作动作时,向第一客户端发送事件通知消息,这样当存储第一客户端应用的文件发生变化时由服务器向第一客户端发送事件通知消息,解决了现有技术中第一客户端只能通过接口去被动感知存储在服务器中的应用的第一文件有没有发生变化的问题,实现了服务器主动向第一客户端通知第一文件变化的机制。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本发明实施例提供一种事件通知方法,应用于服务器中,该服务器与第一客户端、第二客户端通信,服务器注册有第一客户端的APP的至少一个操作动作,该APP是运行在所述第一客户端的程序。现有的通知机制是第一客户端通过操作系统中的接口被动的感知服务器中的第一文件有没有发生变化,而不能实现在第一文件发生变化服务器主动向第一客户端通知第一文件的变化,本发明提供的实施例中将这种通知机制放在服务器中的实现,即实现服务器向第一客户端通知第一文件的变化情况,并且由于不同操作系统的客户端提供的感知服务器中第一文件变化的接口不同,因此如果与第一客户端运行不同操作系统的第二客户端将服务器中的第一文件进行操作后,利用现有技术中的通知机制第一客户端是无法感知到第一文件的变化的,而本发明实施例提供的事件通知方法,将通知机制放在服务器中实现,便可以避免当与第一客户端运行不同操作系统的第二客户端对第一文件进行操作后,第一客户端无法感知第一文件变化的情况发生。如图1所示,该方法可以包括:
101、接收第二客户端发送的对第一文件的操作指示。
其中,服务器接收到第二客户端发送的针对第一文件的操作指示,第一文件是存储在服务器的第一客户端的APP的数据的文件。该第一客户端的APP的数据为运行该APP需要的数据和用户在该APP的目录下存储的数据。
102、按照操作指示所指定的第一操作动作,对第一文件执行操作。
其中,当服务器接收到第二客户端发送的针对第一文件的第一操作指示后,便会根据该操作指示所指定的第一操作动作对第一文件执行相应的操作。
103、查找注册的第一客户端的APP的操作动作中,是否注册有第一操作动作。
其中,当服务器根据操作指示对第一文件执行相应的操作后,便会查找注册的第一客户端的APP的至少一个操作动作中,是否注册有与第二客户端发送的操作指示所指定的第一操作动作。
104、当注册有第一操作动作时,向第一客户端发送事件通知消息。
其中,当服务器查找到注册有第二客户端发送的操作指示所指定的第一操作动作时,便会向第一客户端发送事件通知消息,以便第一客户端获知第一文件的变化,事件通知消息中携带有第一操作动作的信息。
本发明实施例提供的一种事件通知方法,当服务器接收第二客户端对第一文件的操作指示,并在根据操作指示所指定的第一操作动作对第一文件执行操作后,查找注册的第一客户端的应用的至少一个操作动作中,是否注册有第一操作动作,并当注册有第一操作动作时,向第一客户端发送事件通知消息,这样当存储第一客户端应用的文件发生变化时由服务器向第一客户端发送事件通知消息,解决了现有技术中第一客户端只能通过接口去被动感知存储在服务器中的应用的第一文件有没有发生变化的问题,实现了服务器主动向第一客户端通知第一文件变化的机制。
实施例2
本发明实施例提供一种的事件通知方法,应用于第一客户端,第一客户端与服务器通信,服务器与第二客户端通信,如图2所示,该方法可以包括:
201、生成第一客户端的应用的注册请求;其中,所述注册请求中携带注册操作动作信息。
其中,当第一客户端的APP希望获得服务器中存储自身数据的文件夹中的数据的变化时,可以在第一客户端生成该APP的注册请求,该注册请求中携带注册操作动作信息,该注册操作动作信息所指的操作动作可以是删除、添加、修改等,该APP是运行在第一客户端的程序。
202、将注册请求发送至服务器;以便服务器注册该注册请求中携带的注册操作动作信息对应的操作动作后,接收到第二客户端发送的对第一文件的操作指示时,根据操作指示所指定的第一操作动作对第一文件执行操作,并且当查找到注册有第一操作动作时,向第一客户端发送事件通知消息。
其中,当第一客户端生成注册请求后,将该注册请求发送至服务器,这样服务器便可以将接收到的第一客户端发送的注册请求中携带的注册操作动作信息对应的操作动作进行注册,进而当服务器接收到第二客户端发送的对第一文件的操作指示时,根据该操作指示所指定的第一操作动作对第一文件进行操作,并查找注册到第一客户端的APP的操作动作中是否注册有第一操作动作,并在查找到注册有第一操作动作时,向第一客户端发送事件通知消息,该事件通知消息中携带有第一操作动作的信息。其中,第一文件是存储在服务器的第一客户端的APP的数据的文件。
本发明实施例提供的一种事件通知方法,当服务器接收第二客户端对第一文件的操作指示,并在根据操作指示所指定的第一操作动作对第一文件执行操作后,查找注册的第一客户端的应用的至少一个操作动作中,是否注册有第一操作动作,并当注册有第一操作动作时,向第一客户端发送事件通知消息,这样当存储第一客户端应用的文件发生变化时由服务器向第一客户端发送事件通知消息,解决了现有技术中第一客户端只能通过接口去被动感知存储在服务器中的应用的第一文件有没有发生变化的问题,实现了服务器主动向第一客户端通知第一文件变化的机制。
实施例3
本发明实施例提供一种事件通知方法,为了方便本领域技术人员的理解,本发明实施例将分三个阶段介绍本发明提供的事件通知方法。
第一阶段:事件注册,如图3所示,包括:
301、第一客户端生成第一客户端的APP的注册请求。
其中,当第一客户端的APP需要获知服务器中存储的自身数据的变化时,可以先调用应用程序接口(Application Program Interface,API),并生成APP的注册请求,该注册请求中携带注册操作动作信息,该注册操作动作信息相应的操作动作可以是删除、添加、修改等。其中,不同的操作系统有各自不同的API,如在Windows操作系统上的APP会调用FindFirstChangeNotification等API,在Linux操作系统上的APP会调用inotify_add_watch等API。
302、第一客户端将注册请求中携带的注册操作动作信息的格式进行转换得到服务器内部的统一格式。
其中,由于运行不同操作系统的客户端提供的通知APP文件系统变化的接口不同,因此为了避免在分布式文件系统下,当运行有不同操作系统的客户端在服务器中同时注册时,服务器需要根据操作系统的不同分别制定不同的规则来对客户端的注册操作动作信息对应的操作动作进行注册,本发明实施例提供一种解决方案,将第一客户端生成的注册请求中携带的注册操作动作信息进行格式转换,将注册操作动作信息的格式转换为服务器内部统一格式,这样便可以屏蔽掉不同操作系统平台的差异性,从而将运行不同操作系统的客户端发送的注册操作动作信息对应的操作动作统一进行注册。具体的,本发明实施例提供一种分布式文件系统接口层实例,可以实现操作系统的各种事件接口到私有接口的统一转换。其中,分布式文件系统接口层实例安装在客户端的操作系统中,分布式文件系统接口层还可以获取到APP在服务器中存储的所有的元数据信息,以便用户可以获知该APP的属性信息。
303、第一客户端将注册请求发送至服务器。
其中,在第一客户端将注册请求中携带的注册操作动作信息的格式转换为服务器内部私有结构的格式之后,可以将注册请求发送至服务器,以便当服务器中存储第一客户端的APP的第一文件发生变化时,服务器将第一文件的变化通知第一客户端。
304、服务器根据注册请求携带的注册操作动作信息,在APP的分布式通知(notify)注册表中添加与注册操作动作信息相应的操作动作的注册项。
具体的,该注册请求除了可以携带注册操作动作信息之外,还可以携带第一客户端的APP的标识,当服务器接收到第一客户端发送的注册请求时,可以根据第一客户端的APP的标识获取到APP的分布式notify注册表,并在该分布式notify注册表中添加与注册请求中携带的注册操作动作信息对应的操作动作的notify注册项,该notify注册项中可以记录第一客户端的标识和操作动作。为了当有操作指示时,可以高效,快速的查询到那个客户端注册了该操作指示指定的第一操作动作,本发明实施例提供一种分布式notify注册表实例,该分布式notify注册表实例保存notify注册项的注册信息,每个notify注册项可以包括以下注册信息:ID,目录或者文件的ID、SRC_mask[],固定数组,下标序号可以用来标识不同的客户端,该数组的值可以用来指明具体的操作动作类型。例如,若第一客户端的APP希望获知的操作动作为目录DIR1下文件的删除动作(FILE_DELETE),那么,添加的注册项可以是:ID(DIR1的ID),SRCID_mask[CA/VFS index](FILE_DELETE)=1,其中,CA/VFS index为第一客户端的标识。另外,本发明实施例在服务器中还提供一种分布式元数据服务(Meta data server,MDS)层实例用来存储并管理该分布式notify注册表,还可以用来记录该分布式notify注册表是否开启,具体的可以管理M个分布式notify注册表(且保留用于冲突的区域),每个注册表固定大小为N,便于通过散列(hash)直接索引,在服务器接收到操作指示后根据notify注册项的中的ID和M、N值,便可以直接定位分布式notify注册表中的注册项。
需要说明的是,本发明实施例中的分布式notify注册表中的注册项可以是提前存储的,并设置为0的,当客户端的应用需要获知对应的操作动作时,服务器只需将对应的注册项的值设置为非0,也可以当客户端的应用需要获知某操作动作时,服务器根据该注册事件在注册表中添加对应的注册项,本发明实施例对此不做限制,且对注册表中的注册项包含的注册信息以及注册项的具体格式也不做限制。
可选的,服务器在接收到第一客户端的APP的注册请求时,可以先将APP对应的目录的分布式notify注册表设置notify_enable,该分布式notify注册表在接收到注册请求之前处于禁止(disable)状态。
305、第一客户端接收服务器发送的注册成功消息;其中,注册成功消息中包含APP的目录信息。
其中,当服务器成功根据注册请求中携带的注册操作动作信息在APP的分布式notify注册表添加了与注册操作动作信息相应地操作动作的注册项之后,向第一客户端发送注册成功消息,并将APP的目录信息携带在注册成功消息中发送给第一客户端。
306、第一客户端将目录信息添加到预存的侦听列表中,以便在接收到事件通知消息之后,根据侦听列表将事件通知消息通知APP。
其中,第一客户端将接收到的注册成功消息中的APP的目录信息添加到预存的侦听列表中,这样当第一客户端接收到事件通知消息后,便可以根据侦听列表中存储的目录信息,将事件通知消息通知APP。
第二阶段:事件通知,如图4所示,包括:
401、服务器接收第二客户端发送的对第一文件的操作指示;第一文件为存储在服务器的第一客户端的APP的数据的文件。
其中,当第二客户端向服务器发送针对第一文件的操作指示时,第二客户端的分布式文件系统接口层首先获取第一文件的目录以及操作指示指定操作的文件的元数据信息,例如第二客户端需要删除DIR1目录下的文件名为my.txt的文件,第二客户端的分布式文件系统接口层便会获取目录DIR1以及my.txt的元数据信息,以便向服务器发送操作指示。
402、服务器根据操作指示所指定的第一操作动作,对第一文件执行操作。
其中,服务器可以根据接收到的第二客户端发送的操作指示所指定的第一操作动作对第一文件执行相应的操作,例如第二客户端可以向服务器发送针对第一文件中的my.txt的删除操作指示,此时服务器可以删除第一文件的my.txt。该第一文件为存储在服务器的第一客户端的APP的数据的文件。
403、服务器查找注册的第一客户端的APP的操作动作中,是否注册有第一操作动作。
其中,服务器根据接收到的操作指示所指定的第一操作动作对第一文件执行相应地操作后,可以查找注册的第一客户端的APP的操作动作中,是否注册有接收到的第二客户端的操作指示指定的第一操作动作。例如,服务器接收到删除my.txt的操作指示,具体的,服务器中的分布式MDS层接收到的操作指示可以是指示删除my.txt的元数据信息的指示和更新元数据信息的指示,此时服务器中的分布式MDS层首先删除my.txt的元数据信息,并同时更新my.txt所在目录的元数据信息,然后可以根据my.txt所在目录DIR1的ID获取相应该目录相应的分布式notify注册表,并检测该分布式notify注册表中的notify注册项中是否注册了删除动作FILE_DELETE,若检测到注册了FILE_DELETE,分布式MDS层便可以根据notify注册项中的CA/VFS index,将事件通知消息发送给相应的客户端。可选的,在检测该分布式notify注册表中的notify注册项中是否注册了FILE_DELETE之前,可以先检测my.txt所在目录DIR1的分布式notify注册表是否设置了notify_enable,并在检测到设置了notify_enable之后,再检测分布式notify注册表中的notify注册项中是否注册了FILE_DELETE。另外,服务器中的数据服务(Data Server,DS)接收到的操作指示可以是删除my.txt的数据命令,此时DS便可以根据操作指示所指定的第一操作动作删除my.txt的数据。
404、当注册有第一操作动作时,服务器向第一客户端发送事件通知消息。
其中,当服务器查询到注册了第二客户端发送的操作指示指定的第一操作动作时,服务器需要向第一客户端发送事件通知消息,该事件通知消息中携带有第一操作动作的信息,以便用来通知第一客户端文件系统发生了变化。
405、第一客户端接收到事件通知消息之后,根据侦听列表将事件通知消息通知APP。
其中,在本发明实施例提供的分布式文件系统接口层实例通过存储侦听列表来侦听或捕获服务器中文件系统的目录以及文件的变化,以便第一客户端中的分布式文件系统接口层实例在接收到事件通知消息之后,根据侦听列表中添加的APP的目录信息将事件通知消息通知给APP。
第三阶段:事件注销,如图5所示,包括:
501、第一客户端生成第一客户端的APP的注销请求。
502、第一客户端将注销请求中携带的注销操作动作信息的格式进行转换得到服务器内部的统一格式。
503、第一客户端将注销请求发送至服务器。
504、服务器根据注销请求中携带的注销操作动作信息将APP的分布式notify注册表中与注销操作动作信息对应的操作动作的注册项删除。
其中,该注销请求中除了可以携带注销操作动作信息之外,还可以携带第一客户端的APP的标识,当服务器接收到第一客户端发送的注销请求时,可以根据第一客户端的APP的标识获取存储的APP的分布式notify注册表,并将APP的分布式notify注册表中与注销请求中携带的注销操作动作信息对应的操作动作的注册项删除,或者将APP的分布式notify注册表中与注销操作动作信息对应的操作动作的注册项的值设置为0。
505、第一客户端接收服务器发送的注销成功消息;其中,注销成功消息中包含APP的目录信息。
506、第一客户端将目录信息从预存的侦听列表中删除。
需要说明的是,本发明实施例中的事件注销阶段中的步骤501-506的具体描述可以参考本发明实施例中的事件注册阶段的相应步骤301-306的具体描述,本发明实施例在此不一一赘述。
本发明实施例提供的一种事件通知方法,当服务器接收第二客户端对第一文件的操作指示,并在根据操作指示所指定的第一操作动作对第一文件执行操作后,查找注册的第一客户端的应用的至少一个操作动作中,是否注册有第一操作动作,并当注册有第一操作动作时,向第一客户端发送事件通知消息,这样当存储第一客户端应用的文件发生变化时由服务器向第一客户端发送事件通知消息,解决了现有技术中第一客户端只能通过接口去被动感知存储在服务器中的应用的第一文件有没有发生变化的问题,实现了服务器主动向第一客户端通知第一文件变化的机制。
并且,在服务器中针对注册操作动作信息维护相应的分布式notify注册表,这样当文件系统发生变化时,服务器便可以根据分布式notify注册表快速、高效的查找到注册了操作动作的客户端。
实施例4
本发明实施例提供一种事件通知装置,应用于服务器中,所述服务器与第一客户端、第二客户端通信,所述服务器注册所述第一客户端的应用APP的至少一个操作动作,所述APP是运行在所述第一客户端的程序,如图6所示,第一接收单元61、执行单元62、查找单元63、第一发送单元64。
第一接收单元61,用于接收所述第二客户端发送的对第一文件的操作指示,其中,所述第一文件是存储在所述服务器的所述第一客户端的APP的数据的文件。
执行单元62,用于按照所述第一接收单元61接收的所述操作指示所指定的第一操作动作,对所述第一文件执行操作。
查找单元63,用于查找注册的所述第一客户端的APP的所述操作动作中,是否注册有所述第一操作动作。
第一发送单元64,用于当注册有所述第一操作动作时,向所述第一客户端发送事件通知消息;其中,所述事件通知消息中携带有所述第一操作动作的信息。
进一步的,如图7所示,该装置还可以包括:第二接收单元65、添加单元66。
第二接收单元65,用于在所述第一接收单元61接收所述第二客户端发送的对第一文件的操作指示之前,接收所述第一客户端发送的所述APP的注册请求;其中,所述注册请求中携带注册操作动作信息。
添加单元66,用于根据所述第二接收单元65接收的所述注册请求携带的注册操作动作信息,在所述APP的分布式通知notify注册表中添加与所述注册操作动作信息相应的操作动作的注册项。
进一步的,该装置还可以包括:第二发送单元67。
第二发送单元67,用于在所述添加单元66根据所述注册请求携带的操作动作信息,在所述APP的分布式通知notify注册表中添加与所述操作动作信息相应的操作动作的注册项之后,向所述第一客户端发送注册成功消息;其中,所述注册成功消息中包含所述APP的目录信息,以便所述第一客户端将所述目录信息添加到预存的侦听列表中,进而当所述第一客户端在接收到所述事件通知消息后,根据所述侦听列表将所述事件通知消息通知所述APP。
进一步的,所述第二接收单元65,还用于接收所述第一客户端发送的所述APP的注销请求;其中,所述注销请求中携带注销操作动作信息。
所述装置还包括:删除单元68。
删除单元68,用于根据所述第二接收单元65接收的所述注销请求携带的注销操作动作信息,将所述APP的分布式notify注册表中与所述注销操作动作信息相应的操作动作的注册项删除。
进一步的,所述第二发送单元67,还用于在所述删除单元根据所述注销请求携带的注销操作动作信息,将所述APP的分布式notify注册表中与所述注销操作动作信息相应的操作动作的注册项删除之后,向所述第一客户端发送注销成功消息;其中所述注销成功消息中包含所述APP的目录信息,以便所述第一客户端根据所述注销成功消息从侦听列表中删除所述目录信息。
进一步的,所述操作动作包括删除、修改、创建、添加。
本发明实施例提供的一种事件通知装置,当服务器接收第二客户端对第一文件的操作指示,并在根据操作指示所指定的第一操作动作对第一文件执行操作后,查找注册的第一客户端的应用的至少一个操作动作中,是否注册有第一操作动作,并当注册有第一操作动作时,向第一客户端发送事件通知消息,这样当存储第一客户端应用的文件发生变化时由服务器向第一客户端发送事件通知消息,解决了现有技术中第一客户端只能通过接口去被动感知存储在服务器中的应用的第一文件有没有发生变化的问题,实现了服务器主动向第一客户端通知第一文件变化的机制。
并且,在服务器中针对注册操作动作信息维护相应的分布式notify注册表,这样当文件系统发生变化时,服务器便可以根据分布式notify注册表快速、高效的查找到注册了操作动作的客户端。
实施例5
本发明实施例提供一种事件通知装置,应用于第一客户端,所述第一客户端与服务器通信,所述服务器与第二客户端通信,如图8所示,包括:生成单元71、发送单元72。
生成单元71,用于生成所述第一客户端的应用APP的注册请求;其中,所述注册请求中携带注册操作动作信息,所述APP是运行在所述第一客户端的程序。
发送单元72,用于将所述生成单元71生成的注册请求发送至所述服务器;以便所述服务器注册所述注册操作动作信息对应的操作动作后,接收到所述第二客户端发送的对第一文件的操作指示时,根据所述操作指示所指定的第一操作动作对所述第一文件执行操作,并且当查找到注册有所述第一操作动作时,向所述第一客户端发送事件通知消息;其中,所述事件通知消息中携带有所述第一操作动作的信息。
其中,所述第一文件是存储在所述服务器的所述第一客户端的APP的数据的文件。
进一步的,如图9所示,还包括:转换单元73。
转换单元73,用于在所述生成单元71生成所述第一客户端的应用APP的注册请求之后,将所述注册请求中携带的所述注册操作动作信息的格式进行转换得到所述服务器内部的统一格式;以便所述服务器将运行不同操作系统的客户端发送的所述注册操作动作信息对应的操作动作进行统一注册。
进一步的,该装置还可以包括:接收单元74、添加单元75。
接收单元74,用于在所述发送单元72将所述注册请求发送至所述服务器之后,接收所述服务器发送的注册成功消息;其中,所述注册成功消息中包含所述APP的目录信息。
添加单元75,用于将所述接收单元74接收的目录信息添加到预存的侦听列表中,以便在接收到所述事件通知消息之后,根据所述侦听列表将所述事件通知消息通知所述APP。
本发明实施例提供的一种事件通知装置,当服务器接收第二客户端对第一文件的操作指示,并在根据操作指示所指定的第一操作动作对第一文件执行操作后,查找注册的第一客户端的应用的至少一个操作动作中,是否注册有第一操作动作,并当注册有第一操作动作时,向第一客户端发送事件通知消息,这样当存储第一客户端应用的文件发生变化时由服务器向第一客户端发送事件通知消息,解决了现有技术中第一客户端只能通过接口去被动感知存储在服务器中的应用的第一文件有没有发生变化的问题,实现了服务器主动向第一客户端通知第一文件变化的机制。
并且,在服务器中针对注册操作动作信息维护相应的分布式notify注册表,这样当文件系统发生变化时,服务器便可以根据分布式notify注册表快速、高效的查找到注册了操作动作的客户端。
实施例6
本发明实施例提供一种事件通知装置,应用于服务器中,所述服务器与第一客户端、第二客户端通信,所述服务器注册所述第一客户端的应用APP的至少一个操作动作,所述APP是运行在所述第一客户端的程序,如图10所示,接收器81、处理器82、发送器83。
接收器81,用于接收所述第二客户端发送的对第一文件的操作指示,其中,所述第一文件是存储在所述服务器的所述第一客户端的APP的数据的文件。
处理器82,用于按照所述接收器81接收的所述操作指示所指定的第一操作动作,对所述第一文件执行操作,并查找注册的所述第一客户端的APP的所述操作动作中,是否注册有所述第一操作动作。
发送器83,用于当注册有所述第一操作动作时,向所述第一客户端发送事件通知消息;其中,所述事件通知消息中携带有所述第一操作动作的信息。
进一步的,所述接收器81,还用于在所述接收所述第二客户端发送的对第一文件的操作指示之前,接收所述第一客户端发送的所述APP的注册请求;其中,所述注册请求中携带注册操作动作信息。
所述处理器82,还用于根据所述接收器81接收的所述注册请求携带的注册操作动作信息,在所述APP的分布式通知notify注册表中添加与所述注册操作动作信息相应的操作动作的注册项。
进一步的,所述发送器83,还用于在所述处理器82根据所述注册请求携带的操作动作信息,在所述APP的分布式通知notify注册表中添加与所述操作动作信息相应的操作动作的注册项之后,向所述第一客户端发送注册成功消息;其中,所述注册成功消息中包含所述APP的目录信息,以便所述第一客户端将所述目录信息添加到预存的侦听列表中,进而当所述第一客户端在接收到所述事件通知消息后,根据所述侦听列表将所述事件通知消息通知所述APP。
进一步的,所述接收器81,还用于接收所述第一客户端发送的所述APP的注销请求;其中,所述注销请求中携带注销操作动作信息。
所述处理器82,还用于根据所述接收器81接收的所述注销请求携带的注销操作动作信息,将所述APP的分布式notify注册表中与所述注销操作动作信息相应的操作动作的注册项删除。
进一步的,所述发送器83,还用于在所述处理器82根据所述注销请求携带的注销操作动作信息,将所述APP的分布式notify注册表中与所述注销操作动作信息相应的操作动作的注册项删除之后,向所述第一客户端发送注销成功消息;其中所述注销成功消息中包含所述APP的目录信息,以便所述第一客户端根据所述注销成功消息从侦听列表中删除所述目录信息。
进一步的,所述操作动作包括删除、修改、创建、添加。
本发明实施例提供的一种事件通知装置,当服务器接收第二客户端对第一文件的操作指示,并在根据操作指示所指定的第一操作动作对第一文件执行操作后,查找注册的第一客户端的应用的至少一个操作动作中,是否注册有第一操作动作,并当注册有第一操作动作时,向第一客户端发送事件通知消息,这样当存储第一客户端应用的文件发生变化时由服务器向第一客户端发送事件通知消息,解决了现有技术中第一客户端只能通过接口去被动感知存储在服务器中的应用的第一文件有没有发生变化的问题,实现了服务器主动向第一客户端通知第一文件变化的机制。
并且,在服务器中针对注册操作动作信息维护相应的分布式notify注册表,这样当文件系统发生变化时,服务器便可以根据分布式notify注册表快速、高效的查找到注册了操作动作的客户端。
实施例7
本发明实施例提供一种事件通知装置,应用于第一客户端,所述第一客户端与服务器通信,所述服务器与第二客户端通信,如图11所示,包括:处理器91、发送器92。
处理器91,用于生成所述第一客户端的应用APP的注册请求;其中,所述注册请求中携带注册操作动作信息,所述APP是运行在所述第一客户端的程序。
发送器92,用于将所述处理器91生成的注册请求发送至所述服务器;以便所述服务器注册所述注册操作动作信息对应的操作动作后,接收到所述第二客户端发送的对第一文件的操作指示时,根据所述操作指示所指定的第一操作动作对所述第一文件执行操作,并且当查找到注册有所述第一操作动作时,向所述第一客户端发送事件通知消息;其中,所述事件通知消息中携带有所述第一操作动作的信息。
其中,所述第一文件是存储在所述服务器的所述第一客户端的APP的数据的文件。
进一步的,所述处理器91,还用于在所述生成所述第一客户端的应用APP的注册请求之后,将所述注册请求中携带的所述注册操作动作信息的格式进行转换得到所述服务器内部的统一格式;以便所述服务器将运行不同操作系统的客户端发送的所述注册操作动作信息对应的操作动作进行统一注册。
进一步的,该装置还可以包括:接收器93。
接收器93,用于在所述发送器92将所述注册请求发送至所述服务器之后,接收所述服务器发送的注册成功消息;其中,所述注册成功消息中包含所述APP的目录信息。
所述处理器91,还用于将所述接收器93接收的目录信息添加到预存的侦听列表中,以便在接收到所述事件通知消息之后,根据所述侦听列表将所述事件通知消息通知所述APP。
本发明实施例提供的一种事件通知装置,当服务器接收第二客户端对第一文件的操作指示,并在根据操作指示所指定的第一操作动作对第一文件执行操作后,查找注册的第一客户端的应用的至少一个操作动作中,是否注册有第一操作动作,并当注册有第一操作动作时,向第一客户端发送事件通知消息,这样当存储第一客户端应用的文件发生变化时由服务器向第一客户端发送事件通知消息,解决了现有技术中第一客户端只能通过接口去被动感知存储在服务器中的应用的第一文件有没有发生变化的问题,实现了服务器主动向第一客户端通知第一文件变化的机制。
并且,在服务器中针对注册操作动作信息维护相应的分布式notify注册表,这样当文件系统发生变化时,服务器便可以根据分布式notify注册表快速、高效的查找到注册了操作动作的客户端。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。