def _clock():        
  '''
  O relogio pulsou, verifica os timeouts de solicitacoes de conexao enfileiradas
  '''
  for i in range(_NUMERO_MAX_CONEXOES):
    con = _pool_conexoes.obterConexao(i)
    
    if(con.timerEstaLigado()):
      con.setTimer(con.obterTimer() - 1)
      if(con.obterTimer() == 0):
        con.setEstado(EstadosConexao.PARADO)
        _log.logar('Solicitacao de conexao expirou: ' + str(con))
        camada_rede.enviar_requisicao_clear(con.obterId(), con.obterEnderecoLocal(), con.obterEnderecoRemoto())
          
    _pool_conexoes.liberarConexao(con)
def disconnect(con_id):
  '''
  Encerra a conexao
  '''
  con = _pool_conexoes.obterConexao(con_id)
  
  if(con.obterReqLiberarRecebida()):
    _log.logar('Usuario remoto ja desconectou')
    con.setEstado(EstadosConexao.PARADO)
    _log.logar('Conexao desconectada: ' + str(con))
    camada_rede.enviar_confirmacao_clear(con_id, con.obterEnderecoLocal(), con.obterEnderecoRemoto())
    _pool_conexoes.liberarConexao(con)
    return ErrosTransporte.OK

  con.setEstado(EstadosConexao.DESCONECTANDO)
  _log.logar('Desconectando conexao: ' + str(con))
  camada_rede.enviar_requisicao_clear(con_id, con.obterEnderecoLocal(), con.obterEnderecoRemoto())
  _pool_conexoes.liberarConexao(con)
  return ErrosTransporte.OK