From 9b83e3112fb2f8d23235313fab132a45a040b9ac Mon Sep 17 00:00:00 2001 From: Dave Schuyler Date: Wed, 3 Aug 2005 22:48:42 +0000 Subject: [PATCH] askForObjectField --- direct/src/distributed/AsyncRequest.py | 61 +++++++++++++++++++++++++- 1 file changed, 60 insertions(+), 1 deletion(-) diff --git a/direct/src/distributed/AsyncRequest.py b/direct/src/distributed/AsyncRequest.py index 800c552dd7..640c1cf4ce 100755 --- a/direct/src/distributed/AsyncRequest.py +++ b/direct/src/distributed/AsyncRequest.py @@ -100,6 +100,28 @@ class AsyncRequest(DirectObject): return self.finish() + def askForObjectField( + self, dclassName, fieldName, doId, key=None, context=None): + """ + Request an already created object, i.e. read from database. + """ + assert self.notify.debugCall() + if key is None: + # default the dictionary key to the fieldName + key = fieldName + assert doId + ## object = self.air.doId2do.get(doId) + ## self.neededObjects[key]=object + if 0 and object is not None: + self._checkCompletion(key, None, object) + else: + if context is None: + context=self.air.allocateContext() + self.acceptOnce( + "doFieldResponse-%s"%(context,), + self._checkCompletion, [key]) + self.air.queryObjectField(dclassName, fieldName, doId, context) + def askForObject(self, doId, context=None): """ Request an already created object, i.e. read from database. @@ -113,11 +135,48 @@ class AsyncRequest(DirectObject): else: if context is None: context=self.air.allocateContext() - self.accept( + self.acceptOnce( "doRequestResponse-%s"%(context,), self._checkCompletion, [None]) self.air.queryObjectAll(doId, context) + ## def askForObjectAIReceive(self, doId, context=None): + ## """ + ## Request an already created object, i.e. read from database. + ## """ + ## assert self.notify.debugCall() + ## assert doId + ## object = self.air.doId2do.get(doId) + ## self.neededObjects[doId]=object + ## if object is not None: + ## self._checkCompletion(None, context, object) + ## else: + ## if context is None: + ## context=self.air.allocateContext() + ## self.accept( + ## "doRequestResponse-%s"%(context,), + ## self._checkCompletion, [None]) + ## self.air.queryObjectAIReceive(doId, context) + + #def addInterestInObject(self, doId, context=None): + # """ + # Request an already created object, i.e. read from database + # and claim a long term interest in the object (get updates, etc.). + # """ + # assert self.notify.debugCall() + # assert doId + # object = self.air.doId2do.get(doId) + # self.neededObjects[doId]=object + # if object is not None: + # self._checkCompletion(None, context, object) + # else: + # if context is None: + # context=self.air.allocateContext() + # self.accept( + # "doRequestResponse-%s"%(context,), + # self._checkCompletion, [None]) + # self.air.queryObject(doId, context) + def createObject(self, name, className, context=None, values=None): """ Create a new database object. You can get the doId from within