iro/controller/task.py
branchdevel
changeset 142 7d0c1fa97123
parent 141 90c95fdd1e33
child 143 0b265608b6ce
equal deleted inserted replaced
141:90c95fdd1e33 142:7d0c1fa97123
     1 from functools import partial
     1 from functools import partial
     2 
       
     3 from twisted.internet import defer
     2 from twisted.internet import defer
       
     3 from twisted.internet.defer import inlineCallbacks, returnValue 
     4 
     4 
     5 from ..error import NoRoute, RejectRecipient
     5 from ..error import NoRoute, RejectRecipient
     6 
     6 
     7 from ..model.offer import getPossibleOffers
     7 from ..model.offer import offers
     8 from ..model.job import exJobs
     8 from ..model.job import exJobs
     9 
     9 
    10 from .pool  import taskPool
    10 from .pool  import taskPool
    11 
    11 
    12 class Task:
    12 class Task:
    21         self.d = taskPool.run(self._run)
    21         self.d = taskPool.run(self._run)
    22         self.d.addCallback(partial(self.job.setStatus,self))
    22         self.d.addCallback(partial(self.job.setStatus,self))
    23         self.d.addErrback(partial(self.job.setError,self))
    23         self.d.addErrback(partial(self.job.setError,self))
    24         return self.d
    24         return self.d
    25 
    25 
       
    26     @inlineCallbacks
    26     def _run(self):
    27     def _run(self):
    27         for offer in getPossibleOffers(self.recipient,self.job.offers):
    28         for offer in self.job.offers:
    28             try:
    29             try:
    29                 return offer.send(self.recipient,self.job.message)
    30                 ret = yield (offers[offer].send(self.recipient,self.job.message))
       
    31                 returnValue(ret)
    30             except RejectRecipient:
    32             except RejectRecipient:
    31                 continue
    33                 continue
    32         else:
    34         else:
    33             raise NoRoute()
    35             raise NoRoute()
    34 
    36