*** empty log message ***
This commit is contained in:
parent
f236491613
commit
316c7955bc
|
|
@ -14,6 +14,9 @@ class ClientDistClass:
|
|||
self.number2CDU = self.createNumber2CDUDict(self.allCDU)
|
||||
self.name2CDU = self.createName2CDUDict(self.allCDU)
|
||||
self.allRequiredCDU = self.listRequiredCDU(self.allCDU)
|
||||
# Import the class, and store the constructor
|
||||
exec("import " + self.name)
|
||||
self.constructor = eval(self.name + "." + self.name)
|
||||
return None
|
||||
|
||||
def parseFields(self, dcClass):
|
||||
|
|
@ -25,7 +28,7 @@ class ClientDistClass:
|
|||
def createAllCDU(self, allFields):
|
||||
allCDU = []
|
||||
for i in allFields:
|
||||
allCDU.append(ClientDistUpdate.ClientDistUpdate(i))
|
||||
allCDU.append(ClientDistUpdate.ClientDistUpdate(self, i))
|
||||
return allCDU
|
||||
|
||||
def createNumber2CDUDict(self, allCDU):
|
||||
|
|
|
|||
|
|
@ -1,21 +1,28 @@
|
|||
"""ClientDistUpdate module: contains the ClientDistUpdate class"""
|
||||
|
||||
import DirectNotifyGlobal
|
||||
import Avatar
|
||||
import DistributedToon
|
||||
import Datagram
|
||||
from MsgTypes import *
|
||||
|
||||
class ClientDistUpdate:
|
||||
notify = DirectNotifyGlobal.directNotify.newCategory("ClientDistUpdate")
|
||||
|
||||
def __init__(self, dcField):
|
||||
def __init__(self, cdc, dcField):
|
||||
self.cdc = cdc
|
||||
self.field = dcField
|
||||
self.number = dcField.getNumber()
|
||||
self.name = dcField.getName()
|
||||
self.types = []
|
||||
self.divisors = []
|
||||
self.deriveTypesFromParticle(dcField)
|
||||
self.deriveTypesFromParticle(dcField)
|
||||
# Figure out our function pointer
|
||||
exec("import " + cdc.name)
|
||||
try:
|
||||
self.func = eval(cdc.name + "." + cdc.name + "." + self.name)
|
||||
except:
|
||||
ClientDistUpdate.notify.warning(cdc.name + "." + self.name +
|
||||
" does not exist")
|
||||
self.func = None
|
||||
return None
|
||||
|
||||
def deriveTypesFromParticle(self, dcField):
|
||||
|
|
@ -37,7 +44,7 @@ class ClientDistUpdate:
|
|||
|
||||
def updateField(self, cdc, do, di):
|
||||
|
||||
func = eval(cdc.name + "." + cdc.name + "." + self.name)
|
||||
#func = eval(cdc.name + "." + cdc.name + "." + self.name)
|
||||
#print("Calling: " + cdc.name + "." + cdc.name + "." + self.name +
|
||||
# " for do " + str(do.getDoId()))
|
||||
|
||||
|
|
@ -45,7 +52,7 @@ class ClientDistUpdate:
|
|||
args = self.extractArgs(di)
|
||||
|
||||
# Apply the function to the object with the arguments
|
||||
apply(func, [do] + args)
|
||||
apply(self.func, [do] + args)
|
||||
|
||||
return None
|
||||
|
||||
|
|
|
|||
|
|
@ -8,16 +8,16 @@ import Task
|
|||
import DirectNotifyGlobal
|
||||
import ClientDistClass
|
||||
import CRCache
|
||||
import Datagram
|
||||
# The repository must import all known types of Distributed Objects
|
||||
import DistributedObject
|
||||
import DistributedToon
|
||||
#import DistributedObject
|
||||
#import DistributedToon
|
||||
import DirectObject
|
||||
|
||||
class ClientRepository(DirectObject.DirectObject):
|
||||
notify = DirectNotifyGlobal.directNotify.newCategory("ClientRepository")
|
||||
|
||||
def __init__(self, dcFileName, AIClientFlag=0):
|
||||
self.AIClientFlag=AIClientFlag
|
||||
def __init__(self, dcFileName):
|
||||
self.number2cdc={}
|
||||
self.name2cdc={}
|
||||
self.doId2do={}
|
||||
|
|
@ -94,11 +94,8 @@ class ClientRepository(DirectObject.DirectObject):
|
|||
# Look up the cdc
|
||||
cdc = self.number2cdc[classId]
|
||||
# Create a new distributed object, and put it in the dictionary
|
||||
distObj = self.generateWithRequiredFields(cdc,
|
||||
eval(cdc.name + \
|
||||
"." + \
|
||||
cdc.name),
|
||||
doId, di)
|
||||
distObj = self.generateWithRequiredFields(cdc, doId, di)
|
||||
# Call "generate" for the dist obj
|
||||
distObj.generate()
|
||||
return None
|
||||
|
||||
|
|
@ -110,15 +107,12 @@ class ClientRepository(DirectObject.DirectObject):
|
|||
# Look up the cdc
|
||||
cdc = self.number2cdc[classId]
|
||||
# Create a new distributed object, and put it in the dictionary
|
||||
distObj = self.generateWithRequiredOtherFields(cdc,
|
||||
eval(cdc.name + \
|
||||
"." + \
|
||||
cdc.name),
|
||||
doId, di)
|
||||
distObj = self.generateWithRequiredOtherFields(cdc, doId, di)
|
||||
# Call "generate" for the distObj
|
||||
distObj.generate()
|
||||
return None
|
||||
|
||||
def generateWithRequiredFields(self, cdc, constructor, doId, di):
|
||||
def generateWithRequiredFields(self, cdc, doId, di):
|
||||
# Is it in our dictionary?
|
||||
if self.doId2do.has_key(doId):
|
||||
# If so, just update it.
|
||||
|
|
@ -139,7 +133,7 @@ class ClientRepository(DirectObject.DirectObject):
|
|||
# If it is not in the dictionary or the cache, then...
|
||||
else:
|
||||
# Construct a new one
|
||||
distObj = constructor(self)
|
||||
distObj = cdc.constructor(self)
|
||||
# Assign it an Id
|
||||
distObj.doId = doId
|
||||
# Update the required fields
|
||||
|
|
@ -150,7 +144,7 @@ class ClientRepository(DirectObject.DirectObject):
|
|||
|
||||
return distObj
|
||||
|
||||
def generateWithRequiredOtherFields(self, cdc, constructor, doId, di):
|
||||
def generateWithRequiredOtherFields(self, cdc, doId, di):
|
||||
# Is it in our dictionary?
|
||||
if self.doId2do.has_key(doId):
|
||||
# If so, just update it.
|
||||
|
|
@ -171,7 +165,7 @@ class ClientRepository(DirectObject.DirectObject):
|
|||
# If it is not in the dictionary or the cache, then...
|
||||
else:
|
||||
# Construct a new one
|
||||
distObj = constructor(self)
|
||||
distObj = cdc.constructor(self)
|
||||
# Assign it an Id
|
||||
distObj.doId = doId
|
||||
# Update the required fields
|
||||
|
|
@ -242,6 +236,36 @@ class ClientRepository(DirectObject.DirectObject):
|
|||
cdc = self.doId2cdc[doId]
|
||||
# Let the cdc finish the job
|
||||
cdc.updateField(do, di)
|
||||
return None
|
||||
|
||||
def handleUnexpectedMsgType(self, msgType, di):
|
||||
ClientRepository.notify.warning(
|
||||
"Ignoring unexpected message type: " +
|
||||
str(msgType) +
|
||||
" in state: " +
|
||||
self.fsm.getCurrentState().getName())
|
||||
return None
|
||||
|
||||
def sendSetShardMsg(self, shardId):
|
||||
datagram = Datagram.Datagram()
|
||||
# Add message type
|
||||
datagram.addUint16(CLIENT_SET_SHARD)
|
||||
# Add shard id
|
||||
datagram.addUint32(shardId)
|
||||
# send the message
|
||||
self.send(datagram)
|
||||
return None
|
||||
|
||||
def sendSetZoneMsg(self, zoneId):
|
||||
datagram = Datagram.Datagram()
|
||||
# Add message type
|
||||
datagram.addUint16(CLIENT_SET_ZONE)
|
||||
# Add zone id
|
||||
datagram.addUint16(zoneId)
|
||||
|
||||
# send the message
|
||||
self.send(datagram)
|
||||
return None
|
||||
|
||||
def sendUpdate(self, do, fieldName, args):
|
||||
# Get the DO id
|
||||
|
|
|
|||
|
|
@ -4,5 +4,7 @@ CLIENT_OBJECT_UPDATE_FIELD = 24
|
|||
CLIENT_OBJECT_UPDATE_FIELD_RESP = 24
|
||||
CLIENT_OBJECT_DISABLE_RESP = 25
|
||||
CLIENT_OBJECT_DELETE_RESP = 27
|
||||
CLIENT_SET_ZONE = 29
|
||||
CLIENT_SET_SHARD = 31
|
||||
CLIENT_CREATE_OBJECT_REQUIRED = 34
|
||||
CLIENT_CREATE_OBJECT_REQUIRED_OTHER = 35
|
||||
|
|
|
|||
|
|
@ -112,9 +112,9 @@ class FSM(DirectObject):
|
|||
if (aState in self.__states):
|
||||
FSM.notify.debug("entering %s" % aState.getName())
|
||||
self.__currentState = aState
|
||||
aState.enter(argList)
|
||||
messenger.send(self.getName() + '_' +
|
||||
aState.getName() + '_entered')
|
||||
aState.enter(argList)
|
||||
else:
|
||||
FSM.notify.error("enter: no such state")
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue