现在的位置: 首页 > 综合 > 正文

一日一点RakNet(32)–RPC4插件

2014年11月18日 ⁄ 综合 ⁄ 共 1526字 ⁄ 字号 评论关闭

 RPC3
说明—使用本地的参数列表调用C C++函数,需要使用一些Boost的函数。

       这一节是视频,翻译的这块具体内容就没有了!

 

RPC4插件

 

在本地和远端系统调用C函数

 

注册函数:

       注册一个函数,使用RegisterSlot()RegisterBlockingFunctioin()成员。

       void RegisterSlot(const char *sharedIdentifier, void ( *functionPointer ) ( RakNet::BitStream *userData, Packet *packet ), int callPriority);

      
bool RegisterBlockingFunction(const char* uniqueID, void ( *functionPointer ) ( RakNet::BitStream *userData, RakNet::BitStream *returnData, Packet *packet ));

 

      第一个参数是一个字符代表了要调用的函数。它可以和函数的名字一样。第二个参数是一个指针,指向要被调用的函数。如果它是一个块函数,参数列表也包含了返回数据给调用者的BitStream

      RPC4GlobalRegistration类可以用于在他们声明的地方注册函数。例如:

       void CFunc1(RakNet::BitStream * bitStream, Packet * packet){}

        RPC4GlobalRegistration cfunc1reg( "CFunc1", CFunc1);

 

       如果更广泛地使用RPC4GlobalRegistration,需要将RakNetDefines.h中的定义RPC4_GLOBAL_REGISTRATION_MAX_FUNCTIONS修改为更高的值。

 

调用函数:

       使用Signal()函数调用一个非阻塞函数(到底是非块函数,还是非阻塞函数,我也没有明白。)。否则调用CallBlocking()函数。

       void Signal(const char *sharedIdentifier, RakNet::BitStream * bitStream, PacketPriority priority, PacketReliability reliability, char orderingChannel, const AddressOrGUID systemIdentifier,
bool broadcast, bool invokeLocal);

bool CallBlocking( const char* uniqueID, RakNet::BitStream * bitStream, PacketPriority priority, PacketReliability reliability, char orderingChannel, const AddressOrGUID systemIdentifier, RakNet::BitStream
*returnData );

       Signal会调用所有在RegisterSlot()函数中使用标识符注册的函数,包括有可能可以用于同一个系统中。CallBlocking()会在单个系统上回调用一个信号函数,使用RegisterBlockingFunction()函数注册了。CallBlocking()函数调用直到远端系统有回复,或连接断开才会返回,否则一直处于阻塞状态。

       参考Samples/RPC4插件的演示例子。

 

By
北洋小郭

转载请注明出处,切勿用于商业。谢谢!

抱歉!评论已关闭.