21 #ifndef INC_KY_AMP_MESSAGE_H
22 #define INC_KY_AMP_MESSAGE_H
40 void Read(Kaim::File& str);
41 void Write(Kaim::File& str)
const;
43 Kaim::ArrayLH_POD<Kaim::UByte, MemStat_VisualDebugMessage> Data;
48 class Message :
public RefCountBase<Message, MemStat_VisualDebugMessage>,
public ListNode<Message>
51 static const UInt32 InvalidVersion = KY_MAX_UINT32;
52 static const UInt32 InvalidMsgType = KY_MAX_UINT32;
54 virtual ~Message() { }
57 virtual void Read(File& str);
58 virtual void Write(File& str)
const;
61 virtual String ToString()
const
64 Kaim::SFsprintf(str, 32,
"%s-%u", GetMessageTypeName(), GetMessageType());
69 bool IsSameType(
const Message& msg)
const {
return MsgType == msg.MsgType; }
70 UInt32 GetMessageType()
const {
return MsgType; }
71 void SetMessageType(UInt32 msgType)
73 KY_DEBUG_ASSERTN(msgType!=Message::InvalidMsgType, (
"setting an invalid message type, check the registry"));
76 virtual const char* GetMessageTypeName()
const {
return "Message Base"; }
79 void SetVersion(UInt32 version) { Version = version; }
80 UInt32 GetVersion()
const {
return Version; }
84 virtual Message* Compress()
const;
85 virtual Message* Uncompress() {
return NULL; }
88 virtual void SetPeerName(
const char* name) { KY_UNUSED(name); }
89 virtual void SetPeerAddress(UInt32 address) { KY_UNUSED(address); }
93 static UInt32 GetLatestVersion() {
return Version_Latest; }
96 static void ReadString(File& inFile, String* str);
97 static void WriteString(File& outFile,
const String& str);
105 Message(): MsgType(Message::InvalidMsgType), Version(InvalidVersion) {}
115 class MessageSetup :
public Message
118 static const char* GetTypeName() {
return "MessageSetup"; }
119 static UInt32 GetLatestVersion() {
return Message::GetLatestVersion(); }
122 virtual ~MessageSetup() { }
124 virtual const char* GetMessageTypeName()
const {
return MessageSetup::GetTypeName(); }
127 virtual void Read(File& str);
128 virtual void Write(File& str)
const;
131 virtual String ToString()
const
133 String str = Kaim::Net::AMP::Message::ToString();
135 Kaim::SFsprintf(cstr, 32,
"(heartbeatInterval:%u)", HeartbeatInterval);
140 virtual Message* Compress()
const {
return NULL; }
141 virtual Message* Uncompress() {
return NULL; }
144 UInt32 HeartbeatInterval;
150 class MessageHeartbeat :
public Message
153 static const char* GetTypeName() {
return "MessageHeartbeat"; }
154 static UInt32 GetLatestVersion() {
return Message::GetLatestVersion(); }
157 virtual ~MessageHeartbeat() { }
159 virtual const char* GetMessageTypeName()
const {
return MessageHeartbeat::GetTypeName(); }
161 virtual Message* Compress()
const {
return NULL; }
162 virtual Message* Uncompress() {
return NULL; }
166 class MessageDisconnection :
public Message
169 static const char* GetTypeName() {
return "MessageDisconnection"; }
170 static UInt32 GetLatestVersion() {
return Message::GetLatestVersion(); }
172 MessageDisconnection();
173 virtual ~MessageDisconnection() { }
175 virtual const char* GetMessageTypeName()
const {
return MessageDisconnection::GetTypeName(); }
177 virtual Message* Compress()
const {
return NULL; }
178 virtual Message* Uncompress() {
return NULL; }
184 class MessageLog :
public Message
187 static const char* GetTypeName() {
return "MessageLog"; }
188 static UInt32 GetLatestVersion() {
return Message::GetLatestVersion(); }
190 MessageLog(
const String& logText =
"", UInt32 logCategory = 0,
const UInt64 timeStamp = 0);
191 virtual ~MessageLog() { }
192 void SetLog(
const String& logText =
"", UInt32 logCategory = 0,
const UInt64 timeStamp = 0);
195 virtual void Read(File& str);
196 virtual void Write(File& str)
const;
197 virtual const char* GetMessageTypeName()
const {
return MessageLog::GetTypeName(); }
200 UInt32 GetLogCategory()
const;
201 const StringLH& GetTimeStamp()
const;
202 const StringLH& GetLogText()
const {
return LogText; }
206 void SetTimeStamp(
const UInt64 timeStamp);
217 class MessagePort :
public Message
220 static const char* GetTypeName() {
return "MessagePort"; }
221 static UInt32 GetLatestVersion() {
return Message::GetLatestVersion(); }
244 virtual ~MessagePort() { }
247 virtual void Read(File& str);
248 virtual void Write(File& str)
const;
249 virtual const char* GetMessageTypeName()
const {
return MessagePort::GetTypeName(); }
252 UInt32 GetPort()
const;
253 UInt32 GetPeerAddress()
const;
254 const StringLH& GetPeerName()
const;
255 PlatformType GetPlatform()
const;
256 const char* GetPlatformName()
const;
257 const StringLH& GetAppName()
const;
258 const StringLH& GetFileName()
const;
259 virtual void SetPeerName(
const char* name);
260 virtual void SetPeerAddress(UInt32 address);
261 void SetPlatform(PlatformType platform);
262 void SetPort(UInt32 port);
263 void SetAppName(
const char* appName);
264 void SetFileName(
const char* fileName);
270 PlatformType Platform;
277 class MessageCompressed :
public Message
280 static const char* GetTypeName() {
return "MessageCompressed"; }
281 static UInt32 GetLatestVersion() {
return Message::GetLatestVersion(); }
283 ~MessageCompressed();
286 virtual const char* GetMessageTypeName()
const {
return MessageCompressed::GetTypeName(); }
288 virtual void Read(File& str);
289 virtual void Write(File& str)
const;
291 virtual Message* Uncompress();
294 void AddCompressedData(UByte* data, UPInt dataSize);
295 const RawData& GetCompressedData()
const;
298 RawData CompressedData;
Definition: gamekitcrowddispersion.h:20