mirror of
https://bitbucket.org/theswgsource/src-1.2.git
synced 2026-09-27 12:12:52 -04:00
Added serverNetworkMessages library
This commit is contained in:
+188
@@ -0,0 +1,188 @@
|
||||
// ======================================================================
|
||||
//
|
||||
// MessageToPayloadImpl.h
|
||||
// copyright (c) 2001 Sony Online Entertainment
|
||||
//const
|
||||
// ======================================================================
|
||||
|
||||
#ifndef INCLUDED_MessageToPayloadImpl_H
|
||||
#define INCLUDED_MessageToPayloadImpl_H
|
||||
|
||||
// ======================================================================
|
||||
|
||||
#include "serverNetworkMessages/MessageToPayload.h"
|
||||
#include "sharedFoundation/NetworkId.h"
|
||||
#include "sharedFoundation/NetworkIdArchive.h"
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
// ======================================================================
|
||||
|
||||
/**
|
||||
* Data associated with a MessageTo, used by several different network messages.
|
||||
*/
|
||||
class MessageToPayloadImpl
|
||||
{
|
||||
public:
|
||||
MessageToPayloadImpl(const NetworkId &networkId, const MessageToId &messageId, const std::string &method, const std::string &packedData, unsigned long callTime, bool guaranteed, MessageToPayload::DeliveryType deliveryType, NetworkId const & undeliveredCallbackObject, std::string const & undeliveredCallbackMethod, int recurringTime);
|
||||
MessageToPayloadImpl(const NetworkId &networkId, const MessageToId &messageId, const std::string &method, const stdvector<int8>::fwd &packedData, unsigned long callTime, bool guaranteed, MessageToPayload::DeliveryType deliveryType, NetworkId const & undeliveredCallbackObject, std::string const & undeliveredCallbackMethod, int recurringTime);
|
||||
MessageToPayloadImpl();
|
||||
~MessageToPayloadImpl();
|
||||
|
||||
bool operator==(MessageToPayloadImpl const & rhs) const;
|
||||
bool operator!=(MessageToPayloadImpl const & rhs) const;
|
||||
|
||||
void pack(Archive::ByteStream &target) const;
|
||||
void unpack(Archive::ReadIterator &source);
|
||||
|
||||
void setGuaranteed(bool guaranteed);
|
||||
void setPersisted(bool persisted);
|
||||
void addBroadcastCount();
|
||||
void addBounceServer(uint32 serverProcessId);
|
||||
bool hasBounceServer(uint32 serverProcessId) const;
|
||||
void clearBounceServers();
|
||||
|
||||
NetworkId const &getNetworkId() const;
|
||||
MessageToId const &getMessageId() const;
|
||||
std::string const &getMethod() const;
|
||||
std::vector<int8> const &getPackedDataVector() const;
|
||||
std::string getDataAsString() const;
|
||||
unsigned long getCallTime() const;
|
||||
bool getGuaranteed() const;
|
||||
bool getPersisted() const;
|
||||
MessageToPayload::DeliveryType getDeliveryType() const;
|
||||
NetworkId const & getUndeliveredCallbackObject() const;
|
||||
std::string const & getUndeliveredCallbackMethod() const;
|
||||
int getRecurringTime() const;
|
||||
uint64 getCounterMessageToPayload() const;
|
||||
int getBroadcastCount() const;
|
||||
int getBounceCount() const;
|
||||
static int getInstanceCount();
|
||||
void increaseRefCount();
|
||||
void decreaseRefCount();
|
||||
int getRefCount() const;
|
||||
|
||||
private:
|
||||
NetworkId m_networkId;
|
||||
MessageToId m_messageId;
|
||||
std::string m_method;
|
||||
std::vector<int8> m_packedData;
|
||||
unsigned long m_callTime;
|
||||
bool m_guaranteed;
|
||||
bool m_persisted;
|
||||
MessageToPayload::DeliveryType m_deliveryType;
|
||||
NetworkId m_undeliveredCallbackObject;
|
||||
std::string m_undeliveredCallbackMethod;
|
||||
int m_recurringTime;
|
||||
int m_broadcastCount; // home many times this message has been broadcasted to find the recipient
|
||||
int m_bounceCount; // how many times this message has been forwarded to a new server
|
||||
std::set<uint32> m_bounceServers; // the servers which have forwarded this message, to catch circular forwarding
|
||||
int m_refCount;
|
||||
|
||||
// there is no need to pack this var, it is used to "mark" each MessageToPayloadImpl
|
||||
// on a per game server execution basis, and is used as the second criterion
|
||||
// when prioritizing messageTo that originated on the game server and has
|
||||
// the same calltime, so that the messageTo will execute in the order that
|
||||
// they were originated
|
||||
uint64 m_counterMessageToPayload;
|
||||
|
||||
// used to assign m_counterMessageToPayload
|
||||
static uint64 ms_counterMessageToPayload;
|
||||
|
||||
// used to count how many messages there are at one time
|
||||
static int ms_instanceCount;
|
||||
|
||||
private:
|
||||
MessageToPayloadImpl & operator=(MessageToPayloadImpl const & rhs); // disable
|
||||
MessageToPayloadImpl(MessageToPayloadImpl const & rhs); // disable
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
inline NetworkId const &MessageToPayloadImpl::getNetworkId() const
|
||||
{
|
||||
return m_networkId;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
inline MessageToId const &MessageToPayloadImpl::getMessageId() const
|
||||
{
|
||||
return m_messageId;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
inline std::string const &MessageToPayloadImpl::getMethod() const
|
||||
{
|
||||
return m_method;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
inline std::vector<int8> const &MessageToPayloadImpl::getPackedDataVector() const
|
||||
{
|
||||
return m_packedData;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
inline unsigned long MessageToPayloadImpl::getCallTime() const
|
||||
{
|
||||
return m_callTime;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
inline bool MessageToPayloadImpl::getGuaranteed() const
|
||||
{
|
||||
return m_guaranteed;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
inline bool MessageToPayloadImpl::getPersisted() const
|
||||
{
|
||||
return m_persisted;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
inline MessageToPayload::DeliveryType MessageToPayloadImpl::getDeliveryType() const
|
||||
{
|
||||
return m_deliveryType;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
inline uint64 MessageToPayloadImpl::getCounterMessageToPayload() const
|
||||
{
|
||||
return m_counterMessageToPayload;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
inline int MessageToPayloadImpl::getBroadcastCount() const
|
||||
{
|
||||
return m_broadcastCount;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
inline int MessageToPayloadImpl::getBounceCount() const
|
||||
{
|
||||
return m_bounceCount;
|
||||
}
|
||||
|
||||
// ======================================================================
|
||||
|
||||
namespace Archive
|
||||
{
|
||||
void put(ByteStream & target, const MessageToPayloadImpl & source);
|
||||
void get(ReadIterator & source, MessageToPayloadImpl & target);
|
||||
}
|
||||
|
||||
// ======================================================================
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user