00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __GZ_DIST_REMOTE_MESSAGE_H__
00022 #define __GZ_DIST_REMOTE_MESSAGE_H__
00023
00028
00029 #include "gzDistBase.h"
00030 #include "gzDistSerializeMemory.h"
00031
00033 enum gzDistRemoteMessageClass
00034 {
00035 GZ_DIST_REMOTE_MESSAGE_CLASS_UNKNOWN = 0,
00036 GZ_DIST_REMOTE_MESSAGE_CLASS_SERVER,
00037 GZ_DIST_REMOTE_MESSAGE_CLASS_SESSION,
00038 GZ_DIST_REMOTE_MESSAGE_REQUEST_RESEND,
00039 GZ_DIST_REMOTE_MESSAGE_INDEX_DISTRIBUTION,
00040 GZ_DIST_REMOTE_MESSAGE_BUFFER_INDEX_LIMIT,
00041 GZ_DIST_REMOTE_MESSAGE_INDEX_ACK_REQUEST,
00042 GZ_DIST_REMOTE_MESSAGE_INDEX_ACK,
00043 GZ_DIST_REMOTE_MESSAGE_SHUTDOWN,
00044 GZ_DIST_REMOTE_MESSAGE_SPECIAL_COMMANDS,
00045 GZ_DIST_REMOTE_MESSAGE_HOST_INFO_REQUEST,
00046 GZ_DIST_REMOTE_MESSAGE_HOST_INFO_REPLY,
00047 GZ_DIST_REMOTE_MESSAGE_CLASS_MAX_CLASS
00048 };
00049
00050
00052 enum gzDistRemoteMessageType
00053 {
00054 GZ_DIST_REMOTE_MESSAGE_TYPE_UNKNOWN = 0,
00055
00056
00057 GZ_DIST_REMOTE_MESSAGE_SERVER_PING,
00058 GZ_DIST_REMOTE_MESSAGE_SERVER_REQUEST_SYNCHRONIZE,
00059 GZ_DIST_REMOTE_MESSAGE_SERVER_END_SYNCHRONIZE,
00060 GZ_DIST_REMOTE_MESSAGE_SERVER_REQUEST_UPDATE,
00061 GZ_DIST_REMOTE_MESSAGE_SERVER_END_UPDATE,
00062
00063
00064 GZ_DIST_REMOTE_MESSAGE_SESSION_EVENT,
00065 GZ_DIST_REMOTE_MESSAGE_SESSION_NEW_OBJECT,
00066 GZ_DIST_REMOTE_MESSAGE_SESSION_NEW_OBJECT_REQUEST,
00067 GZ_DIST_REMOTE_MESSAGE_SESSION_UPDATE_OBJECT,
00068 GZ_DIST_REMOTE_MESSAGE_SESSION_UPDATE_OBJECT_REQUEST,
00069 GZ_DIST_REMOTE_MESSAGE_SESSION_REMOVE_OBJECT,
00070 GZ_DIST_REMOTE_MESSAGE_SESSION_REMOVE_OBJECT_REQUEST,
00071 GZ_DIST_REMOTE_MESSAGE_SESSION_REMOVE_ATTRIBUTES,
00072 GZ_DIST_REMOTE_MESSAGE_SESSION_REMOVE_ATTRIBUTES_REQUEST,
00073 GZ_DIST_REMOTE_MESSAGE_SESSION_REQUEST_OWNERSHIP,
00074 GZ_DIST_REMOTE_MESSAGE_SESSION_DROP_OWNERSHIP,
00075 GZ_DIST_REMOTE_MESSAGE_SESSION_SET_OWNERSHIP,
00076 GZ_DIST_REMOTE_MESSAGE_SESSION_PULL_OWNERSHIP,
00077 GZ_DIST_REMOTE_MESSAGE_SESSION_SYNCHRONIZE_OBJECT,
00078 GZ_DIST_REMOTE_MESSAGE_SESSION_MAX_TYPE
00079 };
00080
00081
00082
00083
00085 class gzDistRemoteMessage : public gzReference
00086 {
00087 public:
00088
00090 GZ_DIST_EXPORT gzDistRemoteMessage();
00091
00093 GZ_DIST_EXPORT gzDistRemoteMessage(gzUByte msgClass, gzUByte msgType);
00094
00096 GZ_DIST_EXPORT virtual ~gzDistRemoteMessage();
00097
00099 virtual gzReference* clone() const { return (gzReference *) new gzDistRemoteMessage(*this); }
00100
00102 gzBool useDeepCopy() { return FALSE; }
00103
00104
00105
00106
00108 gzDistInstanceID senderID;
00109
00111 gzDistInstanceID destinationID;
00112
00114 gzRefList<gzDistSerializeMemoryData> data;
00115
00117 gzUByte messageClass;
00118
00120 gzUByte messageType;
00121
00122 gzUInt highPrio;
00123 };
00124
00125
00126 GZ_DIST_PTR(gzDistRemoteMessage);
00127 GZ_DIST_LIST(gzDistRemoteMessage);
00128
00129
00130
00131
00132
00133 class gzDistRemoteMessageServer : public gzDistRemoteMessage
00134 {
00135 public:
00136
00137 gzDistRemoteMessageServer(gzUByte msgType)
00138 : gzDistRemoteMessage(GZ_DIST_REMOTE_MESSAGE_CLASS_SERVER, msgType)
00139 { }
00140
00141 virtual ~gzDistRemoteMessageServer() { }
00142
00143 virtual gzReference* clone() const { return (gzReference*) new gzDistRemoteMessageServer(*this); }
00144
00145
00146
00147
00148
00149 gzUByte status;
00150
00151
00152 gzUByte priority;
00153
00154
00155 gzDistInstanceID sourceID;
00156
00157
00158 gzString functionID;
00159
00160 };
00161
00162
00163 GZ_DIST_PTR(gzDistRemoteMessageServer);
00164 GZ_DIST_LIST(gzDistRemoteMessageServer);
00165
00166
00167
00168
00169 GZ_DIST_DECLARE_MEMBASE_EXPORT(gzDistRemoteMessageSession, GZ_DIST_EXPORT);
00170
00171
00172 class gzDistRemoteMessageSession : public gzDistRemoteMessage
00173 {
00174 public:
00175
00176 GZ_DIST_EXPORT gzDistRemoteMessageSession(gzUByte messageType);
00177
00178 gzDistRemoteMessageSession(const gzString& sessionName, gzUByte msgClass, gzUByte msgType);
00179
00180 GZ_DIST_EXPORT virtual ~gzDistRemoteMessageSession();
00181
00182 virtual gzReference* clone() const { return (gzReference*) new gzDistRemoteMessageSession(*this); }
00183
00184
00185
00186
00187
00188 gzString sessionName;
00189
00190
00191 gzString dataType;
00192
00193
00194 gzDistClientID clientID;
00195
00196
00197 gzUInt dataPosition;
00198 };
00199
00200
00201 GZ_DIST_PTR(gzDistRemoteMessageSession);
00202 GZ_DIST_LIST(gzDistRemoteMessageSession);
00203
00204 #endif