Browse Source

made post generates for DistributedObject stuff

Zachary Pavlov 19 years ago
parent
commit
fc5b2e04ce

+ 14 - 5
direct/src/distributed/DistributedObject.py

@@ -207,9 +207,7 @@ class DistributedObject(DistributedObjectBase, EnforcesCalldowns):
         generated and all of its required fields filled in.
         generated and all of its required fields filled in.
         """
         """
         assert self.notify.debug('announceGenerate(): %s' % (self.doId))
         assert self.notify.debug('announceGenerate(): %s' % (self.doId))
-        if self.activeState != ESGenerated:
-            self.activeState = ESGenerated
-            messenger.send(self.uniqueName("generate"), [self])
+
 
 
     @calldownEnforced
     @calldownEnforced
     def disable(self):
     def disable(self):
@@ -281,14 +279,24 @@ class DistributedObject(DistributedObjectBase, EnforcesCalldowns):
         """
         """
         return self.doId
         return self.doId
 
 
+
+    #This message was moved out of announce generate
+    #to avoid ordering issues.  
+    def postGenerateMessage(self):
+        if self.activeState != ESGenerated:
+            self.activeState = ESGenerated
+            messenger.send(self.uniqueName("generate"), [self])
+            
     def updateRequiredFields(self, dclass, di):
     def updateRequiredFields(self, dclass, di):
         dclass.receiveUpdateBroadcastRequired(self, di)
         dclass.receiveUpdateBroadcastRequired(self, di)
         self.announceGenerate()
         self.announceGenerate()
+        self.postGenerateMessage()
 
 
     def updateAllRequiredFields(self, dclass, di):
     def updateAllRequiredFields(self, dclass, di):
         dclass.receiveUpdateAllRequired(self, di)
         dclass.receiveUpdateAllRequired(self, di)
         self.announceGenerate()
         self.announceGenerate()
-
+        self.postGenerateMessage()
+        
     def updateRequiredOtherFields(self, dclass, di):
     def updateRequiredOtherFields(self, dclass, di):
         # First, update the required fields
         # First, update the required fields
         dclass.receiveUpdateBroadcastRequired(self, di)
         dclass.receiveUpdateBroadcastRequired(self, di)
@@ -296,7 +304,8 @@ class DistributedObject(DistributedObjectBase, EnforcesCalldowns):
         # Announce generate after updating all the required fields,
         # Announce generate after updating all the required fields,
         # but before we update the non-required fields.
         # but before we update the non-required fields.
         self.announceGenerate()
         self.announceGenerate()
-
+        self.postGenerateMessage()
+        
         dclass.receiveUpdateOther(self, di)
         dclass.receiveUpdateOther(self, di)
 
 
     def sendUpdate(self, fieldName, args = [], sendToId = None):
     def sendUpdate(self, fieldName, args = [], sendToId = None):

+ 16 - 5
direct/src/distributed/DistributedObjectAI.py

@@ -186,8 +186,6 @@ class DistributedObjectAI(DistributedObjectBase, EnforcesCalldowns):
         Called after the object has been generated and all
         Called after the object has been generated and all
         of its required fields filled in. Overwrite when needed.
         of its required fields filled in. Overwrite when needed.
         """
         """
-        self.__generated = True
-        messenger.send(self.uniqueName("generate"), [self])
 
 
     def addInterest(self, zoneId, note="", event=None):
     def addInterest(self, zoneId, note="", event=None):
         self.air.addInterest(self.getDoId(), zoneId, note, event)
         self.air.addInterest(self.getDoId(), zoneId, note, event)
@@ -257,19 +255,27 @@ class DistributedObjectAI(DistributedObjectBase, EnforcesCalldowns):
         # Inheritors should override
         # Inheritors should override
         pass
         pass
 
 
+    def postGenerateMessage(self):
+        self.__generated = True
+        messenger.send(self.uniqueName("generate"), [self])        
+
     def updateRequiredFields(self, dclass, di):
     def updateRequiredFields(self, dclass, di):
         dclass.receiveUpdateBroadcastRequired(self, di)
         dclass.receiveUpdateBroadcastRequired(self, di)
         self.announceGenerate()
         self.announceGenerate()
-
+        self.postGenerateMessage()
+        
     def updateAllRequiredFields(self, dclass, di):
     def updateAllRequiredFields(self, dclass, di):
         dclass.receiveUpdateAllRequired(self, di)
         dclass.receiveUpdateAllRequired(self, di)
         self.announceGenerate()
         self.announceGenerate()
