-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathGenerationProcess.hpp
More file actions
executable file
·138 lines (116 loc) · 3.42 KB
/
GenerationProcess.hpp
File metadata and controls
executable file
·138 lines (116 loc) · 3.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
//
// GenerationProcess.h
// AggregationNS3
//
// Created by Alper Sinan Akyurek on 8/8/16.
// Copyright © 2016 Alper Sinan Akyurek. All rights reserved.
//
#ifndef GenerationProcess_h
#define GenerationProcess_h
#include <list>
#include "MeasurementQueue.hpp"
#include <ns3/core-module.h>
/**
Base class for all generation process implementations. Any inheriting class
must implement a method to schedule measurements
**/
class GenerationProcess : public ns3::SimpleRefCount< GenerationProcess >
{
public:
/** Mean generation rate type **/
typedef double TMeanRate;
/** Is deterministic boolean type **/
typedef bool TIsDeterministic;
/** Is deterministic values **/
enum IsDeterministicValues : TIsDeterministic
{
/** Generation is deterministic **/
IsDeterministic = true,
/** Generation is random **/
IsRandom = false
};
/** Arrival time type **/
typedef ns3::Time TArrivalTime;
/** Application ID type **/
typedef Measurement::TId TId;
protected:
/** Mean rate of generation **/
TMeanRate m_meanRate;
/** Measurement queue of all the generated measurements **/
TMeasurementQueuePtr m_measurementList;
/** ID of the application **/
TId m_id;
protected:
/**
Constructor to set the mean rate.
\param meanRate Mean generation rate.
**/
GenerationProcess( const TMeanRate meanRate );
/**
Constructor to set the mean rate and the measurement queue.
\param meanRate Average generation rate.
\param list Measurement queue.
**/
GenerationProcess( const TMeanRate meanRate, const TMeasurementQueuePtr list );
/**
Virtual class that schedules the next generation of measurement(s).
**/
virtual void ScheduleGeneration( void ) = 0;
/**
Adds a measurement to the measurement queue
\param measurement New measurement to be added.
**/
void
AddMeasurement( const TMeasurementPtr & measurement );
/**
Sets the mean generation rate.
\return Mean generation rate.
**/
void
SetMeanGenerationRate( const TMeanRate meanRate )
{
this->m_meanRate = meanRate;
}
public:
/**
Returns the mean generation rate.
\return Mean generation rate.
**/
TMeanRate
GetMeanGenerationRate( void ) const
{
return ( this->m_meanRate );
}
/**
Sets the application ID.
\param id Application ID.
**/
void
SetId( const TId id )
{
this->m_id = id;
}
/**
Returns the application ID.
\return Application ID.
**/
TId
GetId( void ) const
{
return ( this->m_id );
}
/**
Sets the measurement queue.
\param list Measurement queue.
**/
void
SetMeasurementQueue( const TMeasurementQueuePtr list )
{
this->m_measurementList = list;
}
/**
Virtual empty destructor.
**/
virtual ~GenerationProcess( void ){}
};
#endif /* GenerationProcess_h */