def killSaveAllInformation(self,bit=0) : ''' Kills all information of process & saves it's information ''' for key in self.pid_dict : obj = self.pid_dict[key] if not(obj == None) : obj.mutex.acquire(True) while obj.LOCK.value == 1: # Wait till process is in a state (concurrent) to be killed pass if not(obj.LOCK.value == 3) : obj.LOCK.value=0 if not(obj.P==None): if obj.P.is_alive(): #Kill if process is alive obj.P.terminate() obj.mutex.release() if bit == 1: ''' Operates if all download has been commited ''' if not(self.info==None) : for key in self.pid_dict : obj = self.pid_dict[key] if not(obj==None) : self.info.partition[key]=[obj.LL,obj.UL,obj.length.value] self.wMutex.acquire(True) dLoadInfo().WriteInformation(self.info) self.wMutex.release() self.clear() while not(self.monitor.empty()) : ''' Empties PIPE & forces them to fill the output queue ''' data=self.monitor.get() data=data.split(':') if len(data) == 4 : if data[1]=='Done' : self.Commited=self.Commited+1 # Commits all process
def killSaveAllInformation(self, bit=0): ''' Kills all information of process & saves it's information ''' for key in self.pid_dict: obj = self.pid_dict[key] if not (obj == None): obj.mutex.acquire(True) while obj.LOCK.value == 1: # Wait till process is in a state (concurrent) to be killed pass if not (obj.LOCK.value == 3): obj.LOCK.value = 0 if not (obj.P == None): if obj.P.is_alive(): #Kill if process is alive obj.P.terminate() obj.mutex.release() if bit == 1: ''' Operates if all download has been commited ''' if not (self.info == None): for key in self.pid_dict: obj = self.pid_dict[key] if not (obj == None): self.info.partition[key] = [ obj.LL, obj.UL, obj.length.value ] self.wMutex.acquire(True) dLoadInfo().WriteInformation(self.info) self.wMutex.release() self.clear() while not (self.monitor.empty()): ''' Empties PIPE & forces them to fill the output queue ''' data = self.monitor.get() data = data.split(':') if len(data) == 4: if data[1] == 'Done': self.Commited = self.Commited + 1 # Commits all process
def __init__(self, wMutex, parent=None): QtGui.QTabWidget.__init__(self, parent) self.parent = parent self.wMutex = wMutex self.dLI = dLoadInfo() self.setColumnCount(8) self.setColumnWidth(0, 100) self.setColumnWidth(1, 60) self.setColumnWidth(2, 60) self.setColumnWidth(3, 90) self.setColumnWidth(4, 100) self.setColumnWidth(5, 100) self.setColumnWidth(6, 30) self.setColumnWidth(7, 44) self.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) hitem = QtGui.QTableWidgetItem() hitem.setText("File Name") self.setHorizontalHeaderItem(0, hitem) hitem = QtGui.QTableWidgetItem() hitem.setText("Length") self.setHorizontalHeaderItem(1, hitem) hitem = QtGui.QTableWidgetItem() hitem.setText("Loaded") self.setHorizontalHeaderItem(2, hitem) hitem = QtGui.QTableWidgetItem() hitem.setText("Time Left") self.setHorizontalHeaderItem(3, hitem) hitem = QtGui.QTableWidgetItem() hitem.setText("Access Date") self.setHorizontalHeaderItem(4, hitem) hitem = QtGui.QTableWidgetItem() hitem.setText("Access Time") self.setHorizontalHeaderItem(5, hitem) hitem = QtGui.QTableWidgetItem() hitem.setText("X") self.setHorizontalHeaderItem(6, hitem) hitem = QtGui.QTableWidgetItem() hitem.setText("Y") self.setHorizontalHeaderItem(7, hitem) self.LoadInfo() self.connect(self, QtCore.SIGNAL("cellClicked(int,int)"), self.slotSectionClicked)
def __init__(self,wMutex,parent=None) : QtGui.QTabWidget.__init__(self,parent) self.parent = parent self.wMutex=wMutex self.dLI = dLoadInfo() self.setColumnCount(8) self.setColumnWidth(0,100) self.setColumnWidth(1,60) self.setColumnWidth(2,60) self.setColumnWidth(3,90) self.setColumnWidth(4,100) self.setColumnWidth(5,100) self.setColumnWidth(6,30) self.setColumnWidth(7,44) self.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) hitem = QtGui.QTableWidgetItem() hitem.setText('File Name') self.setHorizontalHeaderItem(0,hitem) hitem = QtGui.QTableWidgetItem() hitem.setText('Length') self.setHorizontalHeaderItem(1,hitem) hitem = QtGui.QTableWidgetItem() hitem.setText('Loaded') self.setHorizontalHeaderItem(2,hitem) hitem = QtGui.QTableWidgetItem() hitem.setText('Time Left') self.setHorizontalHeaderItem(3,hitem) hitem = QtGui.QTableWidgetItem() hitem.setText('Access Date') self.setHorizontalHeaderItem(4,hitem) hitem = QtGui.QTableWidgetItem() hitem.setText('Access Time') self.setHorizontalHeaderItem(5,hitem) hitem = QtGui.QTableWidgetItem() hitem.setText('X') self.setHorizontalHeaderItem(6,hitem) hitem = QtGui.QTableWidgetItem() hitem.setText('Y') self.setHorizontalHeaderItem(7,hitem) self.LoadInfo() self.connect(self,QtCore.SIGNAL('cellClicked(int,int)'),self.slotSectionClicked)
def getPartDownload(self, obj, packet, wMutex, bit): ''' When a download to be resumes it's partial information is fetched & download is resumed ''' self.wMutex = wMutex self.packet = packet self.urlLabel.setText(str(obj.url)[0:80]) self.recv = Queue() self.setWindowTitle(str(obj.url)) self.outFile = obj.fileName self.dLength = int(obj.length) info = Info() info.url = obj.url info.fileName = obj.fileName info.date = obj.date info.time = obj.time info.length = obj.length obj = dLoadInfo().getSpecificInformation(obj) if obj == None: raise urllib2.URLError info.partition = obj.partition for i in range(len(info.partition)): self.dFile[obj.partition[i][0]] = None if obj == None: return 0 else: if bit == 1: fName, length, cmtd = self.downloader.YTubePartition( info, self.recv, self.PARTS, wMutex, self.dFlag, bit) self.PARTS = self.PARTS - cmtd if fName == None: self.dLength = int(obj.length) - length self.timer.start(1000) return 1 else: self.packet.fileName = fName self.packet.length = length self.dLength = length self.fileName = fName self.outFile = fName self.dLength = length self.timer.start(1000) return 2 self.timer.start(1000) return 1
def getPartDownload(self,obj,packet,wMutex,bit) : ''' When a download to be resumes it's partial information is fetched & download is resumed ''' self.wMutex=wMutex self.packet=packet self.urlLabel.setText(str(obj.url)[0:80]) self.recv = Queue() self.setWindowTitle(str(obj.url)) self.outFile=obj.fileName self.dLength=int(obj.length) info = Info() info.url=obj.url info.fileName=obj.fileName info.date=obj.date info.time=obj.time info.length=obj.length obj=dLoadInfo().getSpecificInformation(obj) if obj==None : raise urllib2.URLError info.partition=obj.partition for i in range(len(info.partition)) : self.dFile[obj.partition[i][0]]=None if obj == None : return 0 else : if bit==1 : fName,length,cmtd=self.downloader.YTubePartition(info,self.recv,self.PARTS,wMutex,self.dFlag,bit) self.PARTS=self.PARTS-cmtd if fName==None : self.dLength=int(obj.length)-length self.timer.start(1000) return 1 else : self.packet.fileName=fName self.packet.length=length self.dLength=length self.fileName=fName self.outFile = fName self.dLength=length self.timer.start(1000) return 2 self.timer.start(1000) return 1