public override Task <HeartbeatO> Heartbeat(HeartbeatI request, ServerCallContext context) { HeartbeatO _out = new HeartbeatO(); var serviceinfo = _.InfoService(request.Data.Id) == null ? "" : _.InfoService(request.Data.Id).serviceID.ToString(); if (serviceinfo != request.Data.Id) //Linea de arriba comprueba si existe la ID de ese servicio. { //inserta el servicio si no existe Core.Models.MRegistryService newData = new Core.Models.MRegistryService(); newData.serviceID = Guid.Parse(request.Data.Id); newData.name = request.Data.Name; newData.packages = request.Data.Packages; newData.version = request.Data.Version; newData.ip = request.Data.Ip; newData.status = request.Data.Status; newData.port = request.Data.Port; newData.group = request.Data.Group; _out.Id = _.AddService(newData).ToString(); _out.Status = newData.status; //si el servicio es el balanceador de carga hacemos el latido y le enviamos un resume de todos los conectados actualmente. if (request.Data.Name == "HydraBalancer") { //Descargamos todos los servicios var datas = _.ResumeAll(); foreach (var data in datas) { _out.BingoResume.Add(new RegistryService { Name = data.name, Port = data.port, Ip = data.ip, Status = data.status, Id = data.serviceID.ToString() }); } } } if (serviceinfo == request.Data.Id) //si existe se encarga de hacer un latido de corazon para indicar que esta activo. { _.Heartbeat(request.Data.Id); //si el servicio es el balanceador de carga hacemos el latido y le enviamos un resume de todos los conectados actualmente. if (request.Data.Name == "HydraBalancer") { //Descargamos todos los servicios var datas = _.ResumeAll(); foreach (var data in datas) { _out.BingoResume.Add(new RegistryService { Name = data.name, Port = data.port, Ip = data.ip, Status = data.status, Id = data.serviceID.ToString() }); } } } return(Task.FromResult(_out)); }
public MainCore(string IP, string port, HeartbeatI config) { Channel channel = new Channel(IP + ":" + port, ChannelCredentials.Insecure); //Creamos un nuevo canal de cliente incresando direccion y puerto del servidor client = new Greeter.GreeterClient(channel); //Creamos un nuevo cliente, pasandole el servicio de proto (Greeter) y junto con el canal. ID = config.Data.Id; status = config.Data.Status; serviceConfig = config; Heartbeat(); var timer = new Timer(30000); timer.Elapsed += (sender, args) => Heartbeat(); timer.Start(); //channel.ShutdownAsync().Wait(); }
public MainCore() { #region Cliente Hydra Bingo HeartbeatI config = new HeartbeatI { Data = new RegistryService { Id = Guid.NewGuid().ToString(), Status = 0, Name = "HydraBalancer", Packages = "com.hydraframework.balancer", Port = 1004, Version = "1.0.0-0", Group = "Lobby" } }; _HydraBingo = new HydraBingoClient("localhost", "1002", config); #endregion }
static void Main(string[] args) { Console.WriteLine("HydraBingo Client Test"); HeartbeatI config = new HeartbeatI { Data = new RegistryService { Id = Guid.NewGuid().ToString(), Status = 0, Name = "HydraBingoClient", Packages = "com.hydraframework.bingo.client.test", Port = 1004, Version = "1.0", Group = "Lobby" } }; HydraBingoClient _HydraBingo = new HydraBingoClient("localhost", "1002", config); var hola = _HydraBingo.Search(new SearchI { Name = "HydraBingoClient" }); Console.ReadLine(); }