def handle_diff(ip, initial=False): ownTree = flpconfig.DIRTREE peerTree = flpconfig.PEERGROUP[ip][0] diffdict = flputil.get_diff(ownTree, peerTree) addedDirs = diffdict['addedDirs'] addedDirsSorted = addedDirs.keys() addedDirsSorted.sort() addedFiles = diffdict['added'] modFiles = diffdict['modified'] remFiles = diffdict['removed'] flpconfig.LOGGER.info('diffdict: ' + str(diffdict)) # if initial: # addedFiles += flputil.calc_files_removed(remFiles,ip) # addedDirs += flputil.calc_dirs_removed(remFiles,ip) # remFiles = [] for adkey in addedDirsSorted: flputil.makeDir(addedDirs[adkey], ip) for adkey in addedFiles: flputil.makeReq(adkey, ip, setDirStamp=True) for adkey in modFiles: flputil.makeReq(adkey, ip) for adkey in remFiles: # falls das implementiert wird müssen destruktive Eingaben # abgefangen werden / * ~ # und bei 2 inits gleichzeitig darf nicht gelöscht werden, sondern # beide bekommen beide dateien (sonst geht ein Teil ganz verloren) pass
def handle_diff(ip,initial=False): ownTree = flpconfig.DIRTREE peerTree = flpconfig.PEERGROUP[ip][0] diffdict = flputil.get_diff(ownTree,peerTree) addedDirs = diffdict['addedDirs'] addedDirsSorted = addedDirs.keys() addedDirsSorted.sort() addedFiles = diffdict['added'] modFiles = diffdict['modified'] remFiles = diffdict['removed'] flpconfig.LOGGER.info('diffdict: ' + str(diffdict)) # if initial: # addedFiles += flputil.calc_files_removed(remFiles,ip) # addedDirs += flputil.calc_dirs_removed(remFiles,ip) # remFiles = [] for adkey in addedDirsSorted: flputil.makeDir(addedDirs[adkey],ip) for adkey in addedFiles: flputil.makeReq(adkey,ip,setDirStamp=True) for adkey in modFiles: flputil.makeReq(adkey,ip) for adkey in remFiles: # falls das implementiert wird müssen destruktive Eingaben # abgefangen werden / * ~ # und bei 2 inits gleichzeitig darf nicht gelöscht werden, sondern # beide bekommen beide dateien (sonst geht ein Teil ganz verloren) pass
def handle_udp_broadcast(data,ip): ''' handles incoming UDP broadcasts from other peers ''' flpconfig.LOGGER.info('incoming broadcast: ' + repr(data) + ' from ' + repr(ip)) prog, msg, group, their_time, their_hash = data.split(flpconfig.SEP) if prog == flpconfig.PROG and group == flpconfig.FLPGROUP: if their_hash != flpconfig.SUPERHASH: if msg == flpconfig.INFOMSG or msg == flpconfig.INITMSG: if ip not in flpconfig.PEERGROUP: flpconfig.LOGGER.info('unknown Peer:' + their_time + ' ' + their_hash) flpconfig.PEERGROUP[ip] = None else: #build a requestJob for the directory tree of peer, if there isnt one yet flpconfig.LOGGER.info('updated Peer:' + their_time + ' ' + their_hash) if msg == flpconfig.INITMSG: flpconfig.PEERGROUP[ip] = (None, their_hash) flputil.makeReq(flpconfig.TREEFILE + ip, ip,treeJob=True,initial=True) if flpconfig.PEERGROUP[ip] == None: flpconfig.PEERGROUP[ip] = (None, their_hash) flputil.makeReq(flpconfig.TREEFILE + ip,ip,treeJob=True) elif their_hash != flpconfig.PEERGROUP[ip][1]: flpconfig.PEERGROUP[ip] = (flpconfig.PEERGROUP[ip][0], their_hash) flputil.makeReq(flpconfig.TREEFILE + ip,ip,treeJob=True)
def handle_udp_broadcast(data, ip): ''' handles incoming UDP broadcasts from other peers ''' flpconfig.LOGGER.info('incoming broadcast: ' + repr(data) + ' from ' + repr(ip)) prog, msg, group, their_time, their_hash = data.split(flpconfig.SEP) if prog == flpconfig.PROG and group == flpconfig.FLPGROUP: if their_hash != flpconfig.SUPERHASH: if msg == flpconfig.INFOMSG or msg == flpconfig.INITMSG: if ip not in flpconfig.PEERGROUP: flpconfig.LOGGER.info('unknown Peer:' + their_time + ' ' + their_hash) flpconfig.PEERGROUP[ip] = None else: #build a requestJob for the directory tree of peer, if there isnt one yet flpconfig.LOGGER.info('updated Peer:' + their_time + ' ' + their_hash) if msg == flpconfig.INITMSG: flpconfig.PEERGROUP[ip] = (None, their_hash) flputil.makeReq(flpconfig.TREEFILE + ip, ip, treeJob=True, initial=True) if flpconfig.PEERGROUP[ip] == None: flpconfig.PEERGROUP[ip] = (None, their_hash) flputil.makeReq(flpconfig.TREEFILE + ip, ip, treeJob=True) elif their_hash != flpconfig.PEERGROUP[ip][1]: flpconfig.PEERGROUP[ip] = (flpconfig.PEERGROUP[ip][0], their_hash) flputil.makeReq(flpconfig.TREEFILE + ip, ip, treeJob=True)