Generator
is shown in Figure
4.6(a). This model has an output port
out
and tmValue
-type client which will be used for
cloning the client every generating time.
class Generator: public Atomic { public: OutputPort* out; tmValue client; public: Generator(const string& name=""): Atomic(name), client() { out = AddOP("out"); }
Generator::tau()
returns a random value from an exponential
pdf with mean 5.
/*virtual*/ Time tau() const { static rv erv; TimeSpan t = erv.exp(5); return t; }
Generator::detla_y()
makes a clone of client
and
assigns it pClient
. pClient
is stamped by
(``SysIn'',CurrentTime) and it is sent out of Generator
through out
port.
/*virtual*/ void delta_y(PortValue& y) { tmValue* pClient = (tmValue*) client.Clone(); //-- (event, time) stamping pClient->TimeMap.insert(make_pair("SysIn",Devs::TimeCurrent())); y.Set(out, pClient); }
Generator
's init()
and delta_x
are omitted
here because they have no functionality.