Scheduler
specialMailbox.cpp
Go to the documentation of this file.
1 
10 #include "specialMailbox.h"
11 
12 #include <iostream>
13 
14 #include "process.h"
15 
16 using namespace Scheduler;
17 
18 SpecialMailbox *SpecialMailbox::instance = nullptr;
19 
21 {
22  if (instance == nullptr)
23  instance = new SpecialMailbox();
24  return instance;
25 }
26 
27 
28 
29 
30 void SpecialMailbox::put(double currentTime, std::shared_ptr<Process> p)
31 {
32  if (p == nullptr)
33  {
34  valid = false;
35  return;
36  }
37  double period = p->getPeriod();
38  double deadline = p->getDeadlineTime();
39  double earliness = deadline - currentTime;
40 
41  if (earliness < period*fraction)
42  {
43  reward = maxCost*(earliness/(period*fraction)-1.0);
44  }
45  else
46  {
47  reward = 0.0;
48  }
49  valid = true;
50 }
51 
52 
54 {
55  return reward;
56 }
57 
58 
60 {
61  valid = false;
62 }
63 
64 
65 
67 {
68  return valid;
69 }
70 
71 
72 
void put(double currentTime, std::shared_ptr< Process > p)
static SpecialMailbox * getInstance()
Definition: reward.py:1