def instantSave(self):
     ''' liest jobFile aus, speichert diese, gibt "finished"-message zurück und löscht den Job aus Jobliste'''
     f = open(self.jobFile, 'wb')
     f.close()
     
     #kann nicht tree sein (size(tree) nie 0)
     peetree = flpconfig.PEERGROUP[self.peer[0]][0]
     flputil.setTreeMTime(peetree, self.jobFile, self.setDirStamp)
     
     self.socket.send(flpconfig.SEP.join([flpconfig.PROG,flpconfig.FINMSG]))
     self.finished = True
     RequestJob.filejobs.remove(self.jobFile)
    def instantSave(self):
        ''' liest jobFile aus, speichert diese, gibt "finished"-message zurück und löscht den Job aus Jobliste'''
        f = open(self.jobFile, 'wb')
        f.close()

        #kann nicht tree sein (size(tree) nie 0)
        peetree = flpconfig.PEERGROUP[self.peer[0]][0]
        flputil.setTreeMTime(peetree, self.jobFile, self.setDirStamp)

        self.socket.send(flpconfig.SEP.join([flpconfig.PROG,
                                             flpconfig.FINMSG]))
        self.finished = True
        RequestJob.filejobs.remove(self.jobFile)
    def _trySave(self):
        ''' versucht daten auf das dateisystem zu schreiben '''
        if self.timesTried < RequestJob.maxTries:

            if self.received == self.length:

                self.tempFile.seek(0)
                f = open(self.jobFile, 'wb')

                while True:
                    data = self.tempFile.read(flpconfig.SIZE)
                    if not data:
                        break
                    f.write(data)

                f.close()
                self.tempFile.close()

                #set own timestamp
                if not self.isTree:
                    peetree = flpconfig.PEERGROUP[self.peer[0]][0]
                    flputil.setTreeMTime(peetree, self.jobFile,
                                         self.setDirStamp)

                self.socket.send(
                    flpconfig.SEP.join([flpconfig.PROG, flpconfig.FINMSG]))
                self.finished = True
                flpconfig.LOGGER.info("completed file request for " +
                                      self.jobFile + " to " + str(self.peer))

            else:

                self.socket.send(flpconfig.FINMSG)
                self.timesTried += 1
                self.state = Job.INIT
                self.do()
                flpconfig.LOGGER.info(
                    'Dateiübertragung fehlgeschlagen, neuer Request')

        else:
            # TODO: nach Fehlschlag aufräumen?
            flpconfig.LOGGER.info('Dateiübertragung endgültig fehlgeschlagen')
            self.failed = True

        RequestJob.filejobs.remove(self.jobFile)
    def _trySave(self):
        ''' versucht daten auf das dateisystem zu schreiben '''
        if self.timesTried < RequestJob.maxTries:
                
            if self.received == self.length:
                
                self.tempFile.seek(0)
                f = open(self.jobFile, 'wb')
                
                while True:
                    data =  self.tempFile.read(flpconfig.SIZE)
                    if not data:
                        break
                    f.write(data)
                
                f.close()
                self.tempFile.close()
                
                #set own timestamp
                if not self.isTree:
                    peetree = flpconfig.PEERGROUP[self.peer[0]][0]
                    flputil.setTreeMTime(peetree, self.jobFile, self.setDirStamp)     
                
                self.socket.send(flpconfig.SEP.join([flpconfig.PROG,flpconfig.FINMSG]))
                self.finished = True
                flpconfig.LOGGER.info("completed file request for " + self.jobFile + " to " + str(self.peer))                   
            
            else:
            
                self.socket.send(flpconfig.FINMSG)
                self.timesTried += 1
                self.state = Job.INIT
                self.do()
                flpconfig.LOGGER.info('Dateiübertragung fehlgeschlagen, neuer Request')

        else:
            # TODO: nach Fehlschlag aufräumen?
            flpconfig.LOGGER.info('Dateiübertragung endgültig fehlgeschlagen')
            self.failed = True

        RequestJob.filejobs.remove(self.jobFile)