예제 #1
0
파일: Hub.cs 프로젝트: radtek/BackO
        private void PutNodeOnline(PeerNode pn)
        {
            if (NodesList.Contains(pn.Id) && NodesList.GetById(pn.Id).Status != NodeStatus.Idle)
            {
                Logger.Append("HUBRN", Severity.WARNING, "Node #" + pn.Id + " tried to connect but appears to already be online, rejecting.");
                pn.Status = NodeStatus.Rejected;
                pn.SendAuthStatus();
                pn.Disconnect();
                pn.Dispose();
            }
            else
            {
                if (NodesList.Contains(pn.Id))
                {
                    NodesList.Remove(pn.Id);
                }
                NodesList.Add(pn);

                if (pn.Status == NodeStatus.Idle)
                {
                    pn.LogEvent         += new P2PBackupHub.PeerNode.LogHandler(LogEvent);
                    pn.NeedStorageEvent += ChooseStorage;
                    pn.SessionEvent     += HandleSessionEvent;
                }
                pn.StartListening();
                pn.OfflineEvent += ClearNode;
                pn.Status        = NodeStatus.Online;
                Logger.Append("HUBRN", Severity.INFO, "Node #" + pn.Id + " is online (total : " + NodesList.Count + " online nodes)");
            }
        }
예제 #2
0
파일: Hub.cs 프로젝트: radtek/BackO
 private void ClearNode(PeerNode n)
 {
     Utilities.Logger.Append("HUBRN", Severity.INFO, "Node #" + n.Id + " has disconnected.");
     //Console.WriteLine("nodelist remove : "+nodeList.Remove(n));
     n.Disconnect();
     n.Status           = NodeStatus.Idle;
     n.LastReceivedPing = DateTime.Now;
 }
예제 #3
0
 public void ApproveNode(uint nodeId, bool lockStatus)
 {
     //(new DBHandle()).ApproveNode(nodeId, lockStatus);
     new DAL.NodeDAO().Approve(nodeId, lockStatus);
     if (lockStatus == false)
     {
         PeerNode n = Hub.NodesList.GetById(nodeId);
         if (n != null)
         {
             n.Status = NodeStatus.Idle;
             // TODO : call putonline()
             n.SendAuthStatus();
         }
     }
     else              // lock immediately : an online node will be disconnected
     {
         PeerNode n = Hub.NodesList.GetById(nodeId);
         if (n != null && n.Status != NodeStatus.Offline)
         {
             n.Disconnect();
         }
     }
 }