def rejectApprovedTrade(self, context, reasonId): if context != None: self.ignore(self.approvedTradeMsg(context)) for failureInfo in self.failureCallback: apply(failureInfo[0], failureInfo[1] + [self] + [reasonId]) AsyncRequest.finish(self)
def __init__(self, awardManagerDo, isDcRequest, dcId, toonIdsList, catalogItem, specialEventId, browserReplyTo, specialCommands, echoBack, timeout=4.0): """Construct ourself.""" replyToChannelId = awardManagerDo.air.getSenderReturnChannel AsyncRequest.__init__(self, awardManagerDo.air, replyToChannelId, timeout) self.awardManagerDo = awardManagerDo self._isDcRequest = isDcRequest self._dcId = dcId self.toonIds = toonIdsList self.item = catalogItem self.specialEventId = specialEventId self.retcode = None self.browserReplyTo = browserReplyTo self.catalogType = None self.specialCommands = specialCommands self.echoBack = echoBack for toonId in self.toonIds: self.neededObjects[toonId] = None for toonId in self.toonIds: self.askForObject(toonId)
def _sendTrade(self): context = self.air.allocateContext() try: self._normalizeTrade() except AITradeException: e = None self.notify.warning( 'trade rejected by _normalizeTrade or _checkRules %s' % (e, )) self.air.writeServerEvent( 'failedNormalizeTrade', self.inventoryId, '%s|%s|%s|%s' % (self.giving, self.taking, e, context)) self.rejectApprovedTrade(None, 1) return None if len(self.giving) or len(self.taking): self.neededObjects[self.responseKey] = None self.acceptOnce(self.rejectTradeMsg(context), Functor(self.rejectApprovedTrade, context), []) self.acceptOnce(self.approvedTradeMsg(context), Functor(self.approvedTradeResponse, context), []) origin = self.getOrigin() self.air.getInventoryMgr(self.avatarId).sendApprovedTrade( 0, self.inventoryId, self.giving, self.taking, context, origin, self.unequippables) else: AsyncRequest.finish(self)
def finish(self): if self.inventoryId is None: inventoryId = self.neededObjects.get('setInventoryId') if inventoryId is not None: self.inventoryId = inventoryId[0] elif not self.neededObjects.has_key('setInventoryId'): self.askForObjectField('DistributedPlayerPirateAI', 'setInventoryId', self.avatarId) return None for (key, category) in self.newDoId.items(): doId = self.neededObjects.get('newDoId_%s' % (key, )) if doId is not None: self.giveDoId(category, doId) del self.newDoId[key] continue if len(self.newDoId) or not (self.readyToSend): return None if not self.isTradeSent(): self._sendTrade() return None AsyncRequest.finish(self)
def finish(self): #print("PurchaseGiftRequest FINISH") sAv = self.neededObjects[self.senderId] rAv = self.neededObjects[self.receiverId] self.item = CatalogItem.getItem(self.itemBlob, store = CatalogItem.Customization) retcode = None #put neat stuff here #----------------------------------------------------------------------------- retcode = self.checkGift(retcode) retcode = self.checkCatalog(retcode) #retcode = self.checkMoney(retcode) retcode = self.checkGender(retcode) retcode = self.checkPurchaseLimit(retcode) retcode = self.checkMailbox(retcode) if (retcode != None): self.distObj.sendUpdateToChannel(self.replyToChannelId, "receiveRejectPurchaseGift", [self.senderId, self.context, retcode, self.cost]) else: now = (int)(time.time() / 60 + 0.5) deliveryTime = self.item.getDeliveryTime() / self.distObj.timeScale if deliveryTime < 2: deliveryTime = 2 self.item.deliveryDate = int(now + deliveryTime) #self.item.giftTag = self.senderId itemList = CatalogItemList.CatalogItemList([self.item]) itemBlob = itemList.getBlob(store = CatalogItem.Customization | CatalogItem.DeliveryDate) retcode = ToontownGlobals.P_ItemOnOrder self.distObj.addGiftFR(self.receiverId, itemBlob, self.senderId, self.context, retcode, self.replyToChannelId) #----------------------------------------------------------------------------- AsyncRequest.finish(self)
def finish(self): if self.inventoryId is None: inventoryId = self.neededObjects.get("setInventoryId") if inventoryId is not None: self.inventoryId = inventoryId[0] elif not self.neededObjects.has_key("setInventoryId"): self.askForObjectField("DistributedPlayerPirateAI", "setInventoryId", self.avatarId) return None for (key, category) in self.newDoId.items(): doId = self.neededObjects.get("newDoId_%s" % (key,)) if doId is not None: self.giveDoId(category, doId) del self.newDoId[key] continue if len(self.newDoId) or not (self.readyToSend): return None if not self.isTradeSent(): self._sendTrade() return None AsyncRequest.finish(self)
def __init__(self, distObj, replyToChannelId, avatarId, time, timeout=4.0): AsyncRequest.__init__(self, distObj.air, replyToChannelId, timeout) self.distObj = distObj self.avatarId = avatarId self.time = time self.askForObjectField("DistributedToonUD", "setGiftSchedule", avatarId)
def finish(self): #print "AddGiftRequestFR FINISH" """ gift = self.distObj.avatarIdToGifts.get(self.avatarId) if gift == None: gift=self.neededObjects.get("setGiftSchedule")[0] gift.append(self.newGift) self.distObj.writeGift(self.avatarId, gift, self.replyToChannelId) AsyncRequest.finish(self) """ giftBlob = self.distObj.avatarIdToGifts.getData(self.avatarId) if giftBlob == None: giftBlob = self.neededObjects.get("setGiftSchedule")[0] giftItem = CatalogItemList.CatalogItemList( self.newGift, store=CatalogItem.Customization | CatalogItem.DeliveryDate) giftList = CatalogItemList.CatalogItemList( giftBlob, store=CatalogItem.Customization | CatalogItem.DeliveryDate) if giftItem[0].giftCode != ToontownGlobals.GIFT_RAT: #print("Gift Item not RAT") giftList.append(giftItem[0]) giftBlob = giftList.getBlob(CatalogItem.Customization | CatalogItem.DeliveryDate) else: #print("Gift Item is RAT") giftBlob = AccumRATBeans(giftItem[0], giftBlob) self.distObj.writeGift(self.avatarId, giftBlob, self.replyToChannelId) giftList.append(giftItem[0]) giftBlob = giftList.getBlob(CatalogItem.Customization | CatalogItem.DeliveryDate) self.distObj.writeGift(self.avatarId, giftBlob, self.replyToChannelId) AsyncRequest.finish(self)
def finish(self): #print "AddGiftRequestFR FINISH" """ gift = self.distObj.avatarIdToGifts.get(self.avatarId) if gift == None: gift=self.neededObjects.get("setGiftSchedule")[0] gift.append(self.newGift) self.distObj.writeGift(self.avatarId, gift, self.replyToChannelId) AsyncRequest.finish(self) """ giftBlob = self.distObj.avatarIdToGifts.getData(self.avatarId) if giftBlob == None: giftBlob = self.neededObjects.get("setGiftSchedule")[0] giftItem = CatalogItemList.CatalogItemList( self.newGift, store=CatalogItem.Customization | CatalogItem.DeliveryDate) giftList = CatalogItemList.CatalogItemList( giftBlob, store=CatalogItem.Customization | CatalogItem.DeliveryDate) giftList.append(giftItem[0]) giftBlob = giftList.getBlob(CatalogItem.Customization | CatalogItem.DeliveryDate) self.distObj.writeGiftFR(self.avatarId, giftBlob, self.replyToChannelId, self.senderId, self.context, self.retcode) AsyncRequest.finish(self)
def finish(self): giftListBlob=self.neededObjects.get("setGiftSchedule")[0] giftList = CatalogItemList.CatalogItemList(giftListBlob, store = CatalogItem.Customization | CatalogItem.DeliveryDate) delivered, remaining = giftList.extractDeliveryItems(self.time) giftBlob = remaining.getBlob(CatalogItem.Customization | CatalogItem.DeliveryDate) self.distObj.writeGiftField(self.avatarId, giftBlob, self.replyToChannelId) AsyncRequest.finish(self)
def __init__(self, distObj, replyToChannelId,avatarId, newGift, timeout = 4.0): #print("AddGiftRequestFR INIT") AsyncRequest.__init__(self, distObj.air, replyToChannelId, timeout) self.distObj=distObj self.avatarId=avatarId self.newGift = newGift self.askForObjectField( "DistributedToonUD", "setGiftSchedule", avatarId)
def timeout(self, task): if self.numRetries == ASYNC_REQUEST_INFINITE_RETRIES: return Task.again elif self.numRetries > 0: self.numRetries -= 1 return Task.again else: self.sendRejectCode(RejectCode.TIMEOUT) AsyncRequest.timeout(self, task)
def finish(self): """Report back on all the toon database objects that we got.""" replyString = str(self.neededObjects) #self.browserReplyTo.respond(replyString) self.awardManagerDo.gotTheToons(self._isDcRequest, self._dcId, self.neededObjects, self.item, self.specialEventId, self.browserReplyTo, self.specialCommands, self.echoBack) AsyncRequest.finish(self)
def __init__(self,replyTo,toonID): """ replyTo is where we stick the response toonID is the doID of the toon whose picture we want """ assert self.notify.debugCall() self.__deleted=False AsyncRequest.__init__(self,uber.air) self.air = uber.air self.replyTo = replyTo self.toonID = toonID self.air.writeServerEvent("UberRPC-GetToonDNA",self.replyTo.getSourceAddress(),"%u" % self.toonID) self.askForObjectField("DistributedToonUD","setDNAString",self.toonID)
def __init__(self, resultQueue, clientIP, accountName): """ resultQueue is where we stick the response clientIP is the client's address for logging purposes accountName is the account whose avatar list we're fetching """ assert self.notify.debugCall() self.__deleted = False AsyncRequest.__init__(self, uber.air) self.air = uber.air self.resultQueue = resultQueue self.clientIP = clientIP self.accountName = accountName
def __init__(self,replyTo,idList): """ replyTo is where we stick the response idList is a list of IDs of the toons whose names we're fetching """ assert self.notify.debugCall() self.__deleted=False AsyncRequest.__init__(self,uber.air) self.air = uber.air self.replyTo = replyTo self.idList = idList for id in idList: self.askForObjectField("DistributedToonUD","setName",id,key=id)
def __init__(self, resultQueue, clientIP, toonID): """ resultQueue is where we stick the response clientIP is for logging purposes toonID is the ID of the toon whose name we're fetching """ assert self.notify.debugCall() self.__deleted = False AsyncRequest.__init__(self, uber.air) self.air = uber.air self.resultQueue = resultQueue self.clientIP = clientIP self.toonID = toonID
def __init__(self,replyTo,accountName): """ replyTo is where we stick the response accountName is the account whose avatar list we're fetching """ assert self.notify.debugCall() self.__deleted=False AsyncRequest.__init__(self,uber.air) self.air = uber.air self.replyTo = replyTo self.accountName = accountName self.askForObjectFieldsByString(4008,"AccountUD",self.accountName,("ACCOUNT_AV_SET",))
def __init__(self, distObj, replyToChannelId, receiverId, itemBlob, timeout = 4.0): #print("AddItem INIT") AsyncRequest.__init__(self, distObj.air, replyToChannelId, timeout) self.distObj=distObj #self.senderId=senderId self.receiverId=receiverId self.itemBlob=itemBlob self.item = None self.catalogType = None self.neededObjects[receiverId] = None #self.askForObject(senderId) self.askForObject(receiverId) self.cost = 0
def __init__(self, air, jobId, avatarId, writeToFile): assert self.notify.debugCall() self.__deleted = False AsyncRequest.__init__(self, air) self.avatarId = avatarId self.jobId = jobId self.writeToFile = writeToFile self.neededObjects[avatarId] = self.air.doId2do.get(avatarId) if self.neededObjects[avatarId] is not None: self.finish() else: self.askForObject(avatarId)
def __init__(self, distObj, avatarId=None, inventoryId=None, timeout=4.0): self.responseKey = 'tradeResponse' AsyncRequest.__init__(self, distObj.air, distObj.getDoId(), timeout) self.distObj = distObj self.avatarId = avatarId self.inventoryId = inventoryId self.failureCallback = [] self.successCallback = [] self.timeoutCallback = [] self.nextNewDoIdKey = 0 self.newDoId = {} self.readyToSend = False self.giving = [] self.taking = [] self.unequippables = []
def __init__(self, distObj, avatarId=None, inventoryId=None, timeout=4.0): self.responseKey = "tradeResponse" AsyncRequest.__init__(self, distObj.air, distObj.getDoId(), timeout) self.distObj = distObj self.avatarId = avatarId self.inventoryId = inventoryId self.failureCallback = [] self.successCallback = [] self.timeoutCallback = [] self.nextNewDoIdKey = 0 self.newDoId = {} self.readyToSend = False self.giving = [] self.taking = [] self.unequippables = []
def __init__(self, resultQueue, clientIP, toonID, beanAmount): """ resultQueue is where we stick the response clientIP is for logging purposes toonID is the toon receiving beans beanAmount is the number of beans to give """ assert self.notify.debugCall() self.__deleted = False AsyncRequest.__init__(self, uber.air) self.air = uber.air self.resultQueue = resultQueue self.clientIP = clientIP self.toonID = toonID self.beanAmount = beanAmount self.done = False
def __init__(self, distObj, air, replyToChannelId=None, timeoutTime=ASYNC_REQUEST_DEFAULT_TIMEOUT_IN_SECONDS, key=None): assert self.notify.debugCall() self.distObj = distObj self.key = key if key is not None: req = distObj.asyncRequests.get(key) if req: req.delete() distObj.asyncRequests[key] = self AsyncRequest.__init__(self, air, replyToChannelId, timeoutTime, ASYNC_REQUEST_INFINITE_RETRIES)
def __init__(self, distObj, replyToChannelId, senderId, receiverId, itemBlob, context, timeout = 4.0): #print("PurchaseGiftRequest INIT") AsyncRequest.__init__(self, distObj.air, replyToChannelId, timeout) self.distObj=distObj self.senderId=senderId self.receiverId=receiverId self.itemBlob=itemBlob self.context = context self.retcode = None self.item = None self.catalogType = None self.neededObjects[senderId] = None self.neededObjects[receiverId] = None self.askForObject(senderId) self.askForObject(receiverId) self.cost = 0
def finish(self): #print("AddItem FINISH") rAv = self.neededObjects[self.receiverId] self.item = CatalogItem.getItem(self.itemBlob, store = CatalogItem.Customization) now = (int)(time.time() / 60 + 0.5) deliveryTime = self.item.getDeliveryTime() / self.distObj.timeScale #if deliveryTime < 2: # deliveryTime = 2 deliveryTime = 2 self.item.deliveryDate = int(now + deliveryTime) itemList = CatalogItemList.CatalogItemList([self.item]) itemBlob = itemList.getBlob(store = CatalogItem.Customization | CatalogItem.DeliveryDate) retcode = ToontownGlobals.P_ItemOnOrder self.distObj.addGift(self.receiverId, itemBlob, self.replyToChannelId) #----------------------------------------------------------------------------- AsyncRequest.finish(self)
def __init__(self, distObj, replyToChannelId, avatarId, newGift, senderId, context, retcode, timeout=4.0): #print "AddGiftRequestFR INIT" AsyncRequest.__init__(self, distObj.air, replyToChannelId, timeout) self.distObj = distObj self.avatarId = avatarId self.newGift = newGift self.senderId = senderId self.context = context self.retcode = retcode self.askForObjectField("DistributedToonUD", "setGiftSchedule", avatarId)
def _sendTrade(self): context = self.air.allocateContext() try: self._normalizeTrade() except AITradeException: e = None self.notify.warning('trade rejected by _normalizeTrade or _checkRules %s' % (e,)) self.air.writeServerEvent('failedNormalizeTrade', self.inventoryId, '%s|%s|%s|%s' % (self.giving, self.taking, e, context)) self.rejectApprovedTrade(None, 1) return None if len(self.giving) or len(self.taking): self.neededObjects[self.responseKey] = None self.acceptOnce(self.rejectTradeMsg(context), Functor(self.rejectApprovedTrade, context), []) self.acceptOnce(self.approvedTradeMsg(context), Functor(self.approvedTradeResponse, context), []) origin = self.getOrigin() self.air.getInventoryMgr(self.avatarId).sendApprovedTrade(0, self.inventoryId, self.giving, self.taking, context, origin, self.unequippables) else: AsyncRequest.finish(self)
def _doCreateObject(self, *args, **kArgs): self.notify.warning( 'creating temporary copy of inventory object, second generate msg is on the way' ) AsyncRequest._doCreateObject(self, *args, **kArgs)
def timeout(self, task): for timeoutInfo in self.timeoutCallback: apply(timeoutInfo[0], timeoutInfo[1] + [self]) AsyncRequest.timeout(self, task)
'%s|%s|%s|%s' % (self.giving, self.taking, e, context)) self.rejectApprovedTrade(None, 1) return else: if len(self.giving) or len(self.taking): self.neededObjects[self.responseKey] = None self.acceptOnce(self.rejectTradeMsg(context), Functor(self.rejectApprovedTrade, context), []) self.acceptOnce(self.approvedTradeMsg(context), Functor(self.approvedTradeResponse, context), []) origin = self.getOrigin() self.air.getInventoryMgr(self.avatarId).sendApprovedTrade( 0, self.inventoryId, self.giving, self.taking, context, origin, self.unequippables) AsyncRequest.finish(self) return def rejectTradeMsg(self, context): return 'rejectApprovedTrade-%s' % (context, ) def approvedTradeMsg(self, context): return 'approvedTradeResponse-%s' % (context, ) def isGift(self, inventoryType): for gift in self.giving: if gift[0] == inventoryType: return 1 return 0
def _doCreateObject(self, *args, **kArgs): self.notify.warning("creating temporary copy of inventory object, second generate msg is on the way") AsyncRequest._doCreateObject(self, *args, **args)
def __init__(self, distObj, replyToChannelId, avatarId, timeout=4.0): AsyncRequest.__init__(self, distObj.air, replyToChannelId, timeout) self.distObj = distObj self.avatarId = avatarId self.askForObject(avatarId)
def finish(self): avatar = self.neededObjects[self.avatarId] #put neat stuff here AsyncRequest.finish(self)