+        self.postGenerateMessage()
 
 
     def updateRequiredOtherFields(self, dclass, di):
     def updateRequiredOtherFields(self, dclass, di):
         dclass.receiveUpdateBroadcastRequired(self, di)
         dclass.receiveUpdateBroadcastRequired(self, di)
         # Announce generate after updating all the required fields,
         # Announce generate after updating all the required fields,
         # but before we update the non-required fields.
         # but before we update the non-required fields.
         self.announceGenerate()
         self.announceGenerate()
+        self.postGenerateMessage()
+        
         dclass.receiveUpdateOther(self, di)
         dclass.receiveUpdateOther(self, di)
 
 
     def updateAllRequiredOtherFields(self, dclass, di):
     def updateAllRequiredOtherFields(self, dclass, di):
@@ -277,6 +283,8 @@ class DistributedObjectAI(DistributedObjectBase, EnforcesCalldowns):
         # Announce generate after updating all the required fields,
         # Announce generate after updating all the required fields,
         # but before we update the non-required fields.
         # but before we update the non-required fields.
         self.announceGenerate()
         self.announceGenerate()
+        self.postGenerateMessage()
+        
         dclass.receiveUpdateOther(self, di)
         dclass.receiveUpdateOther(self, di)
 
 
     def sendSetZone(self, zoneId):
     def sendSetZone(self, zoneId):
@@ -375,7 +383,8 @@ class DistributedObjectAI(DistributedObjectBase, EnforcesCalldowns):
         self.air.generateWithRequired(self, parentId, zoneId, optionalFields)
         self.air.generateWithRequired(self, parentId, zoneId, optionalFields)
         self.generate()
         self.generate()
         self.announceGenerate()
         self.announceGenerate()
-
+        self.postGenerateMessage()
+        
     # this is a special generate used for estates, or anything else that
     # this is a special generate used for estates, or anything else that
     # needs to have a hard coded doId as assigned by the server
     # needs to have a hard coded doId as assigned by the server
     def generateWithRequiredAndId(self, doId, parentId, zoneId, optionalFields=[]):
     def generateWithRequiredAndId(self, doId, parentId, zoneId, optionalFields=[]):
@@ -389,7 +398,8 @@ class DistributedObjectAI(DistributedObjectBase, EnforcesCalldowns):
         self.air.generateWithRequiredAndId(self, doId, parentId, zoneId, optionalFields)
         self.air.generateWithRequiredAndId(self, doId, parentId, zoneId, optionalFields)
         self.generate()
         self.generate()
         self.announceGenerate()
         self.announceGenerate()
-
+        self.postGenerateMessage()
+        
     def generateOtpObject(self, parentId, zoneId, optionalFields=[], doId=None):
     def generateOtpObject(self, parentId, zoneId, optionalFields=[], doId=None):
         assert self.notify.debugStateCall(self)
         assert self.notify.debugStateCall(self)
         # have we already allocated a doId?
         # have we already allocated a doId?
@@ -409,6 +419,7 @@ class DistributedObjectAI(DistributedObjectBase, EnforcesCalldowns):
         self.sendGenerateWithRequired(self.air, parentId, zoneId, optionalFields)
         self.sendGenerateWithRequired(self.air, parentId, zoneId, optionalFields)
         self.generate()
         self.generate()
         self.announceGenerate()
         self.announceGenerate()
+        self.postGenerateMessage()
 
 
     @calldownEnforced
     @calldownEnforced
     def generate(self):
     def generate(self):

+ 10 - 4
direct/src/distributed/DistributedObjectOV.py

@@ -126,9 +126,6 @@ class DistributedObjectOV(DistributedObjectBase):
         generated and all of its required fields filled in.
         generated and all of its required fields filled in.
         """
         """
         assert self.notify.debug('announceGenerate(): %s' % (self.doId))
         assert self.notify.debug('announceGenerate(): %s' % (self.doId))
-        if self.activeState != ESGenerated:
-            self.activeState = ESGenerated
-            messenger.send(self.uniqueName("generate"), [self])
 
 
     def disable(self):
     def disable(self):
         """
         """
@@ -187,13 +184,21 @@ class DistributedObjectOV(DistributedObjectBase):
         """
         """
         return self.doId
         return self.doId
 
 
+    def postGenerateMessage(self):
+        if self.activeState != ESGenerated:
+            self.activeState = ESGenerated
+            messenger.send(self.uniqueName("generate"), [self])
+
+
     def updateRequiredFields(self, dclass, di):
     def updateRequiredFields(self, dclass, di):
         dclass.receiveUpdateBroadcastRequired(self, di)
         dclass.receiveUpdateBroadcastRequired(self, di)
         self.announceGenerate()
         self.announceGenerate()
