Ejemplo n.º 1
0
void *Transition::process(void *ptr) {

	Transition* transition = (Transition*) ptr;

	do { 

	Token* current = transition->getToken();

	if (current != NULL) {

#ifdef P_EVENT
		transition->dispatchPStartEvent();
#endif

		//Process token
		//1.BIN Routing


		//2.Dynamic Fuzzy Routing
		double result = FuzzyLogicDSL::Evaluate(1, 1, 1, 1, 0.3, 0, 1);
		cout << result << endl;

		transition->forwardToken(current);

	} else {

		pthread_mutex_t* mutex = transition->getMutex();//TODO remove from transition
		pthread_cond_t* cond_var = transition->getCondVar();

		pthread_mutex_lock(mutex);
		pthread_cond_wait(cond_var, mutex);
		pthread_mutex_unlock(mutex);

	}

	} while (!transition->isStopped());

	pthread_exit(0);

	return 0;

}