ийому заявки
return _Razresh ();
}
virtual bool _GotovKPeredache () const {//готовність до видачі заявки
return __ tmObrZayav! = 0;
}
Zayavka * __ tmObrZayav;// заявка зберігається один такт, поки клапан не видасть її далі
private:
virtual state_t GetState () const {//отримання стану
return pusto;// клапан ніколи не містить заявок
};
typedef struct ListZayav_t {
obrabotzayavok :: Zayav * ObrZayav;// покажчик на заявку
ListZayav_t * SledZayav;// покажчик на наступну заявку
ListZayav_t * PredZayav;// покажчик на попередню заявку
} ListZayav_tag; ochered: public peredatchik, public priemnik
{public:
// конструктор
explicit __ fastcall ochered (const std :: string & name):
structelem (name), obyavZayav (name), priemnik (name), peredatchik (name)
{
_dlina = 0; _NachaloListZayav = 0; _KonetsListZayav = 0;
}
// деструктор
~ ochered () {;}
// отримання стану
virtual state_t GetState () const {
return _length! = 0? zanyat: pusto;
}
// отримання поточної довжини
size_t GetDlina () const {return _dlina;}
// видача часу генерації найбільш старої збереженої заявки
bool __ fastcall GetMinTekVrem (size_t & TekVrem) const;
protected:
// інформація
virtual bool _GotovKPeredache () const {//готовність до видачі заявки
return _dlina> 0;
}
// готовність до прийому залежить від наявності обмеження для довжину черги
size_t _dlina;// поточна довжина черги заявок
ListZayav_t * _NachaloListZayav;// покажчик на голову списку заявок
ListZayav_t * _KonetsListZayav;// покажчик на хвіст списку заявок
private:
};
class discochered: public ochered {
// абстрактний накопичувач заявок з дисципліною обслуговування
public:
// конструктор
explicit __ fastcall discochered (const std :: string & name):
structelem (name), obyavZayav (name), ochered (name)
{
;
}
// деструктор
~ discochered () {}
protected:
// поведінка
// --------------------------------------------- --- прийом заявки
virtual void __ fastcall _Priem (Zayavka * req) {
ListZayav_t * SohrListZayav = _KonetsListZayav;
// створення елемента списку під заявку
try {
_KonetsListZayav = new ListZayav_t;
}
catch (std :: bad_alloc &)
THROW_ERROR (ERegisterError, REG_ERROR_ID,
"Description: queue cell object creation failed",
std :: string ("Details: out of memory while adding a cell to queue") +
this-> GetName ())
_KonetsListZayav -> ObrZayav = req;
_KonetsListZayav -> SledZayav = 0;
_dlina...