Free cookie consent management tool by TermsFeed Policy Generator

source: trunk/HeuristicLab.ExtLibs/HeuristicLab.SimSharp/3.1.1/SimSharp-3.1.1/Core/Resources/Events/PreemptiveRequest.cs @ 16779

Last change on this file since 16779 was 16779, checked in by abeham, 5 years ago

#2975: Updated Sim# to 3.1.1

File size: 2.0 KB
Line 
1#region License Information
2/* SimSharp - A .NET port of SimPy, discrete event simulation framework
3Copyright (C) 2019  Heuristic and Evolutionary Algorithms Laboratory (HEAL)
4
5This program is free software: you can redistribute it and/or modify
6it under the terms of the GNU General Public License as published by
7the Free Software Foundation, either version 3 of the License, or
8(at your option) any later version.
9
10This program is distributed in the hope that it will be useful,
11but WITHOUT ANY WARRANTY; without even the implied warranty of
12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13GNU General Public License for more details.
14
15You should have received a copy of the GNU General Public License
16along with this program.  If not, see <http://www.gnu.org/licenses/>.*/
17#endregion
18
19using System;
20
21namespace SimSharp {
22  public sealed class PreemptiveRequest : Request, IComparable<PreemptiveRequest>, IComparable {
23    public double Priority { get; private set; }
24    public bool Preempt { get; private set; }
25    public bool IsPreempted { get; internal set; }
26
27    public PreemptiveRequest(Simulation environment, Action<Event> callback, Action<Event> disposeCallback, double priority = 1, bool preempt = false)
28      : base(environment, callback, disposeCallback) {
29      Priority = priority;
30      Preempt = preempt;
31    }
32
33    public int CompareTo(PreemptiveRequest other) {
34      if (Priority > other.Priority) return 1;
35      else if (Priority < other.Priority) return -1;
36      if (Time > other.Time) return 1;
37      else if (Time < other.Time) return -1;
38      if (!Preempt && other.Preempt) return 1;
39      else if (Preempt && !other.Preempt) return -1;
40      return 0;
41    }
42
43    public int CompareTo(object obj) {
44      if (obj is PreemptiveRequest other) return CompareTo(other);
45      if (obj == null) return 1;
46      throw new ArgumentException("Can only compare to other objects of type PreemptiveRequest");
47    }
48  }
49}
Note: See TracBrowser for help on using the repository browser.