Interface2 插件
插件Interface2 概述
PluginInterface2.h是与RakNet一起工作的一个类接口,提供了一些自动功能,也即在消息到达用户之前,拦截,修改,以及创建消息。插件可以附加到RakPeerInterface或者PacketizedTCP实例上。每一次Receive()被调用,插件都会进行更新。使用这个插件,仅仅需要从基类派生,并且实现想要处理的虚函数。然后通过调用RakPeerInterface::AttachPlugin()方法注册这个插件类即可。
如下列举了一些你在大多数情况下要实现的虚函数:
// 每次检验数据包都会调用Update()函数.
virtual void Update(void);
// 每一个数据包都会调用OnReceive()方法.
// \param[in] packet 返回给用户的数据包(packet)
// \return True 允许游戏或其他的插件得到这个消息,False则不允许。
virtual PluginReceiveResultOnReceive(Packet *packet);
// 因为用户为指定的系统调用了RakPeer::CloseConnection(),连接丢失时,调用这个方法
// \param[in] systemAddress 丢失连接的用户的systemAddress
// \param[in] rakNetGuid 指定系统的guid
// \param[in] lostConnectionReason 连接是如何关闭的,手动,连接丢失,或断开通知
virtual voidOnClosedConnection(SystemAddress systemAddress, RakNetGUID rakNetGUID,PI2_LostConnectionReason lostConnectionReason );
// 得到一个新连接时,调用这个函数。
// \param[in] systemAddress 新连接的地址。
// \param[in] rakNetGuid 指定系统的guid
// \param[in] isIncoming 如果为true, 连接是ID_NEW_INCOMING_CONNECTION,
// 或其他相同情况。
virtual void OnNewConnection(SystemAddresssystemAddress, RakNetGUID rakNetGUID, bool isIncoming);