+        self.postGenerateMessage()
 
 
     def updateAllRequiredFields(self, dclass, di):
     def updateAllRequiredFields(self, dclass, di):
         dclass.receiveUpdateAllRequired(self, di)
         dclass.receiveUpdateAllRequired(self, di)
         self.announceGenerate()
         self.announceGenerate()
+        self.postGenerateMessage()
 
 
     def updateRequiredOtherFields(self, dclass, di):
     def updateRequiredOtherFields(self, dclass, di):
         # First, update the required fields
         # First, update the required fields
@@ -202,7 +207,8 @@ class DistributedObjectOV(DistributedObjectBase):
         # Announce generate after updating all the required fields,
         # Announce generate after updating all the required fields,
         # but before we update the non-required fields.
         # but before we update the non-required fields.
         self.announceGenerate()
         self.announceGenerate()
-
+        self.postGenerateMessage()
+        
         dclass.receiveUpdateOther(self, di)
         dclass.receiveUpdateOther(self, di)
 
 
     def getCacheable(self):
     def getCacheable(self):

+ 10 - 1
direct/src/distributed/DistributedObjectUD.py

@@ -166,6 +166,8 @@ class DistributedObjectUD(DistributedObjectBase):
         of its required fields filled in. Overwrite when needed.
         of its required fields filled in. Overwrite when needed.
         """
         """
         self.__generated = True
         self.__generated = True
+
+    def postGenerateMessage(self):
         messenger.send(self.uniqueName("generate"), [self])
         messenger.send(self.uniqueName("generate"), [self])
 
 
     def addInterest(self, zoneId, note="", event=None):
     def addInterest(self, zoneId, note="", event=None):
@@ -195,16 +197,20 @@ class DistributedObjectUD(DistributedObjectBase):
     def updateRequiredFields(self, dclass, di):
     def updateRequiredFields(self, dclass, di):
         dclass.receiveUpdateBroadcastRequired(self, di)
         dclass.receiveUpdateBroadcastRequired(self, di)
         self.announceGenerate()
         self.announceGenerate()
+        self.postGenerateMessage()
 
 
     def updateAllRequiredFields(self, dclass, di):
     def updateAllRequiredFields(self, dclass, di):
         dclass.receiveUpdateAllRequired(self, di)
         dclass.receiveUpdateAllRequired(self, di)
         self.announceGenerate()
         self.announceGenerate()
+        self.postGenerateMessage()
 
 
     def updateRequiredOtherFields(self, dclass, di):
     def updateRequiredOtherFields(self, dclass, di):
         dclass.receiveUpdateBroadcastRequired(self, di)
         dclass.receiveUpdateBroadcastRequired(self, di)
         # Announce generate after updating all the required fields,
         # Announce generate after updating all the required fields,
         # but before we update the non-required fields.
         # but before we update the non-required fields.
         self.announceGenerate()
         self.announceGenerate()
+        self.postGenerateMessage()
+        
         dclass.receiveUpdateOther(self, di)
         dclass.receiveUpdateOther(self, di)
 
 
     def updateAllRequiredOtherFields(self, dclass, di):
     def updateAllRequiredOtherFields(self, dclass, di):
@@ -212,6 +218,8 @@ class DistributedObjectUD(DistributedObjectBase):
         # Announce generate after updating all the required fields,
         # Announce generate after updating all the required fields,
         # but before we update the non-required fields.
         # but before we update the non-required fields.
         self.announceGenerate()
         self.announceGenerate()
+        self.postGenerateMessage()
+        
         dclass.receiveUpdateOther(self, di)
         dclass.receiveUpdateOther(self, di)
 
 
     def sendSetZone(self, zoneId):
     def sendSetZone(self, zoneId):
@@ -300,7 +308,8 @@ class DistributedObjectUD(DistributedObjectBase):
         ## self.zoneId = zoneId
         ## self.zoneId = zoneId
         self.generate()
         self.generate()
         self.announceGenerate()
         self.announceGenerate()
-
+        self.postGenerateMessage()
+        
     def generateOtpObject(self, parentId, zoneId, optionalFields=[], doId=None):
     def generateOtpObject(self, parentId, zoneId, optionalFields=[], doId=None):
         assert self.notify.debugStateCall(self)
         assert self.notify.debugStateCall(self)
         # have we already allocated a doId?
         # have we already allocated a doId?