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)"); } }
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; }
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(); } } }