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