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

 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 北洋小郭

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值