>// видалення дозволяючого сигналу
void __ fastcall __ UdalitRazreshSignal (structelem * pcontroller);}
priemnik: virtual public obrabotzayavok
{public:
// конструктор і деструктор
explicit __ fastcall priemnik (const std :: string & name):
structelem (name), obyavZayav (name)
{
;
}
~ priemnik () {}
protected:
virtual void __ fastcall _Priem (Zayavka *) = 0;// прийом заявки
virtual bool _GotovKPriem () const = 0;// готовність до прийому заявки
private:
};
peredatchik: virtual public obrabotzayavok
{public:
// конструктор і деструктор
explicit __ fastcall peredatchik (const std :: string & name):
structelem (name), obyavZayav (name)
{
;
}
~ peredatchik () {}
protected:
virtual Zayavka * __ fastcall _Peredacha (Zayavka * req = 0) = 0;// видача заявки
// інформація
virtual bool _GotovKPeredache () const = 0;// готовність до видачі заявки
private:
};
class peredatchikszader: public peredatchik
{public:
// конструктор і деструктор
explicit __ fastcall peredatchikszader (const std :: string & name):
structelem (name), obyavZayav (name), peredatchik (name),
_ObrZayav (0), _VremyaVidachi (0), _OprVremyaVidachi (false)
{
;
}
~ peredatchikszader ()
// інформація
virtual state_t GetState () const {//перевірка стану
return _ObrZayav == 0? pusto: zanyat;
}
protected:
// поведінка
virtual void _VremyaSozdZayav () = 0;// час виходу заявки
Zayavka * _ObrZayav;// Заявка, що знаходиться на обробці
size_t _VremyaVidachi;// час видачі заявки
bool _OprVremyaVidachi;// ознака визначеності часу видачі
private:
};
class GeneratorZayavok: public peredatchikszader {
// генератор заявок (елемент, який видає заявки через випадковий час)
// конструктор і деструктор
explicit __ fastcall GeneratorZayavok (const std :: string & name):
structelem (name), obyavZayav (name), peredatchikszader (name)
{
;
}
~ GeneratorZayavok () {}
protected:
// поведінка
virtual Zayavka * __ fastcall _Peredacha (Zayavka *) {//видача (генерація) заявки
_OprVremyaVidachi = false;
Zayavka * tmObrZayav = _ObrZayav; _ObrZayav = 0;
// завдання моменту появи заявки
tmObrZayav-> SetVremPoyav;
tmObrZayav-> SetTekVrem;
}
return tmObrZayav;
}
virtual void _GenerateVremyaVidachi () {//час виходу заявки
try {
_VremyaVidachi = randomgenerator :: GetValue ();