32#define CHECKQUEUE(qptr) if (!qptr) SIMLIB_error(QueueRefError)
33#define CHECKENTITY(fptr) if (!fptr) SIMLIB_error(EntityRefError)
40 Dprintf((
"Facility::Facility()"));
50 Dprintf((
"Facility::Facility(\"%s\")", name));
61 Dprintf((
"Facility::Facility(%s)", queue->
Name().c_str()));
71 Dprintf((
"Facility::Facility(\"%s\",%s)", name, queue->
Name().c_str()));
85 Dprintf((
"Facility::~Facility() // \"%s\" ",
Name().c_str()));
116 Dprintf((
"%s.Seize(%s,%u)",
Name().c_str(), e->
Name().c_str(), (
unsigned) sp));
127 Dprintf((
" service interrupt "));
178 Dprintf((
"%s.Seize(%s,%u) from Q2",
212 for (; p != end &&
static_cast<Entity *
>(*p)->
_SPrio > Sprio;
251 for (; p !=
Q2->
end()
255 for (; p !=
Q2->
end()
abstract base class for active entities (Process, Event) instances of derived classes provide Behavio...
bool Idle()
entity activation is not scheduled in calendar
void Activate()
activate now
Priority_t Priority
priority of the entity (scheduling,queues)
double ActivationTime()
get activation time of entity - iff scheduled it is here, because Entity has no knowledge of calend...
ServicePriority_t _SPrio
priority of service in Facility
virtual void Out() override
remove entity from queue
virtual void Passivate()
deactivation
virtual void QueueIn2(Entity *e)
virtual void QueueIn(Entity *e, ServicePriority_t sp)
bool Busy() const
in service
virtual void Seize(Entity *e, ServicePriority_t sp=DEFAULT_PRIORITY)
virtual void Release(Entity *e)
unsigned char _Qflag
true if facility is owner of input queue
virtual void Clear()
initialize
TStat tstat
usage statistics
Queue * Q2
Interrupted requests queue.
Entity * in
Entity currently in service.
bool OwnQueue() const
test for default queue
void SetQueue(Queue *queue1)
change input queue
unsigned QueueLen() const
void PredIns(Entity *e, iterator pos)
void SetName(const std::string &name)
assign the name
virtual std::string Name() const
get object name
virtual void Clear(double initval=0.0)
initialize
#define CHECKENTITY(fptr)
Internal header file for SIMLIB/C++.
Implementation of class CalendarList interface is static - using global functions in SQS namespace.
const double & Time
model time (is NOT the block)
void SIMLIB_error(const enum _ErrEnum N)
print error message and abort program
unsigned char ServicePriority_t
Service priority (see Facility::Seize)
void SIMLIB_warning(const enum _ErrEnum N)
print warning message and continue
Entity *const & Current
pointer to active (now running) entity
Main SIMLIB/C++ interface.