コード例 #1
0
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
コード例 #2
0
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
コード例 #3
0
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)
コード例 #4
0
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)