Huge update: Change distributed protocol to match the newly-changed Astron protocol.
This commit is contained in:
parent
ac834aa632
commit
8ea908c855
|
|
@ -581,15 +581,9 @@ receive_update_broadcast_required_owner(PyObject *distobj,
|
|||
for (int i = 0; i < num_fields && !PyErr_Occurred(); ++i) {
|
||||
DCField *field = get_inherited_field(i);
|
||||
if (field->as_molecular_field() == (DCMolecularField *)NULL &&
|
||||
field->is_required()) {
|
||||
field->is_required() && (field->is_ownrecv() || field->is_broadcast())) {
|
||||
packer.begin_unpack(field);
|
||||
if (field->is_ownrecv()) {
|
||||
field->receive_update(packer, distobj);
|
||||
} else {
|
||||
// It's not an ownrecv field; skip over it. It's difficult
|
||||
// to filter this on the server, ask Roger for the reason.
|
||||
packer.unpack_skip();
|
||||
}
|
||||
field->receive_update(packer, distobj);
|
||||
if (!packer.end_unpack()) {
|
||||
break;
|
||||
}
|
||||
|
|
@ -1024,7 +1018,6 @@ client_format_generate_CMU(PyObject *distobj, DOID_TYPE do_id,
|
|||
}
|
||||
#endif // HAVE_PYTHON
|
||||
|
||||
#ifdef HAVE_PYTHON
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: DCClass::ai_format_generate
|
||||
// Access: Published
|
||||
|
|
@ -1051,20 +1044,18 @@ ai_format_generate(PyObject *distobj, DOID_TYPE do_id,
|
|||
bool has_optional_fields = (PyObject_IsTrue(optional_fields) != 0);
|
||||
|
||||
if (has_optional_fields) {
|
||||
packer.raw_pack_uint16(STATESERVER_OBJECT_GENERATE_WITH_REQUIRED_OTHER);
|
||||
packer.raw_pack_uint16(STATESERVER_CREATE_OBJECT_WITH_REQUIRED_OTHER);
|
||||
} else {
|
||||
packer.raw_pack_uint16(STATESERVER_OBJECT_GENERATE_WITH_REQUIRED);
|
||||
packer.raw_pack_uint16(STATESERVER_CREATE_OBJECT_WITH_REQUIRED);
|
||||
}
|
||||
|
||||
|
||||
packer.raw_pack_uint32(do_id);
|
||||
// Parent is a bit overloaded; this parent is not about inheritance,
|
||||
// this one is about the visibility container parent, i.e. the zone
|
||||
// parent:
|
||||
if (parent_id) {
|
||||
packer.raw_pack_uint32(parent_id);
|
||||
}
|
||||
packer.raw_pack_uint32(parent_id);
|
||||
packer.raw_pack_uint32(zone_id);
|
||||
packer.raw_pack_uint16(_number);
|
||||
packer.raw_pack_uint32(do_id);
|
||||
|
||||
// Specify all of the required fields.
|
||||
int num_fields = get_num_inherited_fields();
|
||||
|
|
@ -1114,91 +1105,6 @@ ai_format_generate(PyObject *distobj, DOID_TYPE do_id,
|
|||
|
||||
return Datagram(packer.get_data(), packer.get_length());
|
||||
}
|
||||
#endif // HAVE_PYTHON
|
||||
#ifdef HAVE_PYTHON
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: DCClass::ai_database_generate_context
|
||||
// Access: Published
|
||||
// Description: Generates a datagram containing the message necessary
|
||||
// to create a new database distributed object from the AI.
|
||||
//
|
||||
// First Pass is to only incldue required values
|
||||
// (with Defaults).
|
||||
////////////////////////////////////////////////////////////////////
|
||||
Datagram DCClass::
|
||||
ai_database_generate_context(
|
||||
unsigned int context_id, DOID_TYPE parent_id, ZONEID_TYPE zone_id,
|
||||
CHANNEL_TYPE owner_channel,
|
||||
CHANNEL_TYPE database_server_id, CHANNEL_TYPE from_channel_id) const
|
||||
{
|
||||
DCPacker packer;
|
||||
packer.raw_pack_uint8(1);
|
||||
packer.RAW_PACK_CHANNEL(database_server_id);
|
||||
packer.RAW_PACK_CHANNEL(from_channel_id);
|
||||
//packer.raw_pack_uint8('A');
|
||||
packer.raw_pack_uint16(STATESERVER_OBJECT_CREATE_WITH_REQUIRED_CONTEXT);
|
||||
packer.raw_pack_uint32(parent_id);
|
||||
packer.raw_pack_uint32(zone_id);
|
||||
packer.RAW_PACK_CHANNEL(owner_channel);
|
||||
packer.raw_pack_uint16(_number); // DCD class ID
|
||||
packer.raw_pack_uint32(context_id);
|
||||
|
||||
// Specify all of the required fields.
|
||||
int num_fields = get_num_inherited_fields();
|
||||
for (int i = 0; i < num_fields; ++i) {
|
||||
DCField *field = get_inherited_field(i);
|
||||
if (field->is_required() && field->as_molecular_field() == NULL) {
|
||||
packer.begin_pack(field);
|
||||
packer.pack_default_value();
|
||||
packer.end_pack();
|
||||
}
|
||||
}
|
||||
|
||||
return Datagram(packer.get_data(), packer.get_length());
|
||||
}
|
||||
#endif // HAVE_PYTHON
|
||||
|
||||
#ifdef HAVE_PYTHON
|
||||
// TODO: remove this once Skyler has things working with the new server
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: DCClass::ai_database_generate_context_old
|
||||
// Access: Published
|
||||
// Description: Generates a datagram containing the message necessary
|
||||
// to create a new database distributed object from the AI.
|
||||
//
|
||||
// First Pass is to only incldue required values
|
||||
// (with Defaults).
|
||||
////////////////////////////////////////////////////////////////////
|
||||
Datagram DCClass::
|
||||
ai_database_generate_context_old(
|
||||
unsigned int context_id, DOID_TYPE parent_id, ZONEID_TYPE zone_id,
|
||||
CHANNEL_TYPE database_server_id, CHANNEL_TYPE from_channel_id) const
|
||||
{
|
||||
DCPacker packer;
|
||||
packer.raw_pack_uint8(1);
|
||||
packer.RAW_PACK_CHANNEL(database_server_id);
|
||||
packer.RAW_PACK_CHANNEL(from_channel_id);
|
||||
//packer.raw_pack_uint8('A');
|
||||
packer.raw_pack_uint16(STATESERVER_OBJECT_CREATE_WITH_REQUIRED_CONTEXT);
|
||||
packer.raw_pack_uint32(parent_id);
|
||||
packer.raw_pack_uint32(zone_id);
|
||||
packer.raw_pack_uint16(_number); // DCD class ID
|
||||
packer.raw_pack_uint32(context_id);
|
||||
|
||||
// Specify all of the required fields.
|
||||
int num_fields = get_num_inherited_fields();
|
||||
for (int i = 0; i < num_fields; ++i) {
|
||||
DCField *field = get_inherited_field(i);
|
||||
if (field->is_required() && field->as_molecular_field() == NULL) {
|
||||
packer.begin_pack(field);
|
||||
packer.pack_default_value();
|
||||
packer.end_pack();
|
||||
}
|
||||
}
|
||||
|
||||
return Datagram(packer.get_data(), packer.get_length());
|
||||
}
|
||||
#endif // HAVE_PYTHON
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function : DCClass::output
|
||||
|
|
|
|||
|
|
@ -120,11 +120,6 @@ PUBLISHED:
|
|||
Datagram client_format_generate_CMU(PyObject *distobj, DOID_TYPE do_id,
|
||||
ZONEID_TYPE zone_id, PyObject *optional_fields) const;
|
||||
|
||||
Datagram ai_database_generate_context(unsigned int context_id, DOID_TYPE parent_id, ZONEID_TYPE zone_id, CHANNEL_TYPE owner_channel,
|
||||
CHANNEL_TYPE database_server_id, CHANNEL_TYPE from_channel_id) const;
|
||||
Datagram ai_database_generate_context_old(unsigned int context_id, DOID_TYPE parent_id, ZONEID_TYPE zone_id,
|
||||
CHANNEL_TYPE database_server_id, CHANNEL_TYPE from_channel_id) const;
|
||||
|
||||
#endif
|
||||
|
||||
public:
|
||||
|
|
|
|||
|
|
@ -440,7 +440,7 @@ Datagram DCField::
|
|||
client_format_update(DOID_TYPE do_id, PyObject *args) const {
|
||||
DCPacker packer;
|
||||
|
||||
packer.raw_pack_uint16(CLIENT_OBJECT_UPDATE_FIELD);
|
||||
packer.raw_pack_uint16(CLIENT_OBJECT_SET_FIELD);
|
||||
packer.raw_pack_uint32(do_id);
|
||||
packer.raw_pack_uint16(_number);
|
||||
|
||||
|
|
@ -469,7 +469,7 @@ ai_format_update(DOID_TYPE do_id, CHANNEL_TYPE to_id, CHANNEL_TYPE from_id, PyOb
|
|||
packer.raw_pack_uint8(1);
|
||||
packer.RAW_PACK_CHANNEL(to_id);
|
||||
packer.RAW_PACK_CHANNEL(from_id);
|
||||
packer.raw_pack_uint16(STATESERVER_OBJECT_UPDATE_FIELD);
|
||||
packer.raw_pack_uint16(STATESERVER_OBJECT_SET_FIELD);
|
||||
packer.raw_pack_uint32(do_id);
|
||||
packer.raw_pack_uint16(_number);
|
||||
|
||||
|
|
|
|||
|
|
@ -19,16 +19,13 @@
|
|||
// It duplicates some symbols defined in MsgTypes.py and
|
||||
// AIMsgTypes.py.
|
||||
|
||||
#define CLIENT_OBJECT_UPDATE_FIELD 24
|
||||
#define CLIENT_CREATE_OBJECT_REQUIRED 34
|
||||
#define CLIENT_CREATE_OBJECT_REQUIRED_OTHER 35
|
||||
#define CLIENT_OBJECT_SET_FIELD 120
|
||||
#define CLIENT_ENTER_OBJECT_REQUIRED 142
|
||||
#define CLIENT_ENTER_OBJECT_REQUIRED_OTHER 143
|
||||
|
||||
#define STATESERVER_OBJECT_GENERATE_WITH_REQUIRED 2001
|
||||
#define STATESERVER_OBJECT_GENERATE_WITH_REQUIRED_OTHER 2003
|
||||
#define STATESERVER_OBJECT_UPDATE_FIELD 2004
|
||||
#define STATESERVER_OBJECT_CREATE_WITH_REQUIRED_CONTEXT 2050
|
||||
#define STATESERVER_OBJECT_CREATE_WITH_REQUIR_OTHER_CONTEXT 2051
|
||||
#define STATESERVER_BOUNCE_MESSAGE 2086
|
||||
#define STATESERVER_CREATE_OBJECT_WITH_REQUIRED 2000
|
||||
#define STATESERVER_CREATE_OBJECT_WITH_REQUIRED_OTHER 2001
|
||||
#define STATESERVER_OBJECT_SET_FIELD 2020
|
||||
|
||||
#define CLIENT_OBJECT_GENERATE_CMU 9002
|
||||
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ class AstronDatabaseInterface:
|
|||
|
||||
# Now generate and send the datagram:
|
||||
dg = PyDatagram()
|
||||
dg.addServerHeader(databaseId, self.air.ourChannel, DBSERVER_OBJECT_CREATE)
|
||||
dg.addServerHeader(databaseId, self.air.ourChannel, DBSERVER_CREATE_OBJECT)
|
||||
dg.addUint32(ctx)
|
||||
dg.addUint16(dclass.getNumber())
|
||||
dg.addUint16(fieldCount)
|
||||
|
|
@ -64,7 +64,7 @@ class AstronDatabaseInterface:
|
|||
doId = di.getUint32()
|
||||
|
||||
if ctx not in self._callbacks:
|
||||
self.notify.warning('Received unexpected DBSERVER_OBJECT_CREATE_RESP'
|
||||
self.notify.warning('Received unexpected DBSERVER_CREATE_OBJECT_RESP'
|
||||
' (ctx %d, doId %d)' % (ctx, doId))
|
||||
return
|
||||
|
||||
|
|
@ -263,7 +263,7 @@ class AstronDatabaseInterface:
|
|||
self.air.contextAllocator.free(ctx)
|
||||
|
||||
def handleDatagram(self, msgType, di):
|
||||
if msgType == DBSERVER_OBJECT_CREATE_RESP:
|
||||
if msgType == DBSERVER_CREATE_OBJECT_RESP:
|
||||
self.handleCreateObjectResp(di)
|
||||
elif msgType == DBSERVER_OBJECT_GET_ALL_RESP:
|
||||
self.handleQueryObjectResp(di)
|
||||
|
|
|
|||
|
|
@ -138,11 +138,13 @@ class AstronInternalRepository(ConnectionRepository):
|
|||
def handleDatagram(self, di):
|
||||
msgType = self.getMsgType()
|
||||
|
||||
if msgType == STATESERVER_OBJECT_ENTER_AI_RECV:
|
||||
self.handleObjEntry(di)
|
||||
elif msgType == STATESERVER_OBJECT_LEAVING_AI_INTEREST:
|
||||
if msgType in (STATESERVER_OBJECT_ENTER_AI_WITH_REQUIRED,
|
||||
STATESERVER_OBJECT_ENTER_AI_WITH_REQUIRED_OTHER):
|
||||
self.handleObjEntry(di, msgType == STATESERVER_OBJECT_ENTER_AI_WITH_REQUIRED_OTHER)
|
||||
elif msgType in (STATESERVER_OBJECT_CHANGING_AI,
|
||||
STATESERVER_OBJECT_DELETE_RAM):
|
||||
self.handleObjExit(di)
|
||||
elif msgType in (DBSERVER_OBJECT_CREATE_RESP,
|
||||
elif msgType in (DBSERVER_CREATE_OBJECT_RESP,
|
||||
DBSERVER_OBJECT_GET_ALL_RESP,
|
||||
DBSERVER_OBJECT_SET_FIELD_IF_EQUALS_RESP,
|
||||
DBSERVER_OBJECT_SET_FIELDS_IF_EQUALS_RESP):
|
||||
|
|
@ -150,11 +152,11 @@ class AstronInternalRepository(ConnectionRepository):
|
|||
else:
|
||||
self.notify.warning('Received message with unknown MsgType=%d' % msgType)
|
||||
|
||||
def handleObjEntry(self, di):
|
||||
def handleObjEntry(self, di, other):
|
||||
doId = di.getUint32()
|
||||
parentId = di.getUint32()
|
||||
zoneId = di.getUint32()
|
||||
classId = di.getUint16()
|
||||
doId = di.getUint32()
|
||||
|
||||
if classId not in self.dclassesByNumber:
|
||||
self.notify.warning('Received entry for unknown dclass=%d! (Object %d)' % (classId, doId))
|
||||
|
|
@ -175,7 +177,10 @@ class AstronInternalRepository(ConnectionRepository):
|
|||
|
||||
# Now for generation:
|
||||
do.generate()
|
||||
do.updateAllRequiredOtherFields(dclass, di)
|
||||
if other:
|
||||
do.updateAllRequiredOtherFields(dclass, di)
|
||||
else:
|
||||
do.updateAllRequiredFields(dclass, di)
|
||||
|
||||
def handleObjExit(self, di):
|
||||
doId = di.getUint32()
|
||||
|
|
@ -232,7 +237,7 @@ class AstronInternalRepository(ConnectionRepository):
|
|||
|
||||
do.doId = doId
|
||||
self.addDOToTables(do, location=(parentId, zoneId))
|
||||
do.sendGenerateWithRequired(self, parentId or 1, zoneId, optionalFields)
|
||||
do.sendGenerateWithRequired(self, parentId, zoneId, optionalFields)
|
||||
|
||||
def requestDelete(self, do):
|
||||
"""
|
||||
|
|
@ -276,7 +281,7 @@ class AstronInternalRepository(ConnectionRepository):
|
|||
# fall over and die.
|
||||
if self.serverId:
|
||||
dg = PyDatagram()
|
||||
dg.addServerHeader(self.serverId, self.ourChannel, STATESERVER_SHARD_RESET)
|
||||
dg.addServerHeader(self.serverId, self.ourChannel, STATESERVER_DELETE_AI_OBJECTS)
|
||||
dg.addChannel(self.ourChannel)
|
||||
self.addPostRemove(dg)
|
||||
|
||||
|
|
|
|||
|
|
@ -504,18 +504,23 @@ class DoInterestManager(DirectObject.DirectObject):
|
|||
'trying to set interest to invalid parent: %s' % parentId)
|
||||
datagram = PyDatagram()
|
||||
# Add message type
|
||||
datagram.addUint16(CLIENT_ADD_INTEREST)
|
||||
datagram.addUint16(handle)
|
||||
datagram.addUint32(contextId)
|
||||
datagram.addUint32(parentId)
|
||||
if isinstance(zoneIdList, types.ListType):
|
||||
vzl = list(zoneIdList)
|
||||
vzl.sort()
|
||||
uniqueElements(vzl)
|
||||
datagram.addUint16(CLIENT_ADD_INTEREST_MULTIPLE)
|
||||
datagram.addUint32(contextId)
|
||||
datagram.addUint16(handle)
|
||||
datagram.addUint32(parentId)
|
||||
datagram.addUint16(len(vzl))
|
||||
for zone in vzl:
|
||||
datagram.addUint32(zone)
|
||||
else:
|
||||
datagram.addUint32(zoneIdList)
|
||||
datagram.addUint16(CLIENT_ADD_INTEREST)
|
||||
datagram.addUint32(contextId)
|
||||
datagram.addUint16(handle)
|
||||
datagram.addUint32(parentId)
|
||||
datagram.addUint32(zoneIdList)
|
||||
self.send(datagram)
|
||||
|
||||
def _sendRemoveInterest(self, handle, contextId):
|
||||
|
|
@ -530,9 +535,8 @@ class DoInterestManager(DirectObject.DirectObject):
|
|||
datagram = PyDatagram()
|
||||
# Add message type
|
||||
datagram.addUint16(CLIENT_REMOVE_INTEREST)
|
||||
datagram.addUint32(contextId)
|
||||
datagram.addUint16(handle)
|
||||
if contextId != 0:
|
||||
datagram.addUint32(contextId)
|
||||
self.send(datagram)
|
||||
if __debug__:
|
||||
state = DoInterestManager._interests[handle]
|
||||
|
|
@ -583,8 +587,8 @@ class DoInterestManager(DirectObject.DirectObject):
|
|||
This handles the interest done messages and may dispatch an event
|
||||
"""
|
||||
assert DoInterestManager.notify.debugCall()
|
||||
handle = di.getUint16()
|
||||
contextId = di.getUint32()
|
||||
handle = di.getUint16()
|
||||
if self.__verbose():
|
||||
print 'CR::INTEREST.interestDone(handle=%s)' % handle
|
||||
DoInterestManager.notify.debug(
|
||||
|
|
|
|||
|
|
@ -6,121 +6,131 @@ MsgName2Id = {
|
|||
'CLIENT_HELLO': 1,
|
||||
'CLIENT_HELLO_RESP': 2,
|
||||
|
||||
# Sent by the client when it's leaving.
|
||||
'CLIENT_DISCONNECT': 3,
|
||||
|
||||
# Sent by the server when it is dropping the connection deliberately.
|
||||
'CLIENT_GO_GET_LOST': 4,
|
||||
'CLIENT_EJECT': 4,
|
||||
|
||||
'CLIENT_OBJECT_UPDATE_FIELD': 24,
|
||||
'CLIENT_OBJECT_UPDATE_FIELD_RESP': 24,
|
||||
'CLIENT_OBJECT_DISABLE': 25,
|
||||
'CLIENT_OBJECT_DISABLE_RESP': 25,
|
||||
'CLIENT_OBJECT_DISABLE_OWNER': 26,
|
||||
'CLIENT_OBJECT_DISABLE_OWNER_RESP': 26,
|
||||
'CLIENT_OBJECT_DELETE': 27,
|
||||
'CLIENT_OBJECT_DELETE_RESP': 27,
|
||||
'CLIENT_SET_ZONE_CMU': 29,
|
||||
'CLIENT_REMOVE_ZONE': 30,
|
||||
'CLIENT_SET_AVATAR': 32,
|
||||
'CLIENT_CREATE_OBJECT_REQUIRED': 34,
|
||||
'CLIENT_CREATE_OBJECT_REQUIRED_RESP': 34,
|
||||
'CLIENT_CREATE_OBJECT_REQUIRED_OTHER': 35,
|
||||
'CLIENT_CREATE_OBJECT_REQUIRED_OTHER_RESP': 35,
|
||||
'CLIENT_CREATE_OBJECT_REQUIRED_OTHER_OWNER': 36,
|
||||
'CLIENT_CREATE_OBJECT_REQUIRED_OTHER_OWNER_RESP':36,
|
||||
'CLIENT_HEARTBEAT': 5,
|
||||
|
||||
'CLIENT_REQUEST_GENERATES': 36,
|
||||
'CLIENT_OBJECT_SET_FIELD': 120,
|
||||
'CLIENT_OBJECT_LEAVING': 132,
|
||||
'CLIENT_OBJECT_LEAVING_OWNER': 161,
|
||||
'CLIENT_ENTER_OBJECT_REQUIRED': 142,
|
||||
'CLIENT_ENTER_OBJECT_REQUIRED_OTHER': 143,
|
||||
'CLIENT_ENTER_OBJECT_REQUIRED_OTHER_OWNER': 173,
|
||||
|
||||
'CLIENT_DISCONNECT': 37,
|
||||
'CLIENT_DONE_INTEREST_RESP': 204,
|
||||
|
||||
'CLIENT_DONE_INTEREST_RESP': 48,
|
||||
|
||||
'CLIENT_HEARTBEAT': 52,
|
||||
|
||||
'CLIENT_SET_DOID_RANGE': 74,
|
||||
|
||||
'CLIENT_ADD_INTEREST': 97,
|
||||
'CLIENT_REMOVE_INTEREST': 99,
|
||||
'CLIENT_OBJECT_LOCATION': 102,
|
||||
'CLIENT_ADD_INTEREST': 200,
|
||||
'CLIENT_ADD_INTEREST_MULTIPLE': 201,
|
||||
'CLIENT_REMOVE_INTEREST': 203,
|
||||
'CLIENT_OBJECT_LOCATION': 140,
|
||||
|
||||
|
||||
# These are sent internally inside the Astron cluster.
|
||||
|
||||
# Message Director control messages:
|
||||
'CONTROL_CHANNEL': 4001,
|
||||
'CONTROL_ADD_CHANNEL': 2001,
|
||||
'CONTROL_REMOVE_CHANNEL': 2002,
|
||||
'CONTROL_ADD_RANGE': 2008,
|
||||
'CONTROL_REMOVE_RANGE': 2009,
|
||||
'CONTROL_ADD_POST_REMOVE': 2010,
|
||||
'CONTROL_CLEAR_POST_REMOVE': 2011,
|
||||
'CONTROL_CHANNEL': 1,
|
||||
'CONTROL_ADD_CHANNEL': 9000,
|
||||
'CONTROL_REMOVE_CHANNEL': 9001,
|
||||
'CONTROL_ADD_RANGE': 9002,
|
||||
'CONTROL_REMOVE_RANGE': 9003,
|
||||
'CONTROL_ADD_POST_REMOVE': 9010,
|
||||
'CONTROL_CLEAR_POST_REMOVE': 9011,
|
||||
|
||||
# State Server control messages:
|
||||
'STATESERVER_OBJECT_GENERATE_WITH_REQUIRED': 2001,
|
||||
'STATESERVER_OBJECT_GENERATE_WITH_REQUIRED_OTHER': 2003,
|
||||
'STATESERVER_OBJECT_UPDATE_FIELD': 2004,
|
||||
'STATESERVER_OBJECT_UPDATE_FIELD_MULTIPLE': 2005,
|
||||
'STATESERVER_OBJECT_DELETE_RAM': 2007,
|
||||
'STATESERVER_OBJECT_SET_ZONE': 2008,
|
||||
'STATESERVER_OBJECT_CHANGE_ZONE': 2009,
|
||||
'STATESERVER_OBJECT_LOCATE': 2022,
|
||||
'STATESERVER_OBJECT_LOCATE_RESP': 2023,
|
||||
'STATESERVER_OBJECT_SET_AI_CHANNEL': 2045,
|
||||
'STATESERVER_OBJECT_QUERY_ALL': 2020,
|
||||
'STATESERVER_OBJECT_QUERY_FIELD': 2024,
|
||||
'STATESERVER_OBJECT_QUERY_FIELD_RESP': 2062,
|
||||
'STATESERVER_OBJECT_QUERY_FIELDS': 2080,
|
||||
'STATESERVER_OBJECT_QUERY_FIELDS_RESP': 2081,
|
||||
'STATESERVER_OBJECT_QUERY_ALL_RESP': 2030,
|
||||
'STATESERVER_OBJECT_QUERY_ZONE_ALL': 2021,
|
||||
'STATESERVER_OBJECT_QUERY_ZONE_ALL_DONE': 2046,
|
||||
'STATESERVER_SHARD_RESET': 2061,
|
||||
'STATESERVER_OBJECT_ENTERZONE_WITH_REQUIRED': 2065,
|
||||
'STATESERVER_OBJECT_ENTERZONE_WITH_REQUIRED_OTHER': 2066,
|
||||
'STATESERVER_OBJECT_ENTER_AI_RECV': 2067,
|
||||
'STATESERVER_OBJECT_SET_OWNER_RECV': 2070,
|
||||
'STATESERVER_OBJECT_CHANGE_OWNER_RECV': 2069,
|
||||
'STATESERVER_OBJECT_ENTER_OWNER_RECV': 2068,
|
||||
'STATESERVER_OBJECT_LEAVING_AI_INTEREST': 2033,
|
||||
'STATESERVER_OBJECT_QUERY_MANAGING_AI': 2083,
|
||||
'STATESERVER_OBJECT_NOTIFY_MANAGING_AI': 2047,
|
||||
'STATESERVER_CREATE_OBJECT_WITH_REQUIRED': 2000,
|
||||
'STATESERVER_CREATE_OBJECT_WITH_REQUIRED_OTHER': 2001,
|
||||
'STATESERVER_DELETE_AI_OBJECTS': 2009,
|
||||
'STATESERVER_OBJECT_GET_FIELD': 2010,
|
||||
'STATESERVER_OBJECT_GET_FIELD_RESP': 2011,
|
||||
'STATESERVER_OBJECT_GET_FIELDS': 2012,
|
||||
'STATESERVER_OBJECT_GET_FIELDS_RESP': 2013,
|
||||
'STATESERVER_OBJECT_GET_ALL': 2014,
|
||||
'STATESERVER_OBJECT_GET_ALL_RESP': 2015,
|
||||
'STATESERVER_OBJECT_SET_FIELD': 2020,
|
||||
'STATESERVER_OBJECT_SET_FIELDS': 2021,
|
||||
'STATESERVER_OBJECT_DELETE_FIELD_RAM': 2030,
|
||||
'STATESERVER_OBJECT_DELETE_FIELDS_RAM': 2031,
|
||||
'STATESERVER_OBJECT_DELETE_RAM': 2032,
|
||||
'STATESERVER_OBJECT_SET_LOCATION': 2040,
|
||||
'STATESERVER_OBJECT_CHANGING_LOCATION': 2041,
|
||||
'STATESERVER_OBJECT_ENTER_LOCATION_WITH_REQUIRED': 2042,
|
||||
'STATESERVER_OBJECT_ENTER_LOCATION_WITH_REQUIRED_OTHER': 2043,
|
||||
'STATESERVER_OBJECT_GET_LOCATION': 2044,
|
||||
'STATESERVER_OBJECT_GET_LOCATION_RESP': 2045,
|
||||
'STATESERVER_OBJECT_SET_AI': 2050,
|
||||
'STATESERVER_OBJECT_CHANGING_AI': 2051,
|
||||
'STATESERVER_OBJECT_ENTER_AI_WITH_REQUIRED': 2052,
|
||||
'STATESERVER_OBJECT_ENTER_AI_WITH_REQUIRED_OTHER': 2053,
|
||||
'STATESERVER_OBJECT_GET_AI': 2054,
|
||||
'STATESERVER_OBJECT_GET_AI_RESP': 2055,
|
||||
'STATESERVER_OBJECT_SET_OWNER': 2060,
|
||||
'STATESERVER_OBJECT_CHANGING_OWNER': 2061,
|
||||
'STATESERVER_OBJECT_ENTER_OWNER_WITH_REQUIRED': 2062,
|
||||
'STATESERVER_OBJECT_ENTER_OWNER_WITH_REQUIRED_OTHER': 2063,
|
||||
'STATESERVER_OBJECT_GET_OWNER': 2064,
|
||||
'STATESERVER_OBJECT_GET_OWNER_RESP': 2065,
|
||||
'STATESERVER_OBJECT_GET_ZONE_OBJECTS': 2100,
|
||||
'STATESERVER_OBJECT_GET_ZONES_OBJECTS': 2102,
|
||||
'STATESERVER_OBJECT_GET_CHILDREN': 2104,
|
||||
'STATESERVER_OBJECT_GET_ZONE_COUNT': 2110,
|
||||
'STATESERVER_OBJECT_GET_ZONE_COUNT_RESP': 2111,
|
||||
'STATESERVER_OBJECT_GET_ZONES_COUNT': 2112,
|
||||
'STATESERVER_OBJECT_GET_ZONES_COUNT_RESP': 2113,
|
||||
'STATESERVER_OBJECT_GET_CHILD_COUNT': 2114,
|
||||
'STATESERVER_OBJECT_GET_CHILD_COUNT_RESP': 2115,
|
||||
'STATESERVER_OBJECT_DELETE_ZONE': 2120,
|
||||
'STATESERVER_OBJECT_DELETE_ZONES': 2122,
|
||||
'STATESERVER_OBJECT_DELETE_CHILDREN': 2124,
|
||||
# DBSS-backed-object messages:
|
||||
'DBSS_OBJECT_ACTIVATE_WITH_DEFAULTS': 2200,
|
||||
'DBSS_OBJECT_ACTIVATE_WITH_DEFAULTS_OTHER': 2201,
|
||||
'DBSS_OBJECT_DELETE_FIELD_DISK': 2230,
|
||||
'DBSS_OBJECT_DELETE_FIELDS_DISK': 2231,
|
||||
'DBSS_OBJECT_DELETE_DISK': 2232,
|
||||
|
||||
# Database Server control messages:
|
||||
'DBSERVER_OBJECT_CREATE': 4000,
|
||||
'DBSERVER_OBJECT_CREATE_RESP': 4001,
|
||||
'DBSERVER_OBJECT_DELETE': 4002,
|
||||
'DBSERVER_OBJECT_GET_FIELD': 4010,
|
||||
'DBSERVER_OBJECT_GET_FIELD_RESP': 4011,
|
||||
'DBSERVER_OBJECT_GET_FIELDS': 4012,
|
||||
'DBSERVER_OBJECT_GET_FIELDS_RESP': 4013,
|
||||
'DBSERVER_OBJECT_GET_ALL': 4014,
|
||||
'DBSERVER_OBJECT_GET_ALL_RESP': 4015,
|
||||
'DBSERVER_OBJECT_SET_FIELD': 4020,
|
||||
'DBSERVER_OBJECT_SET_FIELDS': 4021,
|
||||
'DBSERVER_OBJECT_SET_FIELD_IF_EQUALS': 4022,
|
||||
'DBSERVER_OBJECT_SET_FIELD_IF_EQUALS_RESP': 4023,
|
||||
'DBSERVER_OBJECT_SET_FIELDS_IF_EQUALS': 4024,
|
||||
'DBSERVER_OBJECT_SET_FIELDS_IF_EQUALS_RESP': 4025,
|
||||
'DBSERVER_OBJECT_SET_FIELD_IF_EMPTY': 4026,
|
||||
'DBSERVER_OBJECT_SET_FIELD_IF_EMPTY_RESP': 4027,
|
||||
'DBSERVER_OBJECT_DELETE_FIELD': 4030,
|
||||
'DBSERVER_OBJECT_DELETE_FIELDS': 4031,
|
||||
'DBSERVER_CREATE_OBJECT': 3000,
|
||||
'DBSERVER_CREATE_OBJECT_RESP': 3001,
|
||||
'DBSERVER_OBJECT_GET_FIELD': 3010,
|
||||
'DBSERVER_OBJECT_GET_FIELD_RESP': 3011,
|
||||
'DBSERVER_OBJECT_GET_FIELDS': 3012,
|
||||
'DBSERVER_OBJECT_GET_FIELDS_RESP': 3013,
|
||||
'DBSERVER_OBJECT_GET_ALL': 3014,
|
||||
'DBSERVER_OBJECT_GET_ALL_RESP': 3015,
|
||||
'DBSERVER_OBJECT_SET_FIELD': 3020,
|
||||
'DBSERVER_OBJECT_SET_FIELDS': 3021,
|
||||
'DBSERVER_OBJECT_SET_FIELD_IF_EQUALS': 3022,
|
||||
'DBSERVER_OBJECT_SET_FIELD_IF_EQUALS_RESP': 3023,
|
||||
'DBSERVER_OBJECT_SET_FIELDS_IF_EQUALS': 3024,
|
||||
'DBSERVER_OBJECT_SET_FIELDS_IF_EQUALS_RESP': 3025,
|
||||
'DBSERVER_OBJECT_SET_FIELD_IF_EMPTY': 3026,
|
||||
'DBSERVER_OBJECT_SET_FIELD_IF_EMPTY_RESP': 3027,
|
||||
'DBSERVER_OBJECT_DELETE_FIELD': 3030,
|
||||
'DBSERVER_OBJECT_DELETE_FIELDS': 3031,
|
||||
'DBSERVER_OBJECT_DELETE': 3032,
|
||||
|
||||
# Client Agent control messages:
|
||||
'CLIENTAGENT_OPEN_CHANNEL': 3104,
|
||||
'CLIENTAGENT_CLOSE_CHANNEL': 3105,
|
||||
'CLIENTAGENT_ADD_INTEREST': 3106,
|
||||
'CLIENTAGENT_REMOVE_INTEREST': 3107,
|
||||
'CLIENTAGENT_ADD_POST_REMOVE': 3108,
|
||||
'CLIENTAGENT_CLEAR_POST_REMOVE': 3109,
|
||||
'CLIENTAGENT_DISCONNECT': 3101,
|
||||
'CLIENTAGENT_DROP': 3102,
|
||||
'CLIENTAGENT_SEND_DATAGRAM': 3100,
|
||||
'CLIENTAGENT_SET_SENDER_ID': 3103,
|
||||
'CLIENTAGENT_SET_STATE': 3110,
|
||||
'CLIENTAGENT_ADD_SESSION_OBJECT': 3112,
|
||||
'CLIENTAGENT_REMOVE_SESSION_OBJECT': 3113,
|
||||
'CLIENTAGENT_DECLARE_OBJECT': 3114,
|
||||
'CLIENTAGENT_UNDECLARE_OBJECT': 3115,
|
||||
'CLIENTAGENT_SET_FIELDS_SENDABLE': 3111,
|
||||
'CLIENTAGENT_SET_STATE': 1000,
|
||||
'CLIENTAGENT_SET_CLIENT_ID': 1001,
|
||||
'CLIENTAGENT_SEND_DATAGRAM': 1002,
|
||||
'CLIENTAGENT_EJECT': 1004,
|
||||
'CLIENTAGENT_DROP': 1005,
|
||||
'CLIENTAGENT_DECLARE_OBJECT': 1010,
|
||||
'CLIENTAGENT_UNDECLARE_OBJECT': 1011,
|
||||
'CLIENTAGENT_ADD_SESSION_OBJECT': 1012,
|
||||
'CLIENTAGENT_REMOVE_SESSION_OBJECT': 1013,
|
||||
'CLIENTAGENT_SET_FIELDS_SENDABLE': 1014,
|
||||
'CLIENTAGENT_OPEN_CHANNEL': 1100,
|
||||
'CLIENTAGENT_CLOSE_CHANNEL': 1101,
|
||||
'CLIENTAGENT_ADD_POST_REMOVE': 1110,
|
||||
'CLIENTAGENT_CLEAR_POST_REMOVES': 1111,
|
||||
'CLIENTAGENT_ADD_INTEREST': 1200,
|
||||
'CLIENTAGENT_ADD_INTEREST_MULTIPLE': 1201,
|
||||
'CLIENTAGENT_REMOVE_INTEREST': 1203,
|
||||
}
|
||||
|
||||
# create id->name table for debugging
|
||||
|
|
|
|||
|
|
@ -343,8 +343,8 @@ check_datagram() {
|
|||
|
||||
switch (_msg_type) {
|
||||
#ifdef HAVE_PYTHON
|
||||
case CLIENT_OBJECT_UPDATE_FIELD:
|
||||
case STATESERVER_OBJECT_UPDATE_FIELD:
|
||||
case CLIENT_OBJECT_SET_FIELD:
|
||||
case STATESERVER_OBJECT_SET_FIELD:
|
||||
if (_handle_c_updates) {
|
||||
if (_has_owner_view) {
|
||||
if (!handle_update_field_owner()) {
|
||||
|
|
@ -533,7 +533,7 @@ send_message_bundle(unsigned int channel, unsigned int sender_channel) {
|
|||
dg.add_int8(1);
|
||||
dg.add_uint64(channel);
|
||||
dg.add_uint64(sender_channel);
|
||||
dg.add_uint16(STATESERVER_BOUNCE_MESSAGE);
|
||||
//dg.add_uint16(STATESERVER_BOUNCE_MESSAGE);
|
||||
// add each bundled message
|
||||
BundledMsgVector::const_iterator bmi;
|
||||
for (bmi = _bundle_msgs.begin(); bmi != _bundle_msgs.end(); bmi++) {
|
||||
|
|
@ -966,11 +966,11 @@ describe_message(ostream &out, const string &prefix,
|
|||
|
||||
packer.RAW_UNPACK_CHANNEL(); // msg_sender
|
||||
msg_type = packer.raw_unpack_uint16();
|
||||
is_update = (msg_type == STATESERVER_OBJECT_UPDATE_FIELD);
|
||||
is_update = (msg_type == STATESERVER_OBJECT_SET_FIELD);
|
||||
|
||||
} else {
|
||||
msg_type = packer.raw_unpack_uint16();
|
||||
is_update = (msg_type == CLIENT_OBJECT_UPDATE_FIELD);
|
||||
is_update = (msg_type == CLIENT_OBJECT_SET_FIELD);
|
||||
}
|
||||
|
||||
if (!is_update) {
|
||||
|
|
@ -1122,7 +1122,7 @@ bool CConnectionRepository::check_datagram_ai(PyObject *PycallBackFunction)
|
|||
_msg_sender = _di.get_uint64();
|
||||
_msg_type = _di.get_uint16();
|
||||
|
||||
if( _msg_type == STATESERVER_OBJECT_UPDATE_FIELD)
|
||||
if( _msg_type == STATESERVER_OBJECT_SET_FIELD)
|
||||
{
|
||||
if(doId2do == NULL)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -298,12 +298,12 @@ begin_send_update(DCPacker &packer, const string &field_name) {
|
|||
packer.RAW_PACK_CHANNEL(_do_id);
|
||||
packer.RAW_PACK_CHANNEL(_ai_id);
|
||||
//packer.raw_pack_uint8('A');
|
||||
packer.raw_pack_uint16(STATESERVER_OBJECT_UPDATE_FIELD);
|
||||
packer.raw_pack_uint16(STATESERVER_OBJECT_SET_FIELD);
|
||||
packer.raw_pack_uint32(_do_id);
|
||||
packer.raw_pack_uint16(field->get_number());
|
||||
|
||||
} else {
|
||||
packer.raw_pack_uint16(CLIENT_OBJECT_UPDATE_FIELD);
|
||||
packer.raw_pack_uint16(CLIENT_OBJECT_SET_FIELD);
|
||||
packer.raw_pack_uint32(_do_id);
|
||||
packer.raw_pack_uint16(field->get_number());
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue