Ejemplo n.º 1
0
 public NodeInfo AddOrUpdate(ApiNodeManagerModel.NodeInfo info)
 {
     lock (locker)
     {
         if (Nodes.Any(i => i.id == info.id))
         {
             var _node = Nodes.Where(i => i.id == info.id).First();
             if (_node.actionTask.Count == 0)
             {
                 _node.state = info.state;
             }
             _node.ip         = info.ip;
             _node.location   = info.location;
             _node.name       = info.name;
             _node.port       = info.port;
             _node.lastHBDate = DateTime.Now;
             return(_node);
         }
         else
         {
             var _node = new NodeInfo();
             _node.ip         = info.ip;
             _node.location   = info.location;
             _node.name       = info.name;
             _node.port       = info.port;
             _node.state      = info.state;
             _node.id         = info.id;
             _node.lastHBDate = DateTime.Now;
             Nodes.Add(_node);
             return(_node);
         }
     }
 }
Ejemplo n.º 2
0
        public IActionResult ReceiveNodeInfo([FromBody] ApiNodeManagerModel.NodeInfo info)
        {
            var    node      = NodePool.Get().AddOrUpdate(info);
            int    interval  = Convert.ToInt32(this.config.GetSection("MainConfig").GetValue <string>("HeartInterval"));
            var    next_beat = DateTime.Now.AddSeconds(interval);
            object result    = null;

            if (node.actionTask.Count > 0)
            {
                result = new { next = next_beat, action = node.actionTask.Dequeue() };
            }
            else
            {
                result = new { next = next_beat, action = "" };
            }

            return(ApiResult.OK(result));
        }