Пример #1
0
void Facility::seize(Transaction &p, unsigned int itemSize, unsigned int priority) {
	commingCount++;
	if (DEBUG)
		std::cout << " vklada/obsadzuje linku " << name << " s " << itemSize << " items" << " v case " << Time_t << "\n";
	if (capacity - itemsIn >= itemSize && quComming.empty())
	{

		SetItemsIn(itemSize);
		duration_in_quComming.push_back(0);
		p.ActivateNext();

		// ak prisli zasoby tak zavolaj dalsieho do skladu na zobratie
		if (!quOutgoing.empty())
			if (quOutgoing.top().itemSize <= itemsIn)
			{
				duration_in_quOutgoing.push_back( Time_t - quOutgoing.top().waitStart);
				SetItemsIn((-1)*quOutgoing.top().itemSize);
				quOutgoing.top().p->ActivateNext();
				quOutgoing.pop();
			}
	}
	else
	{
		quComming.push(FacilityQuItem( &p, itemSize, priority ));

		// save for Output
			quCommingCount++;
			if (quCommingMax < quComming.size())
				quCommingMax = quComming.size();
		// End save for Output
	}
}