TL_MessageDispatcher::~TL_MessageDispatcher()
{
	try
	{
		_p->_queueProtect.destroy();
	}
	catch (std::exception &e)
	{
		TL_ExceptionComply eC(e);
		throw TL_Exception<TL_MessageDispatcher>("TL_MessageDispatcher::~TL_MessageDispatcher",
			_TLS( eC.who() << "->" << eC.what() ) );
	}
}
void
TL_EventBuffer::destroy()
{
	if(_p->_initialized)
	{
		try
		{
 			_p->_eventListProtect.destroy();
		}
		catch (std::exception &e)
		{
			TL_ExceptionComply eC(e);
			throw TL_Exception<TL_EventBuffer>("TL_EventBuffer::destroy",
				_TLS( eC.who() << "->" << eC.what() ) );
		}	
		_p->_initialized = false;
	}
}
void
TL_Central::start()
{
	// TO DO - take info from configuration

	// create the pool server
	TL_EPollServer server(100, 1000);
		
	TL_SocketEventManager eventManager(1);

	TL_EventBuffer::Instance().setBufferSize(1000);

	try
	{
		// start event manager before server to be ready to accept events
		eventManager.start();
		
		server.listen("*", "3333", TL_EventBuffer::addEvents, TL_EventBuffer::addNewConnections);
	
		server.start();

		TL_SignalManager::Instance().addSignalReceiver(this, SIGHUP);
		// loop waiting for signals
		for(;;)
		{
			TL_Timespec theWait(TL_Timespec::NOW);
			theWait.add(1, 0); // 1 sec
			TL_SignalManager::Instance().process(theWait);
		}
	}
	catch (std::exception& e)
	{
		TL_ExceptionComply eC(e);

		LOG(this, "TL_Central::start" , TL_Log::NORMAL,
			eC.what() << " " << eC.who() );
	}

	TL_Timespec theWait(TL_Timespec::NOW);
	theWait.add(10,0);
	TL_ThreadManager::Instance().cancelAllThreads(theWait);
	server.destroy();
	eventManager.destroy();
}
Esempio n. 4
0
File: main.cpp Progetto: henrical/PO
int main()
{
	EconomicEngine eE1;
	EconomicEngine eE2;
	EconomicEngine eE3;
	XtremeEngine xE1;

	EconomicCar eC(eE1);
	MediumCar mC(eE2);
	TopCar tC(eE3, xE1);

	eC.drive();
	eC.stop();

	mC.changeEngine(eE3);
        
	tC.drive();
	tC.stop();
}
void
TL_SocketEventManager::destroy()
{
	if(_p->_initialized)
	{
		try
		{
			_p->_mapProtect.destroy();
			_p->destroyThreads();

		}
		catch (std::exception &e)
		{
			TL_ExceptionComply eC(e);
			throw TL_Exception<TL_SocketEventManager>("TL_SocketEventManager::destroy",
				_TLS( eC.who() << "->" << eC.what() ) );
		}
	}
	_p->_initialized = false;
}