public void AtualizarServidor() { try { mt.WaitOne(); int diff = Convert.ToInt32(DateTime.Now.Subtract(ultimaAtualizacao).TotalSeconds); if (diff < maximoTempo) { mt.ReleaseMutex(); return; } var file = File.ReadAllText("./Config/Info.json"); var conf = JObject.Parse(file); var hostNome = conf["nomes"]["host"].ToString(); var portNome = conf["nomes"]["porta"].ToString(); var hostUser = conf["pedidos"]["host"].ToString(); var portaUser = Int32.Parse(conf["pedidos"]["porta"].ToString()); Channel channel = new Channel(hostNome + ":" + portNome, ChannelCredentials.Insecure); var client = new Nomes.NomesClient(channel); RegistroServico registro = new RegistroServico(); registro.Host = hostUser; registro.Porta = portaUser; registro.Servico = "Pedido"; registro.Estado = new Estado(); registro.Estado.Cpu = Diagnostico.ObterUsoCpu(); registro.Estado.Memoria = Diagnostico.ObterUsoMemoria(); var resp = client.AtualizarEstado(registro); if (resp.Error != 0) { throw new Exception(resp.Message); } } catch (Exception e) { mt.ReleaseMutex(); throw new Exception("Falha ao atualizar dados do servidor!\n" + e.Message); } ultimaAtualizacao = DateTime.Now; mt.ReleaseMutex(); }
private static void Main(string[] args) { var file = File.ReadAllText("./Config/Info.json"); try{ var conf = JObject.Parse(file); var hostProduto = conf["produtos"]["host"].ToString(); var portaProduto = Int32.Parse(conf["produtos"]["porta"].ToString()); Server server = new Server { Services = { Produtos.BindService(new Servidor()) }, Ports = { new ServerPort(hostProduto, portaProduto, ServerCredentials.Insecure) } }; server.Start(); Console.Write("Servidor de produtos Ativo!"); Console.WriteLine("Conectando com o servidor de nomes para registrar servico!"); var hostNome = conf["nomes"]["host"].ToString(); var portNome = conf["nomes"]["porta"].ToString(); Channel channel = new Channel(hostNome + ":" + portNome, ChannelCredentials.Insecure); var client = new Nomes.NomesClient(channel); RegistroServico registro = new RegistroServico(); registro.Host = hostProduto; registro.Porta = portaProduto; registro.Servico = "Produto"; registro.Estado = new Estado(); registro.Estado.Cpu = Diagnostico.ObterUsoCpu(); registro.Estado.Memoria = Diagnostico.ObterUsoMemoria(); var resp = client.Cadastrar(registro); if (resp.Error != 0) { throw new Exception("Erro ao cadastrar servico!\n" + resp.Message); } Console.WriteLine("Levantando listener udp para aguardar conexoes de confirmacao de ativo"); Socket receiver = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); UdpClient listener = new UdpClient(portaProduto); IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, Convert.ToInt32(portaProduto)); while (true) { Console.WriteLine("Tentando receber algo"); byte[] x = listener.Receive(ref groupEP); Console.WriteLine("Recebi conexao!"); string mess = Encoding.ASCII.GetString(x); IPAddress broadcast = IPAddress.Parse(hostNome); byte[] sendbuf = Encoding.ASCII.GetBytes("Servidor Ativo"); IPEndPoint ep = new IPEndPoint(broadcast, Convert.ToInt32(portNome)); receiver.SendTo(sendbuf, ep); } }catch (Exception e) { Console.WriteLine("Erro ocorrido ao iniciar servidor de produtos!\n" + e.Message); } }
public RegistrosController(RegistroServico registroServico, DepartmentService departmentService, TipoServico tipoServico) { _registroServico = registroServico; _tipoServico = tipoServico; _departmentService = departmentService; }