示例#1
0
 def executar_acao(self):
     while True:
         time.sleep(1)
         k = list(map(str, self.recebi.keys()))
         for i, k in self.recebi.items():
             print("Key:", i)
             for j in k:
                 print(j)
         for key in k:
             if key != None:
                 mydir = self.dir + "//" + key
                 consumo = self.consome_recebi(key)
                 acao = consumo[0]
                 print(key, consumo)
                 if acao == "Conectado":
                     print("Conectou")
                     self.dir_usuarios.append(key)
                 elif acao == "Created":
                     pathis = consumo[1]
                     if pathis == "dir":
                         print("Criou dir")
                         util.criar_diretorio(mydir)
                 elif acao == "Renamed from something":
                     print("Renomeou dir ou file")
                     dir2 = self.dir + "//" + consumo[1]
                     util.renomear_arquivo_ou_diretorio(mydir, dir2)
                 else:
                     self.add_recebi(key, consumo)
示例#2
0
 def resolver_mudanca(self, alteracao):
     if len(alteracao) != 2:  # Não é renomear
         acao, diretorio = alteracao.split(" -- ")
         if os.path.isfile(diretorio):
             pass
         else:
             dir = util.mudar_caminho(diretorio, self.dir_backup,
                                      self.dir_superv)
             if acao == "Created":
                 print("Criar diretorio %s ..." % dir)
                 util.criar_diretorio(dir)
                 self.alteracoes.remove(alteracao)
             elif acao == "Deleted":
                 print("Deletar diretorio %s ..." % dir)
                 util.deletar_diretorio(dir)
                 self.alteracoes.remove(alteracao)
     else:
         dir1, dir2 = alteracao[0].split(" -- ")[1], alteracao[1].split(
             " -- ")[1]
         dir1 = util.mudar_caminho(dir1, self.dir_backup, self.dir_superv)
         dir2 = util.mudar_caminho(dir2, self.dir_backup, self.dir_superv)
         print("Renomar diretorio ou arquivo\nDe: %s" % dir1)
         print("Para: %s" % dir2)
         util.renomear_arquivo_ou_diretorio(dir1, dir2)
示例#3
0
    def executar_acao(self):
        '''
            Executa as alteracoes armazenadas.

            Existe uma região critica concorrente com receber_servico.

            Se não existe alteracoes ele dorme.

            Executado por uma Thread.
        '''
        while True:
            # Região critica
            self.semaforo_recebi.acquire()
            dirs = list(map(str, self.recebi.keys()))
            self.semaforo_recebi.release()

            for dir in dirs:
                consumo = self.consome_recebi(dir)  # Função critica

                dir_me = self.dir + dir
                acao = consumo[0]
                isfile = consumo[1]
                if acao == "Conectado":
                    print("Usuario conectado possui o diretorio:", dir)
                    self.dir_usuarios.append(dir)
                elif acao == "Created":
                    if isfile == "dir":
                        print("Diretorio criado:", dir)
                        util.criar_diretorio(dir_me)
                    elif isfile == "file":
                        print("Arquivo criado:", dir)
                        dados = consumo[2]
                        util.criar_arquivo(dir_me, dados)
                elif acao == "Deleted":
                    if os.path.isfile(dir_me):
                        print("Arquivo deletado:", dir)
                        util.deletar_arquivo(dir_me)
                    if os.path.isdir(dir_me):
                        print("Diretorio deletado:", dir)
                        util.deletar_diretorio(dir_me)
                elif acao == "Renamed from something":
                    dir2 = isfile
                    if os.path.isfile(dir_me):
                        print("Arquivo renomeado")
                    if os.path.isdir(dir_me):
                        print("Diretorio renomeado")
                    print("De:", dir)
                    print("Para:", dir2)
                    if os.path.isdir(dir_me) or os.path.isfile:
                        print(
                            "Esse arquivo ou diretório existe e posso altera-lo"
                        )
                        util.renomear_arquivo_ou_diretorio(
                            dir_me, self.dir + dir2)
                elif acao == "Updated":
                    if os.path.isfile(dir_me):
                        print("Arquivo alterado:", dir)
                        dados = consumo[2]
                        if os.path.isfile(dir_me):
                            print("Esse arquivo existe e posso atualiza-lo")
                            util.criar_arquivo(dir_me, dados)
                else:  # Se eu não consegui fazer nada, coloca de volta na estrutura
                    print("Não existe um procedimento para essa ação ainda.")
                    print("Acao retornada para a estrutura.")
                    print(consumo)
                    # self.add_recebi(dir, consumo)  # Função critica
            else:
                time.sleep(1)