RakNet学习(31) -- RPC4插件
2014-11-10 22:32
253 查看
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插件的演示例子。
这一节是视频,翻译的这块具体内容就没有了!
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插件的演示例子。
相关文章推荐
- 一日一点RakNet(32)--RPC4插件
- RakNet学习(29) -- Interface 2插件
- Eclipse plugins 插件开发学习 - 在 plugin.xml 中使用资源文件 plugin.properties
- Eclipse插件开发学习笔记 (一)
- 07-7-31 学习日记(1)
- 平台插件学习
- 学习eclipse插件开发资源全收集(plugin)
- GDI+ 学习记录(31): 图像颜色变换(TGPImageAttributes)
- Eclipse plugins 插件开发学习 - 扩展点介绍
- Eclipse plugins 插件开发学习 - IScanner 和 IBuffer 封装的高级应用类
- CCIE学习(31)―― RIP知识回顾
- more effective c++学习笔记 ---- 条款31
- AJAX ControlToolkit学习日志-ValidatorCalloutExtender(31)
- Eclipse插件开发学习
- Java 网络编程 TCP vs UDP -Java学习笔记(31)
- SharpDevelop插件系统学习(一)
- 学习 Eclipse基础--使用links方式安装Eclipse插件
- 学习DNN开发模块插件的几条主线
- Eclipse plugins 插件开发学习 - 第三方Jar包依赖
- 学习eclipse插件开发资源全收集(plugin)