void BreakServer(Server server) { var network = server.Network.Free; var cpu = server.CPU.Free; var ram = server.RAM.Free; if ( _server.TryLockResource(server, server.Network, network) && _server.TryLockResource(server, server.CPU, cpu) && _server.TryLockResource(server, server.RAM, ram)) { BreakedServers.Add(server.Id); _event.Fire(new Server_Break(server.Id)); } }
void OnCompleteProgress(Request_CompleteProgress e) { var req = _request.Get(e.Id); var target = req.Target; switch (e.CompletedStatus) { case RequestStatus.Incoming: { if ( _server.TryLockResource(target, target.Network, req.WantedNetwork) && _server.TryLockResource(target, target.CPU, req.WantedCPU) && _server.TryLockResource(target, target.RAM, req.WantedRAM) ) { if (req.IsMainRequest) { _request.AddRelatedRequests(req); } req.ToProcessing(_rules.GetProcessTime(req.Target)); return; } _user.OnRequestFailed(req.Owner); req.ToOutgoing(_rules.GetNetworkTime(req.Target)); } break; case RequestStatus.Processing: { if (_break.IsServerBreaked(target.Id)) { return; } _server.ReleaseResource(target, target.CPU, req.WantedCPU); _server.ReleaseResource(target, target.RAM, req.WantedRAM); } break; } }