插件间的报文传递方法及装置、代理插件的制作方法
【专利摘要】本发明提供一种插件间的报文传递方法及装置、代理插件,属于通信领域。其中,插件间的报文传递方法包括:报文传递装置接收第一插件发送的请求调用第二插件的消息;报文传递装置将第二插件信息返回给第一插件,以便第一插件调用第二插件。其中,报文传递装置将第二插件信息返回给第一插件包括:所述报文传递装置确定所述第二插件对应的代理插件;所述报文传递装置将所述代理插件返回给所述第一插件,以便所述第一插件通过所述代理插件调用所述第二插件。本发明的技术方案能够通过适当处理参数而提高插件间的报文处理效率。
【专利说明】插件间的报文传递方法及装置、代理插件
【技术领域】
[0001]本发明涉及通信领域,特别是指一种插件间的报文传递方法及装置、代理插件。
【背景技术】
[0002]在大型软件开发中,为了方便对软件进行功能扩展,实现模块内高内聚,模块间低耦合的特性,实现发布软件功能的可定制性,往往采用插件式开发,将一个个功能封装在插件中实现,插件可以通过其id查找,插件对应的二进制实体可能是动态链接库和jar包等,往往这些插件可能会有多种类型,即遵循的插件接口不一样,而为了处理上的方便,这些不同的接口可以派生于同一个基础接口。一个系统往往包括多个进程,每个进程中又含有多个插件,这些插件在进程内可能成树形管理部署,任何两个插件间可能会有报文传递,在传递过程中可能会涉及多个别的中间插件,从调用关系看是一个有向网。一般的报文有报文头和报文体,报文头是含命令的通用信息,如含有命令码(或者命令串)、序列号、类型(区分请求、应答、通知等报文类型)、方向(从客户端到服务器的方向称为下,从服务器到客户端方向称为上)等信息。报文体是命令对应的具体信息。
[0003]在综合型的网管中要管理各种专业网产品,而每种专业网产品拥有很多种设备。而各专业网有自己的特性,不同设备之间存在差异。网管往往采用C/S结构,Server侧根据专业网和功能分为多个进程、分布式管理。每个进程内含有功能各异的插件,各插件呈树形方式管理。不同的插件间存在进程内或跨进程的交互。
[0004]传统的插件接口如果进程内和进程间是统一的,则由于进程间需要通过socket等形式传递,必须先编码成码流,才能在两个插件间传递,接收插件接收到码流,再解码处理,无法直接传递结构,统一的接口形式要求进程内两个插件报文传递也需要编码和解码过程,从而导致报文传输效率较低。
【发明内容】
[0005]本发明要解决的技术问题是提供一种插件间的报文传递方法及装置、代理插件,能够提高插件间的报文传输效率。
[0006]为解决上述技术问题,本发明的实施例提供技术方案如下:
[0007]一方面,提供一种插件间的报文传递方法,包括:
[0008]报文传递装置接收第一插件发送的请求调用第二插件的消息;
[0009]所述报文传递装置将所述第二插件信息返回给所述第一插件,以便所述第一插件调用所述第二插件。
[0010]进一步地,上述方案中,所述报文传递装置将所述第二插件信息返回给所述第一插件包括:
[0011]所述报文传递装置确定所述第二插件对应的代理插件;
[0012]所述报文传递装置将所述代理插件返回给所述第一插件,以便所述第一插件通过所述代理插件调用所述第二插件。[0013]进一步地,上述方案中,所述报文传递装置确定对应所述第二插件对应的代理插件包括:
[0014]所述报文传递装置判断所述第二插件与所述第一插件是否属于同一进程;
[0015]在所述第二插件与所述第一插件属于同一进程时,所述报文传递装置创建一本地代理插件作为所述第二插件的代理插件;
[0016]在所述第二插件与所述第一插件不属于同一进程时,所述报文传递装置确定所述第二插件所属的进程,并创建一远程代理插件作为所述第二插件的代理插件。
[0017]本发明实施例还提供了一种插件间的报文传递方法,包括:
[0018]代理插件接收第一插件发送的请求报文,所述请求报文请求获取第二插件数据;
[0019]所述代理插件将所述请求报文发送给所述第二插件,并接收所述第二插件返回的携带有应答数据的响应报文;
[0020]所述代理插件将所述响应报文返回给所述第一插件,以便所述第一插件对所述响应报文解析得到应答数据。
[0021]进一步地,上述方案中,所述请求报文为采用函数virtual CMsgAny^Get (CMsgAny& anymsg, CMsgHead& headinfo)或 virtual void Set(CMsgAny &anymsg, CMsgHead &headinfo),其中参数anymsg为报文体,参数headinfo为报文头信息;
[0022]CMsgAny包括两个字段,一为报文码流指针字段anyBuf,另一个为报文结构指针字段value。
[0023]进一步地,上述方案中,在所述第二插件与所述第一插件属于同一进程时,所述代理插件将所述请求报文发送给所述第二插件包括:
[0024]所述代理插件不对所述请求报文进行编码,直接将所述请求报文发送给所述第二插件;
[0025]所述代理插件将所述响应报文返回给所述第一插件包括:
[0026]所述代理插件不对所述响应报文进行编码,直接将所述响应报文发送给所述第一插件。
[0027]进一步地,上述方案中,在所述第二插件与所述第一插件不属于同一进程时,所述代理插件将所述请求报文发送给所述第二插件包括:
[0028]所述代理插件对所述请求报文中的数据以及所述第二插件的信息进行编码;
[0029]所述代理插件将编码后的码流发送给所述第二插件所属进程,由所述进程将码流发送给所述第二插件。
[0030]进一步地,上述方案中,所述代理插件将所述请求报文发送给所述第二插件包括:
[0031]所述代理插件将所述请求报文中的参数anymsg编码为buf 1,并将所述第二插件的信息、参数headinfo和bufl化为一个码流发送给所述第二插件所属进程,由所述进程将码流发送给所述第二插件。
[0032]进一步地,上述方案中,所述第二插件调用函数GetPDataFromAny解析参数anymsgο
[0033]进一步地,上述方案中,所述接收所述第二插件返回的携带有应答数据的响应报文包括:[0034]接收由第二插件所属进程返回的携带有应答数据的响应报文。
[0035]进一步地,上述方案中,所述第一插件调用函数GetPDataFromAny解析响应报文。
[0036]本发明实施例还提供了一种插件间的报文传递装置,包括:
[0037]接收模块,用于接收第一插件发送的请求调用第二插件的消息;
[0038]发送模块,用于将所述第二插件信息返回给所述第一插件,以便所述第一插件调用所述第二插件。
[0039]进一步地,上述方案中,所述装置还包括:
[0040]插件管理模块,用于存储不同进程的插件信息,通过插件标识确定其对应插件,并确定插件所属进程。
[0041]进一步地,上述方案中,所述装置还包括:
[0042]插件分布式信息模块,用于存储其他进程的插件信息;
[0043]报文处理框架模块,用于在不同进程间发送和接收码流;
[0044]所述插件管理模块具体用于根据自身以及所述插件分布式信息模块存储的插件信息确定对应所述第二插件对应的代理插件。
[0045]本发明的实施例具有以下有益效果:
[0046]上述方案中,报文传递装置接收到第一插件的请求调用第二插件的消息后,将第二插件的代理插件返回给第一插件,第一插件可以通过代理插件传递报文至第二插件,第一插件不需要知道第二插件是否和它在同一个进程中,只需要将报文发送给代理插件即可完成对第二插件的调用,提高了插件间的报文传递效率。
【专利附图】
【附图说明】
[0047]图1为ESNAC C++基本类结构继承体系的结构示意图;
[0048]图2为本发明实施例构造的Get参数anymsg报文的结构示意图;
[0049]图3为本发明实施例进程B插件y接收到的Get参数anymsg报文的结构示意图;
[0050]图4为本发明实施例同进程插件y给插件X的Get返回值报文的结构示意图;
[0051]图5为本发明实施例插件X调用同进程插件I的Get的处理流程示意图;
[0052]图6为本发明实施例进程A插件X调用进程B插件j的Get的处理流程示意图;
[0053]图7为本发明实施例SNACC4J中AsnlAny的数据成员obj_type可能的取值。
【具体实施方式】
[0054]为使本发明的实施例要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
[0055]本发明的实施例针对现有技术中插件间报文传输效率较低的问题,提供一种插件间的报文传递方法及装置、代理插件,能够提高插件间的报文传输效率。
[0056]本发明实施例提供了一种插件间的报文传递方法,包括:
[0057]报文传递装置接收第一插件发送的请求调用第二插件的消息;
[0058]报文传递装置将第二插件信息返回给第一插件,以便第一插件调用第二插件。
[0059]其中,报文传递装置将第二插件信息返回给第一插件包括:
[0060]该报文传递装置确定该第二插件对应的代理插件;[0061]该报文传递装置将该代理插件返回给该第一插件,以便该第一插件通过该代理插件调用该第二插件。
[0062]进一步地,该报文传递装置确定对应该第二插件对应的代理插件包括:
[0063]该报文传递装置判断该第二插件与该第一插件是否属于同一进程;
[0064]在该第二插件与该第一插件属于同一进程时,该报文传递装置创建一本地代理插件作为该第二插件的代理插件;
[0065]在该第二插件与该第一插件不属于同一进程时,该报文传递装置确定该第二插件所属的进程,并创建一远程代理插件作为该第二插件的代理插件。[0066]本发明实施例还提供了一种插件间的报文传递方法,包括:
[0067]代理插件接收第一插件发送的请求报文,所述请求报文请求获取第二插件数据;
[0068]所述代理插件将所述请求报文发送给所述第二插件,并接收所述第二插件返回的携带有应答数据的响应报文;
[0069]所述代理插件将所述响应报文返回给所述第一插件,以便所述第一插件对所述响应报文解析得到应答数据。
[0070]所述请求报文为米用函数virtual CMsgAny^Get (CMsgAny &anymsg, CMsgHead&headinfo)或 virtual void Set (CMsgAny &anymsg, CMsgHead& headinfo),其中参数anymsg为报文体,参数headinfo为报文头信息;
[0071]CMsgAny包括两个字段,一为报文码流指针字段anyBuf,另一个为报文结构指针字段value。
[0072]其中,在第一插件和第二插件属于同一个进程时,由于第一插件、代理插件和第二插件的参数及返回值形式完全一样,代理插件接收第一插件发送的请求直接传递给第二插件作为数据的请求报文;该代理插件将该请求报文发送给该第二插件,并接收该第二插件返回的携带有应答数据的响应报文;代理插件将该响应报文返回给该第一插件,以便该第一插件对该响应报文解析得到应答数据。
[0073]这样在第一插件和第二插件属于同一个进程时,不需要对报文进行编解码,能够提高插件间的报文传输效率。
[0074]进一步地,在该第二插件与该第一插件不属于同一进程时,该代理插件将该请求报文发送给该第二插件包括:
[0075]该代理插件对该请求报文中的数据以及该第二插件的信息进行编码;
[0076]该代理插件将编码后的码流发送给该第二插件所属进程,由该进程将码流发送给该第二插件。
[0077]进一步地,该该代理插件将该请求报文发送给该第二插件包括:
[0078]该代理插件将该请求报文中的参数anymsg编码为bufl,并将该第二插件的信息、参数headinfo和bufl转化为一个码流发送给该第二插件所属进程,由该进程将码流发送给该第二插件。
[0079]进一步地,该接收该第二插件返回的携带有所请求数据的响应报文包括:
[0080]该代理插件在该第二插件根据该码流中的bufl构造出参数anymsg后,接收该第二插件对参数anymsg解析后返回的响应报文。
[0081]进一步地,该第二插件调用函数GetPDataFromAny解析参数anymsg。[0082]之后,第一插件在接收到代理插件的响应报文时,调用预设的解码模板(如GetPDataFromAny函数)对该响应报文解析得到所请求数据。
[0083]本发明实施例还提供了一种插件间的报文传递装置,包括:
[0084]接收模块,用于接收第一插件发送的请求调用第二插件的消息;
[0085]发送模块,用于将所述第二插件信息返回给所述第一插件,以便所述第一插件调用所述第二插件。
[0086]该装置还包括:
[0087]插件管理模块,用于存储不同进程的插件信息,通过插件标识确定其对应插件,并确定插件所属进程。
[0088]进一步地,该装置还包括:
[0089]插件分布式信息模块,用于存储其他进程的插件信息;
[0090]报文处理框架模块,用于在不同进程间发送和接收码流;
[0091]该插件管理模块具体用于根据自身以及该插件分布式信息模块存储的插件信息确定对应该第二插件对应的代理插件。
[0092]上述实施例中,报文传递装置接收到第一插件的请求调用第二插件的消息后,将第二插件的代理插件返回给第一插件,第一插件可以通过代理插件传递报文至第二插件,第一插件不需要知道第二插件是否和它在同一个进程中,只需要将报文发送给代理插件即可完成对第二插件的调用,提高了插件间的报文传递效率。
[0093]下面结合图1-图7对本发`明的插件间的报文传递方法进行详细介绍:
[0094]本发明的技术方案中,首先定义程序基础扩展点接口及派生此的功能接口,如localservice, servant, service等各种插件类型,其中1calservice只为进程内其它插件提供所需功能,而servant可以为本进程和其它进程提供服务功能,service是servant的代理,如果进程B中插件X要访问进程A中的servant类型的插件y,则进程B内要提供一个service类型插件z充当插件y的代理。如果进程A和进程B是同一个进程,则插件X可以通过代理service访问插件y,也可以直接访问servant。Service可以知道自己是进程内的代理还是进程外插件的代理。
[0095]本发明的插件间的报文传递装置包括有:
[0096]插件管理模块,负责本进程的插件部署和加载,并且具有插件查找功能,能判断一个插件是否在本进程内;
[0097]插件分布式信息模块,登记管理其它进程的插件的信息;
[0098]报文处理框架模块,负责维护和其它进程的连接,在不同进程间发送和接收报文的码流。
[0099]本发明中,参数和返回值形式有两种:一种是基于报文的,其参数和返回值的对应的类型是可以通过编码形成码流的,这种方法适用于跨进程调用;另外一种是基于非报文的,主要提供给进程内其它插件调用。本发明主要针对基于报文的方法。
[0100]插件接口中基于报文的方法,主要有virtual CMsgAny^Get (CMsgAny&anymsg, CMsgHead& headinfo), virtual void Set (CMsgAny &anymsg, CMsgHead&headinfo)。其中,Get是有应答报文的函数,anymsg为报文体,headinfo是含有命令码和用户等报文头信息;Set是无应答报文的函数。[0101]其中类型CMsgAny含有两个数据字段,一个字段是码流对应的类型CMsgBufmsgbuf,另一个是码流对应的结构字段value, value采用所有报文结构的基类CMsgType的指针类型,value缺省为NULL。CMsgAny也是CMsgType的派生类,而value中可能含有类型为CMsgAny字段的多层嵌套。一个CMsgType的派生类型的报文结构实例可以编码转化为CMsgBuf数据。
[0102]图1为ESNACC C++基本类结构继承体系,AsnType是所有ASN.1报文结构的C++基类,ASN.1的类型ANY在ESNACC对应为AsnAny,它主要有两个字段,一个报文码流字段AsnBuf*anyBuf, —个报文结构字段AsnType*value。这两个字段在编码时不能同时为NULL。在此实施例中技术方案提及的CMsgType就是AsnType, CMsgAny就是AsnAny。
[0103]在插件X要调用插件y前,首先通过插件管理模块获取插件I的代理z,如果本进程中存在插件1,返回插件I的本地代理Z指针;如果本进程不存在插件y,则在插件分布式信息模块查找插件y,存在就返回插件I的远程代理z的指针,不存在就返回NULL。
[0104]图5所示为插件X调用同进程插件y的Get的处理过程,如果代理z是本地的,则代理z直接通过插件y指针,将参数直接传递并调用插件I的Get方法,插件y通过tempiate<CMsgConcreteType>GetPDataFromAny(anymsg, t)来访问 t 的数据成员并且把返回值直接返回给插件X。其中,插件X通过代理插件Z来调用插件I的Get方法,其中参数和返回值在两个Get调用间都是直接传递的,未经过任何变化。参数是按图2所示的结构构造的,返回值是按照图4所示的结构构造的。进一步地,插件X还可以不通过代理,直接调用插件y,插件X直接构造函数,调用Get (anymsg, headinfo),插件y通过template〈CMsgConcreteType>GetPDataFromAny (anymsg, t)来访问t的数据成员并且把返回值直接返回给插件X。
[0105]图6所示为进程A插件X调用进程B插件y的Get的处理过程,先按照图2说明构造anymsg,当代理z接收到Get调用后,由于代理z是远程代理,anymsg就要进行编码,编码为bufl,并且将X的插件id等辅助信息、headinfo、bufl序列化为一个码流,通过本进程的报文处理框架模块发送给插件I所在进程B,进程B的报文处理框架模块接收到报文,分拆码流,解码辅助信息和headinfo,并将anymsg的码流放到CMsgAny的字段msgbuf中,进程B的报文处理框架模块获得插件y指针并调用它的Get方法,插件y通过template〈CMsgConcreteType>GetPDataFromAny (anymsg, t)来访问t的数据成员,Get结束后按图4说明构造返回报文给报文处理框架模块,其编码后添加辅助信息返回给进程A,在进程A的报文处理框架模块分拆报文,构造AsnAny作为Get返回值给插件x,在插件x用GetPDataFromAny解析返回值,解析过程类似图3解析anymsg。
[0106]图2所不为构造的Get参数anymsg报文,其中,anymsg的value指向AtomCommand结构,AtomCommand结构嵌套了一个类型为AsnyAny的字段cmdBuf, cmdBuf的value指向ObjCood 结构。所有 AsnAny 的 anyBuf 指针为 NULL。
[0107]图3为进程B插件Y接收到的Get参数anymsg报文,在经过跨进程传递后anymsg中anyBuf有值,而value为NULL。这样插件y第一次调用GetPDataFromAny解析anymsg,用类型AtomCommand解码anyBuf,之后anymsg.value有值不为NULL。B22的子节点B31的anyBuf此时有值,子节点B31的value为NULL,插件y第二次调用GetF1DataFromAny解析B22,用类型ObjCood解码anyBuf,经此处理后子节点B31的value也有值。如果插件y把anymsg再传递给同进程其它插件W,就不用再解码,而可以直接访问有值的value。
[0108]图4为同进程插件y给插件X的Get返回值报文,返回值类似图3也存在AsnAny类型两层嵌套,第一层对应报文结构类型AtomCommand,第二层对应报文结构类型Objlnfo。通常根据命令码确定第一层的的报文结构类型,根据objectNameList的内容,确定第二层报文结构类型。更简单的做法,第一层报文结构都是一样的,根据命令码和objectNameList的内容,确定第二层报文结构类型。
[0109]在上述方案中,可以根据预存的编码模板和解码模板进行编码和解码,具体地,编码模板可以采用 CMsgBuf*encode (CMsgType& msg);解码模板可以采用 template〈typenameCMsgConcreteType>
[0110]bool decode (CMsgBuf*msgbuf, CMsgConcreteType*& pmsg), msgbuf 解码为具体类型为CMsgConcreteType的指针msg,如果为空返回假,且pmsg为NULL。
[0111]另外还可以从any获取指定类型数据的模板template〈typenameCMsgConcreteType>
[0112]bool GetPDataFromAny(CMsgAny &any, CMsgConcreteType*&t)。先判断any.value是否为NULL,如果不为NULL,把any.value传给t;如果为NULL,用类型CMsgConcreteType创建实例t,解码any.msgbuf,且把t赋值给any.value.一般应用插件对CMsgAny数据都是通过此函数获取具体报文结构实例t。对于存在多层嵌套CMsgAny的数据,都可以在需要时用GetroataFromAny逐层获取对应的报文结构实例。关于t 一般要求是只读的,不修改其中内容,这样如果这个报文在多个插件中传递时,都能确保用的是原始应答内容。这样的好处:一.any如果来自本进程内,其中的any.value不为NULL,而any.anyBuf为NULL,这样应用直接获取相应的value指针,不会有编码和解码,效率提高。二.any如果来自其它进程内,其中的any.value为NULL,而any.anyBuf不为NULL,这样应用解码any.anyBuf的后赋值给value指针,这样本进程中只要解码过一次,就不会再解码,效率提闻。
[0113]为any 设置数据的方法 bool SetPDataToAny (CMsgAny&any, CMsgConcreteType*t)就是把t赋值给any.value。插件x要获得插件y的Get方法返回值,通过 templateCCMsgConcreteTypeSGetFOataFromAny (anymsg, ret)来访问 ret 的数据成员。Set方法除了没有返回值的处理,其它类似。
[0114]下面结合一个统一网管的实现来说明该报文传递方法。
[0115](一)网管部署
[0116]网管采用c/s结构,服务器采用多进程分布式部署,每个进程内有多个插件,采用插件式开发。每个网管进程的插件管理模块在启动时根据本进程部署文件加载其管理的IServant类型的插件,这样通过插件分布式信息模块可以知道某插件在哪个进程中。当然也可以每个进程根据部署文件不加载,IServant类型的插件只是预先做个登记,在有功能用到此插件时按需加载。
[0117](二)网管报文
[0118]网管主要米用asn.1报文,c++进程米用ESNACC作为处理工具,java进程米用SNACC4j 工具。
[0119](三)实施例用到的ASN.1结构定义[0120]技术方案中提及CMsgType对应于AsnType, CMsgAny对应于AsnAny,最外围报文
结构 AtomCommand,
[0121]其ASN.1定义如下,附带定义后面用到的ASN.1结构Ob jCood、ErrorInfo。
[0122]
【权利要求】
1.一种插件间的报文传递方法,其特征在于,包括: 报文传递装置接收第一插件发送的请求调用第二插件的消息; 所述报文传递装置将所述第二插件信息返回给所述第一插件,以便所述第一插件调用所述第二插件。
2.根据权利要求1所述的插件间的报文传递方法,其特征在于,所述报文传递装置将所述第二插件信息返回给所述第一插件包括: 所述报文传递装置确定所述第二插件对应的代理插件; 所述报文传递装置将所述代理插件返回给所述第一插件,以便所述第一插件通过所述代理插件调用所述第二插件。
3.根据权利要求2所述的插件间的报文传递方法,其特征在于,所述报文传递装置确定对应所述第二插件对应的代理插件包括: 所述报文传递装置判断所述第二插件与所述第一插件是否属于同一进程; 在所述第二插件与所述第一插件属于同一进程时,所述报文传递装置创建一本地代理插件作为所述第二插件的代理插件; 在所述第二插件与所述第一插件不属于同一进程时,所述报文传递装置确定所述第二插件所属的进程,并创建一远程代理插件作为所述第二插件的代理插件。
4.一种插件间的报文传递方法,其特征在于,包括: 代理插件接收第一插件发送的请求报文,所述请求报文请求获取第二插件数据; 所述代理插件将所述请求报文发送给所述第二插件,并接收所述第二插件返回的携带有应答数据的响应报文; 所述代理插件将所述响应报文返回给所述第一插件,以便所述第一插件对所述响应报文解析得到应答数据。
5.根据权利要求4所述的插件间的报文传递方法,其特征在于,所述请求报文为采用函数 virtual CMsgAny^Get (CMsgAny & anymsg, CMsgHead&headinfo)或 virtual voidSet (CMsgAny & anymsg, CMsgHead& headinfo),其中参数 anymsg 为报文体,参数 headinfo为报文头信息; CMsgAny包括两个字段,一为报文码流指针字段anyBuf,另一个为报文结构指针字段Value0
6.根据权利要求5所述的插件间的报文传递方法,其特征在于,在所述第二插件与所述第一插件属于同一进程时,所述代理插件将所述请求报文发送给所述第二插件包括: 所述代理插件不对所述请求报文进行编码,直接将所述请求报文发送给所述第二插件; 所述代理插件将所述响应报文返回给所述第一插件包括: 所述代理插件不对所述响应报文进行编码,直接将所述响应报文发送给所述第一插件。
7.根据权利要求5所述的插件间的报文传递方法,其特征在于,在所述第二插件与所述第一插件不属于同一进程时,所述代理插件将所述请求报文发送给所述第二插件包括: 所述代理插件对所述请求报文中的数据以及所述第二插件的信息进行编码; 所述代理插件将编码后的码流发送给所述第二插件所属进程,由所述进程将码流发送给所述第二插件。
8.根据权利要求7所述的插件间的报文传递方法,其特征在于,所述代理插件将所述请求报文发送给所述第二插件包括: 所述代理插件将所述请求报文中的参数anymsg编码为buf 1,并将所述第二插件的信息、参数headinfo和bufl化为一个码流发送给所述第二插件所属进程,由所述进程将码流发送给所述第二插件。
9.根据权利要求8所述的插件间的报文传递方法,其特征在于, 所述第二插件调用函数GetPDataFromAny解析参数anymsg。
10.根据权利要求7所述的插件间的报文传递方法,其特征在于,所述接收所述第二插件返回的携带有应答数据的响应报文包括: 接收由第二插件所属进程返回的携带有应答数据的响应报文。
11.根据权利要求8所述的插件间的报文传递方法,其特征在于,所述第一插件调用函数GetPDataFromAny解析响应报文。
12.—种插件间的报文传递装置,其特征在于,包括: 接收模块,用于接收第一插件发送的请求调用第二插件的消息; 发送模块,用于将所述第二插件信息返回给所述第一插件,以便所述第一插件调用所述第二插件。
13.根据权利要求12所 述的插件间的报文传递装置,其特征在于,所述装置还包括: 插件管理模块,用于存储不同进程的插件信息,通过插件标识确定其对应插件,并确定插件所属进程。
14.根据权利要求13所述的插件间的报文传递装置,其特征在于,所述装置还包括: 插件分布式信息模块,用于存储其他进程的插件信息; 报文处理框架模块,用于在不同进程间发送和接收码流; 所述插件管理模块具体用于根据自身以及所述插件分布式信息模块存储的插件信息确定对应所述第二插件对应的代理插件。
【文档编号】H04L12/70GK103856396SQ201210504699
【公开日】2014年6月11日 申请日期:2012年11月30日 优先权日:2012年11月30日
【发明者】张新平 申请人:中兴通讯股份有限公司