• Main Page
  • Related Pages
  • Modules
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

ReplicaManager3.h

Go to the documentation of this file.
00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 #include "NativeFeatureIncludes.h"
00009 #if _RAKNET_SUPPORT_ReplicaManager3==1
00010 
00011 #ifndef __REPLICA_MANAGER_3
00012 #define __REPLICA_MANAGER_3
00013 
00014 #include "DS_Multilist.h"
00015 #include "RakNetTypes.h"
00016 #include "RakNetTime.h"
00017 #include "BitStream.h"
00018 #include "PacketPriority.h"
00019 #include "PluginInterface2.h"
00020 #include "NetworkIDObject.h"
00021 
00026 
00027 namespace RakNet
00028 {
00029 class Connection_RM3;
00030 class Replica3;
00031 
00032 
00035 struct PRO
00036 {
00038         PacketPriority priority;
00039 
00041         PacketReliability reliability;
00042 
00044         char orderingChannel;
00045 
00047         uint32_t sendReceipt;
00048 
00049         bool operator==( const PRO& right ) const;
00050         bool operator!=( const PRO& right ) const;
00051 };
00052 
00053 
00068 class RAK_DLL_EXPORT ReplicaManager3 : public PluginInterface2
00069 {
00070 public:
00071         ReplicaManager3();
00072         virtual ~ReplicaManager3();
00073 
00084         virtual Connection_RM3* AllocConnection(SystemAddress systemAddress, RakNetGUID rakNetGUID) const=0;
00085 
00090         virtual void DeallocConnection(Connection_RM3 *connection) const=0;
00091 
00099         void SetAutoManageConnections(bool autoCreate, bool autoDestroy);
00100 
00105         bool PushConnection(RakNet::Connection_RM3 *newConnection);
00106 
00111         RakNet::Connection_RM3 * PopConnection(RakNetGUID guid);
00112 
00117         void Reference(RakNet::Replica3 *replica3);
00118 
00123         void Dereference(RakNet::Replica3 *replica3);
00124 
00129         void DereferenceList(DataStructures::Multilist<ML_STACK, Replica3*> &replicaListIn);
00130 
00136         void GetReplicasCreatedByGuid(RakNetGUID guid, DataStructures::Multilist<ML_STACK, Replica3*> &replicaListOut);
00137 
00141         void GetReplicasCreatedByMe(DataStructures::Multilist<ML_STACK, Replica3*> &replicaListOut);
00142 
00146         void GetReferencedReplicaList(DataStructures::Multilist<ML_STACK, Replica3*> &replicaListOut);
00147 
00151         unsigned GetReplicaCount(void) const;
00152 
00157         Replica3 *GetReplicaAtIndex(unsigned index);
00158 
00162         DataStructures::DefaultIndexType GetConnectionCount(void) const;
00163 
00167         Connection_RM3* GetConnectionAtIndex(unsigned index) const;
00168 
00172         Connection_RM3* GetConnectionBySystemAddress(SystemAddress sa) const;
00173 
00177         Connection_RM3* GetConnectionByGUID(RakNetGUID guid) const;
00178 
00180         void SetDefaultOrderingChannel(char def);
00181 
00183         void SetDefaultPacketPriority(PacketPriority def);
00184 
00186         void SetDefaultPacketReliability(PacketReliability def);
00187 
00193         void SetAutoSerializeInterval(RakNetTime intervalMS);
00194 
00199         void GetConnectionsThatHaveReplicaConstructed(Replica3 *replica, DataStructures::Multilist<ML_STACK, Connection_RM3*> &connectionsThatHaveConstructedThisReplica);
00200 
00206         void SetWorldID(unsigned char id);
00207 
00209         unsigned char GetWorldID(void) const;
00210 
00215         void SetNetworkIDManager(NetworkIDManager *_networkIDManager);
00216 
00218         NetworkIDManager *GetNetworkIDManager(void) const;
00219 
00225         void BroadcastDestructionList(DataStructures::Multilist<ML_STACK, Replica3*> &replicaList, SystemAddress exclusionAddress);
00226 
00230         void BroadcastDestruction(Replica3 *replica, SystemAddress exclusionAddress);
00231 
00235         void Clear(void);
00236 
00238         PRO GetDefaultSendParameters(void) const;
00239 
00240 protected:
00241         virtual PluginReceiveResult OnReceive(Packet *packet);
00242         virtual void Update(void);
00243         virtual void OnClosedConnection(SystemAddress systemAddress, RakNetGUID rakNetGUID, PI2_LostConnectionReason lostConnectionReason );
00244         virtual void OnNewConnection(SystemAddress systemAddress, RakNetGUID rakNetGUID, bool isIncoming);
00245         virtual void OnRakPeerShutdown(void);
00246 
00247         void OnConstructionExisting(unsigned char *packetData, int packetDataLength, RakNetGUID senderGuid, unsigned char packetDataOffset);
00248         void OnConstruction(unsigned char *packetData, int packetDataLength, RakNetGUID senderGuid, unsigned char packetDataOffset);
00249         void OnSerialize(unsigned char *packetData, int packetDataLength, RakNetGUID senderGuid, RakNetTime timestamp, unsigned char packetDataOffset);
00250         void OnDownloadStarted(unsigned char *packetData, int packetDataLength, RakNetGUID senderGuid, unsigned char packetDataOffset);
00251         void OnDownloadComplete(unsigned char *packetData, int packetDataLength, RakNetGUID senderGuid, unsigned char packetDataOffset);
00252         void OnLocalConstructionRejected(unsigned char *packetData, int packetDataLength, RakNetGUID senderGuid, unsigned char packetDataOffset);
00253         void OnLocalConstructionAccepted(unsigned char *packetData, int packetDataLength, RakNetGUID senderGuid, unsigned char packetDataOffset);
00254 
00255         RakNet::Connection_RM3 * PopConnection(DataStructures::DefaultIndexType index);
00256         Replica3* GetReplicaByNetworkID(NetworkID networkId);
00257         DataStructures::DefaultIndexType ReferenceInternal(RakNet::Replica3 *replica3);
00258 
00259         DataStructures::Multilist<ML_STACK, Connection_RM3*> connectionList;
00260         DataStructures::Multilist<ML_STACK, Replica3*> userReplicaList;
00261 
00262         PRO defaultSendParameters;
00263         RakNetTime autoSerializeInterval;
00264         RakNetTime lastAutoSerializeOccurance;
00265         unsigned char worldId;
00266         NetworkIDManager *networkIDManager;
00267         bool autoCreateConnections, autoDestroyConnections;
00268 
00269         friend class Connection_RM3;
00270 };
00271 
00272 static const int RM3_NUM_OUTPUT_BITSTREAM_CHANNELS=8;
00273 
00275 struct LastSerializationResultBS
00276 {
00277         RakNet::BitStream bitStream[RM3_NUM_OUTPUT_BITSTREAM_CHANNELS];
00278         bool indicesToSend[RM3_NUM_OUTPUT_BITSTREAM_CHANNELS];
00279 };
00280 
00283 struct LastSerializationResult
00284 {
00285         LastSerializationResult();
00286         ~LastSerializationResult();
00287         
00289         RakNet::Replica3 *replica;
00290         //bool neverSerialize;
00291 //      bool isConstructed;
00292 
00293         void AllocBS(void);
00294         LastSerializationResultBS* lastSerializationResultBS;
00295 };
00296 
00299 struct SerializeParameters
00300 {
00304         RakNet::BitStream outputBitstream[RM3_NUM_OUTPUT_BITSTREAM_CHANNELS];
00305 
00308         RakNet::BitStream* lastSentBitstream[RM3_NUM_OUTPUT_BITSTREAM_CHANNELS];
00309 
00313         RakNetTime messageTimestamp;
00314 
00318         PRO pro[RM3_NUM_OUTPUT_BITSTREAM_CHANNELS];
00319 
00321         RakNet::Connection_RM3 *destinationConnection;
00322 
00325         BitSize_t bitsWrittenSoFar;
00326 
00329         RakNetTime whenLastSerialized;
00330 
00333         RakNetTime curTime;
00334 };
00335 
00337 struct DeserializeParameters
00338 {
00339         RakNet::BitStream serializationBitstream[RM3_NUM_OUTPUT_BITSTREAM_CHANNELS];
00340         bool bitstreamWrittenTo[RM3_NUM_OUTPUT_BITSTREAM_CHANNELS];
00341         RakNetTime timeStamp;
00342         RakNet::Connection_RM3 *sourceConnection;
00343 };
00344 
00346 enum SendSerializeIfChangedResult
00347 {
00348         SSICR_SENT_DATA,
00349         SSICR_DID_NOT_SEND_DATA,
00350         SSICR_NEVER_SERIALIZE,
00351 };
00352 
00356 class RAK_DLL_EXPORT Connection_RM3
00357 {
00358 public:
00359         Connection_RM3(SystemAddress _systemAddress, RakNetGUID _guid);
00360         virtual ~Connection_RM3();
00361 
00373         virtual Replica3 *AllocReplica(RakNet::BitStream *allocationIdBitstream, ReplicaManager3 *replicaManager3)=0;
00374 
00377         virtual void GetConstructedReplicas(DataStructures::Multilist<ML_STACK, Replica3*> &objectsTheyDoHave);
00378 
00382         bool HasReplicaConstructed(RakNet::Replica3 *replica);
00383 
00386         virtual void SerializeOnDownloadStarted(RakNet::BitStream *bitStream) {(void) bitStream;}
00387 
00390         virtual void DeserializeOnDownloadStarted(RakNet::BitStream *bitStream) {(void) bitStream;}
00391 
00394         virtual void SerializeOnDownloadComplete(RakNet::BitStream *bitStream) {(void) bitStream;}
00395 
00398         virtual void DeserializeOnDownloadComplete(RakNet::BitStream *bitStream) {(void) bitStream;}
00399 
00401         SystemAddress GetSystemAddress(void) const {return systemAddress;}
00402 
00404         RakNetGUID GetRakNetGUID(void) const {return guid;}
00405 
00407         enum ConstructionMode
00408         {
00412                 QUERY_REPLICA_FOR_CONSTRUCTION,
00413 
00417                 QUERY_REPLICA_FOR_CONSTRUCTION_AND_DESTRUCTION,
00418 
00423                 QUERY_CONNECTION_FOR_REPLICA_LIST
00424         };
00425 
00431         virtual ConstructionMode QueryConstructionMode(void) const {return QUERY_REPLICA_FOR_CONSTRUCTION_AND_DESTRUCTION;}
00432 
00448         virtual void QueryReplicaList(
00449                 DataStructures::Multilist<ML_STACK, Replica3*, Replica3*> newReplicasToCreate,
00450                 DataStructures::Multilist<ML_STACK, Replica3*, Replica3*> existingReplicasToDestroy) {}
00451 
00461         virtual SendSerializeIfChangedResult SendSerialize(RakNet::Replica3 *replica, bool indicesToSend[RM3_NUM_OUTPUT_BITSTREAM_CHANNELS], RakNet::BitStream serializationData[RM3_NUM_OUTPUT_BITSTREAM_CHANNELS], RakNetTime timestamp, PRO sendParameters[RM3_NUM_OUTPUT_BITSTREAM_CHANNELS], RakPeerInterface *rakPeer, unsigned char worldId);
00462 
00470         virtual SendSerializeIfChangedResult SendSerializeIfChanged(DataStructures::DefaultIndexType queryToSerializeIndex, SerializeParameters *sp, RakPeerInterface *rakPeer, unsigned char worldId, ReplicaManager3 *replicaManager);
00471 
00479         virtual void SendConstruction(DataStructures::Multilist<ML_STACK, Replica3*, Replica3*> &newObjects, DataStructures::Multilist<ML_STACK, Replica3*, Replica3*> &deletedObjects, PRO sendParameters, RakPeerInterface *rakPeer, unsigned char worldId);
00480 
00484         void CullUniqueNewAndDeletedObjects(DataStructures::Multilist<ML_STACK, Replica3*> &newObjectsIn,
00485                 DataStructures::Multilist<ML_STACK, Replica3*> &deletedObjectsIn,
00486                 DataStructures::Multilist<ML_STACK, Replica3*> &newObjectsOut,
00487                 DataStructures::Multilist<ML_STACK, Replica3*> &deletedObjectsOut);
00488 
00490         void SendValidation(RakPeerInterface *rakPeer, unsigned char worldId);
00491 
00493         void AutoConstructByQuery(ReplicaManager3 *replicaManager3);
00494 
00495 
00496         // Internal - does the other system have this connection too? Validated means we can now use it
00497         bool isValidated;
00498         // Internal - Used to see if we should send download started
00499         bool isFirstConstruction;
00500 
00501 protected:
00502 
00503         SystemAddress systemAddress;
00504         RakNetGUID guid;
00505 
00506         /*
00507                 Operations:
00508 
00509                 Locally reference a new replica:
00510                 Add to queryToConstructReplicaList for all objects
00511 
00512                 Add all objects to queryToConstructReplicaList
00513 
00514                 Download:
00515                 Add to constructedReplicaList for connection that send the object to us
00516                 Add to queryToSerializeReplicaList for connection that send the object to us
00517                 Add to queryToConstructReplicaList for all other connections
00518 
00519                 Never construct for this connection:
00520                 Remove from queryToConstructReplicaList
00521 
00522                 Construct to this connection
00523                 Remove from queryToConstructReplicaList
00524                 Add to constructedReplicaList for this connection
00525                 Add to queryToSerializeReplicaList for this connection
00526 
00527                 Serialize:
00528                 Iterate through queryToSerializeReplicaList
00529 
00530                 Never serialize for this connection
00531                 Remove from queryToSerializeReplicaList
00532 
00533                 Reference (this system has this object already)
00534                 Remove from queryToConstructReplicaList
00535                 Add to constructedReplicaList for this connection
00536                 Add to queryToSerializeReplicaList for this connection
00537 
00538                 Downloaded an existing object
00539                 if replica is in queryToConstructReplicaList, OnConstructToThisConnection()
00540                 else ignore
00541 
00542                 Send destruction from query
00543                 Remove from queryToDestructReplicaList
00544                 Remove from queryToSerializeReplicaList
00545                 Remove from constructedReplicaList
00546                 Add to queryToConstructReplicaList
00547 
00548                 Do not query destruction again
00549                 Remove from queryToDestructReplicaList
00550         */
00551         void OnLocalReference(Replica3* replica3, ReplicaManager3 *replicaManager);
00552         void OnDereference(Replica3* replica3, ReplicaManager3 *replicaManager);
00553         void OnDownloadFromThisSystem(Replica3* replica3, ReplicaManager3 *replicaManager);
00554         void OnDownloadFromOtherSystem(Replica3* replica3, ReplicaManager3 *replicaManager);
00555         void OnNeverConstruct(DataStructures::DefaultIndexType queryToConstructIdx, ReplicaManager3 *replicaManager);
00556         void OnConstructToThisConnection(DataStructures::DefaultIndexType queryToConstructIdx, ReplicaManager3 *replicaManager);
00557         void OnConstructToThisConnection(Replica3 *replica, ReplicaManager3 *replicaManager);
00558         void OnNeverSerialize(DataStructures::DefaultIndexType queryToSerializeIndex, ReplicaManager3 *replicaManager);
00559         void OnReplicaAlreadyExists(DataStructures::DefaultIndexType queryToConstructIdx, ReplicaManager3 *replicaManager);
00560         void OnDownloadExisting(Replica3* replica3, ReplicaManager3 *replicaManager);
00561         void OnSendDestructionFromQuery(DataStructures::DefaultIndexType queryToDestructIdx, ReplicaManager3 *replicaManager);
00562         void OnDoNotQueryDestruction(DataStructures::DefaultIndexType queryToDestructIdx, ReplicaManager3 *replicaManager);
00563         void ValidateLists(ReplicaManager3 *replicaManager) const;
00564         void SendSerializeHeader(RakNet::Replica3 *replica, RakNetTime timestamp, RakNet::BitStream *bs, unsigned char worldId);
00565         
00566         // The list of objects that our local system and this remote system both have
00567         // Either we sent this object to them, or they sent this object to us
00568         // A given Replica can be either in queryToConstructReplicaList or constructedReplicaList but not both at the same time
00569         DataStructures::Multilist<ML_ORDERED_LIST, LastSerializationResult*, Replica3*> constructedReplicaList;
00570 
00571         // Objects that we have, but this system does not, and we will query each tick to see if it should be sent to them
00572         // If we do send it to them, the replica is moved to constructedReplicaList
00573         // A given Replica can be either in queryToConstructReplicaList or constructedReplicaList but not both at the same time
00574         DataStructures::Multilist<ML_STACK, LastSerializationResult*, Replica3*> queryToConstructReplicaList;
00575 
00576         // Objects that this system has constructed are added at the same time to queryToSerializeReplicaList
00577         // This list is used to serialize all objects that this system has to this connection
00578         DataStructures::Multilist<ML_STACK, LastSerializationResult*, Replica3*> queryToSerializeReplicaList;
00579 
00580         // Objects that are constructed on this system are also queried if they should be destroyed to this system
00581         DataStructures::Multilist<ML_STACK, LastSerializationResult*, Replica3*> queryToDestructReplicaList;
00582 
00583         // Working lists
00584         DataStructures::Multilist<ML_STACK, Replica3*, Replica3*> constructedReplicasCulled, destroyedReplicasCulled;
00585 
00586         friend class ReplicaManager3;
00587 private:
00588         Connection_RM3() {};
00589 
00590         ConstructionMode constructionMode;
00591 };
00592 
00596 enum RM3ConstructionState
00597 {
00601         RM3CS_SEND_CONSTRUCTION,
00602 
00608         RM3CS_ALREADY_EXISTS_REMOTELY,
00609 
00611         RM3CS_NEVER_CONSTRUCT,
00612         
00614         RM3CS_NO_ACTION,
00615 };
00616 
00619 enum RM3DestructionState
00620 {
00622         RM3DS_SEND_DESTRUCTION,
00623 
00625         RM3DS_DO_NOT_QUERY_DESTRUCTION,
00626 
00628         RM3DS_NO_ACTION,
00629 };
00630 
00633 enum RM3SerializationResult
00634 {
00638         RM3SR_BROADCAST_IDENTICALLY,
00639 
00645         RM3SR_BROADCAST_IDENTICALLY_FORCE_SERIALIZATION,
00646 
00650         RM3SR_SERIALIZED_UNIQUELY,
00651 
00656         RM3SR_SERIALIZED_ALWAYS,
00657 
00660         RM3SR_SERIALIZED_ALWAYS_IDENTICALLY,
00661 
00663         RM3SR_DO_NOT_SERIALIZE,
00664 
00668         RM3SR_NEVER_SERIALIZE_FOR_THIS_CONNECTION,
00669 };
00670 
00673 enum RM3QuerySerializationResult
00674 {
00676         RM3QSR_CALL_SERIALIZE,
00678         RM3QSR_DO_NOT_CALL_SERIALIZE,
00680         RM3QSR_NEVER_CALL_SERIALIZE,
00681 };
00682 
00684 enum RM3ActionOnPopConnection
00685 {
00686         RM3AOPC_DO_NOTHING,
00687         RM3AOPC_DELETE_REPLICA,
00688         RM3AOPC_DELETE_REPLICA_AND_BROADCAST_DESTRUCTION,
00689 };
00690 
00691 
00695 class RAK_DLL_EXPORT Replica3 : public NetworkIDObject
00696 {
00697 public:
00698         Replica3();
00699 
00702         virtual ~Replica3();
00703 
00709         virtual void WriteAllocationID(RakNet::BitStream *allocationIdBitstream) const=0;
00710 
00720         virtual RM3ConstructionState QueryConstruction(RakNet::Connection_RM3 *destinationConnection, ReplicaManager3 *replicaManager3)=0;
00721 
00731         virtual RM3DestructionState QueryDestruction(RakNet::Connection_RM3 *destinationConnection, ReplicaManager3 *replicaManager3) {(void) destinationConnection; (void) replicaManager3; return RM3DS_DO_NOT_QUERY_DESTRUCTION;}
00732 
00740         virtual bool QueryRemoteConstruction(RakNet::Connection_RM3 *sourceConnection)=0;
00741 
00749         virtual void SerializeConstruction(RakNet::BitStream *constructionBitstream, RakNet::Connection_RM3 *destinationConnection)=0;
00750 
00756         virtual bool DeserializeConstruction(RakNet::BitStream *constructionBitstream, RakNet::Connection_RM3 *sourceConnection)=0;
00757 
00760         virtual void SerializeConstructionExisting(RakNet::BitStream *constructionBitstream, RakNet::Connection_RM3 *destinationConnection) {(void) constructionBitstream; (void) destinationConnection;};
00761 
00764         virtual void DeserializeConstructionExisting(RakNet::BitStream *constructionBitstream, RakNet::Connection_RM3 *sourceConnection) {(void) constructionBitstream; (void) sourceConnection;};
00765 
00771         virtual void SerializeDestruction(RakNet::BitStream *destructionBitstream, RakNet::Connection_RM3 *destinationConnection)=0;
00772 
00776         virtual bool DeserializeDestruction(RakNet::BitStream *destructionBitstream, RakNet::Connection_RM3 *sourceConnection)=0;
00777 
00780         virtual RM3ActionOnPopConnection QueryActionOnPopConnection(RakNet::Connection_RM3 *droppedConnection) const=0;
00781 
00783         void OnPoppedConnection(RakNet::Connection_RM3 *droppedConnection) {(void) droppedConnection;}
00784 
00795         virtual void DeallocReplica(RakNet::Connection_RM3 *sourceConnection)=0;
00796 
00802         virtual RM3QuerySerializationResult QuerySerialization(RakNet::Connection_RM3 *destinationConnection)=0;
00803 
00806         virtual void OnUserReplicaPreSerializeTick(void) {}
00807 
00815         virtual RM3SerializationResult Serialize(RakNet::SerializeParameters *serializeParameters)=0;
00816 
00819         virtual void OnSerializeTransmission(RakNet::BitStream *bitStream, SystemAddress systemAddress) {(void) bitStream; (void) systemAddress; }
00820 
00827         virtual void Deserialize(RakNet::DeserializeParameters *deserializeParameters)=0;
00828 
00837         virtual void SerializeConstructionRequestAccepted(RakNet::BitStream *serializationBitstream, RakNet::Connection_RM3 *requestingConnection) {(void) serializationBitstream; (void) requestingConnection;}
00838 
00842         virtual void DeserializeConstructionRequestAccepted(RakNet::BitStream *serializationBitstream, RakNet::Connection_RM3 *acceptingConnection) {(void) serializationBitstream; (void) acceptingConnection;}
00843 
00847         virtual void SerializeConstructionRequestRejected(RakNet::BitStream *serializationBitstream, RakNet::Connection_RM3 *requestingConnection) {(void) serializationBitstream; (void) requestingConnection;}
00848 
00852         virtual void DeserializeConstructionRequestRejected(RakNet::BitStream *serializationBitstream, RakNet::Connection_RM3 *rejectingConnection) {(void) serializationBitstream; (void) rejectingConnection;}
00853 
00857         virtual void PostDeserializeConstruction(RakNet::Connection_RM3 *sourceConnection) {(void) sourceConnection;}
00858 
00862         virtual void PreDestruction(RakNet::Connection_RM3 *sourceConnection) {(void) sourceConnection;}
00863 
00866         RakNetGUID GetCreatingSystemGUID(void) const;
00867 
00870         virtual void BroadcastDestruction(void);
00871 
00873         virtual RM3ConstructionState QueryConstruction_ClientConstruction(RakNet::Connection_RM3 *destinationConnection);
00875         virtual bool QueryRemoteConstruction_ClientConstruction(RakNet::Connection_RM3 *sourceConnection);
00876 
00878         virtual RM3ConstructionState QueryConstruction_ServerConstruction(RakNet::Connection_RM3 *destinationConnection);
00880         virtual bool QueryRemoteConstruction_ServerConstruction(RakNet::Connection_RM3 *sourceConnection);
00881 
00883         virtual RM3ConstructionState QueryConstruction_PeerToPeer(RakNet::Connection_RM3 *destinationConnection);
00885         virtual bool QueryRemoteConstruction_PeerToPeer(RakNet::Connection_RM3 *sourceConnection);
00886 
00888         virtual RakNet::RM3QuerySerializationResult QuerySerialization_ClientSerializable(RakNet::Connection_RM3 *destinationConnection);
00890         virtual RakNet::RM3QuerySerializationResult QuerySerialization_ServerSerializable(RakNet::Connection_RM3 *destinationConnection);
00892         virtual RakNet::RM3QuerySerializationResult QuerySerialization_PeerToPeer(RakNet::Connection_RM3 *destinationConnection);
00893 
00895         virtual RM3ActionOnPopConnection QueryActionOnPopConnection_Client(RakNet::Connection_RM3 *droppedConnection) const;
00897         virtual RM3ActionOnPopConnection QueryActionOnPopConnection_Server(RakNet::Connection_RM3 *droppedConnection) const;
00899         virtual RM3ActionOnPopConnection QueryActionOnPopConnection_PeerToPeer(RakNet::Connection_RM3 *droppedConnection) const;
00900 
00903         RakNetGUID creatingSystemGUID;
00905         RakNetGUID deletingSystemGUID;
00906 
00909         ReplicaManager3 *replicaManager;
00910 
00911         LastSerializationResultBS lastSentSerialization;
00912         RakNetTime whenLastSerialized;
00913         bool forceSendUntilNextUpdate;
00914 };
00915 
00916 } // namespace RakNet
00917 
00918 
00919 #endif
00920 
00921 #endif // _RAKNET_SUPPORT_*

Generated on Thu Sep 30 2010 01:27:27 for RakNet by  doxygen 1.7.1