class ServicoServidorMensageiro(ServicoConversaServidor): listaClientesAtualizada = pyqtSignal(list) dadosUsuarioAtualizado = pyqtSignal(Usuario) def __init__(self, portaReceber=45456, portaResponder=45455, parent=None): super().__init__(portaReceber=portaReceber, portaResponder=portaResponder, parent=parent) self._servicoConexao = ServicoConexaoServidor(self) self._servicoConexao.listaIPsClientesAtualizada.connect(self._pedirDadosUsuarios) self._dadosUsuarios = {} def _receberInformacaoTipoValor(self, de, tipo, valor): if tipo == _ServicoMensageiro.DADOS_USUARIO: usuario = valor.copy() usuario.setIP(de) self._dadosUsuarios[de] = usuario self._enviarDadosUsuario(usuario) self.dadosUsuarioAtualizado.emit(usuario) self.listaClientesAtualizada.emit(self.getDadosUsuarios()) elif tipo == _ServicoMensageiro.PEDIR_DADOS: for usuario in self.getDadosUsuarios(): self.enviarInformacaoTipoValor(_ServicoMensageiro.USUARIO_ALTERADO, usuario, de) super()._receberInformacaoTipoValor(de, tipo, valor) def _enviarDadosUsuario(self, usuario): self._enviarInformacaoParaClientes(_ServicoMensageiro.USUARIO_ALTERADO, usuario) def _pedirDadosUsuarios(self): self._enviarInformacaoParaClientes(_ServicoMensageiro.PEDIR_DADOS, None) def _enviarInformacaoParaClientes(self, tipo, valor): for ip in self._servicoConexao.listaIPsClientes(): self.enviarInformacaoTipoValor(tipo, valor, ip) def _atualizarListaIPsClientes(self): self._servicoConexao.atualizarListaIPsClientes() def getDadosUsuarios(self): return list(self._dadosUsuarios.values()) def atualizarListaClientes(self): self._atualizarListaIPsClientes() self._pedirDadosUsuarios()
def __init__(self, portaReceber=45456, portaResponder=45455, parent=None): super().__init__(portaReceber=portaReceber, portaResponder=portaResponder, parent=parent) self._servicoConexao = ServicoConexaoServidor(self) self._servicoConexao.listaIPsClientesAtualizada.connect(self._pedirDadosUsuarios) self._dadosUsuarios = {}