protected function tratarSolicitacaoDeConexao($cabecalho, $socket) { if ($cabecalho != null && $socket != null) { $this->printar("Handshake Recebido:\n{$cabecalho}", true, true); preg_match('/(?<=GET \\/)[^\\s]*/', $cabecalho, $aux); $parametros = split(';', $aux[0]); $tipoCliente = $parametros[0]; if ($this->validarTipoCliente($tipoCliente)) { $cadastro = null; switch ($tipoCliente) { case TipoCliente::USUARIO: $login = $parametros[1]; $senha = $parametros[2]; if ($login != '' && $senha != '') { $criteria = array(); $criteria[UsuarioCriteria::LOGIN_EQ] = $login; $criteria[UsuarioCriteria::SENHA_EQ] = $senha; $cadastro = ServiceLocator::getUsuarioService()->readByCriteria($criteria)[0]; } break; case TipoCliente::RASTREADOR: $serial = $parametros[1]; if ($serial != '') { $criteria = array(); $criteria[RastreadorCriteria::SERIAL_EQ] = $serial; $cadastro = ServiceLocator::getRastreadorService()->readByCriteria($criteria)[0]; } break; } if ($cadastro != null) { $clienteWS = $this->clienteWSController->buscarClientePorCadastro($cadastro); if ($clienteWS == null) { $this->executarHandshaking($cabecalho, $socket); $clienteWS = new ClienteWSRastreador(); $clienteWS->setTipoCliente($tipoCliente); $clienteWS->setId($cadastro->getId()); $clienteWS->setSocket($socket); $clienteWS->setCadastro($cadastro); $this->clienteWSController->adicionarCliente($clienteWS); $this->printar($clienteWS->getCadastro()->getNome() . " se conectou.\n", false, false); } else { $this->printar($clienteWS->getCadastro()->getNome() . " ja esta conectado.\n", false, false); } } else { $this->printar("Usuario/Rastreador nao existe na base de dados.\n", false, false); } } else { $this->printar("Tipo de cliente invalido.\n", false, false); } } }