-
Notifications
You must be signed in to change notification settings - Fork 0
/
congest.cpp
71 lines (67 loc) · 1.89 KB
/
congest.cpp
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
/*******************************************************************
*
* DESCRIPTION: class Congestion
*
* AUTHOR: Andrea Díaz && Verónica Vazquez
*
* EMAIL: rodiaz@dc.uba.ar
* vvazqu@dc.uba.ar
*
* DATE: 24/01/2000
*
*******************************************************************/
/** include files **/
#include "congest.h" // base header
#include "message.h" // class InternalMessage
#include "parsimu.h" // class Simulator
#include "distri.h" // class Distribution
#include "strutil.h" // str2Value( ... )
using namespace std;
/*******************************************************************
* Function Name: Congestion
* Description: constructor
********************************************************************/
Congestion::Congestion( const string &name)
:Atomic(name)
, IngresaAuto(this->addInputPort("IngresaAuto"))
, SaleAuto(this->addInputPort("SaleAuto"))
, stop(this->addInputPort("stop"))
, peso(this->addOutputPort("peso"))
{
}
//******************************************************************
Model &Congestion::initFunction()
{
cant_autos = 0;
return *this;
}
//******************************************************************
Model &Congestion::externalFunction(const ExternalMessage &msg)
{
if (msg.port() == IngresaAuto )
{
cant_autos++;
this->passivate();
}
if (msg.port() == SaleAuto )
{
cant_autos--;
this->passivate();
}
if (msg.port() == stop )
{
this->passivate();
}
return *this;
}
//******************************************************************
Model &Congestion::outputFunction( const InternalMessage &msg)
{
this->sendOutput(msg.time(), peso, cant_autos );
}
//******************************************************************
Model &Congestion::internalFunction (const InternalMessage &msg)
{
return *this;
}
//******************************************************************