public void RemoveNode(int id) { bool _success = false; lock (jsLock) { for (int i = 0; i < _nodes.Count; i++) { if (_nodes[i].id == id) { if (_nodes[i].uWorker == 0) { _nodes.RemoveAt(i); } else { throw new JobNodeException("Node busy (" + _nodes[i].uWorker + " Jobs working).", null); } _success = true; break; } } } if (!_success) { throw new JobNodeException("Node does not exist!", null); } if (OnNodeCountChange != null) { OnNodeCountChange.Invoke(null, null); } }
public void AddNode(JobNode node) { lock (jsLock) { if (MAXNODES > _nodes.Count) { _nodes.Add(node); } else { throw new JobSystemException("Nodes limit reached!", null); } } if (OnNodeCountChange != null) { OnNodeCountChange.Invoke(null, null); } }
public int RemoveAllNodes() { int _removedNodes = 0; lock (jsLock) { for (int i = 0; i < _nodes.Count; i++) { if (_nodes[i].uWorker == 0) { _nodes.RemoveAt(i); _removedNodes++; } } } if (OnNodeCountChange != null) { OnNodeCountChange.Invoke(null, null); } return(_removedNodes); }