示例#1
0
        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));
        }
示例#2
0
 private void Heartbeat()
 {
     try
     {
         var res = client.Heartbeat(serviceConfig);
         status         = res.Status;
         BalancerResume = res;
         Console.WriteLine("> [HydraBingo] Heartbeat successful");
     }
     catch (Exception e) {
         Console.WriteLine("> [HydraBingo] Heartbeat error");
     }
 }