void Stack<TaskGeneric>:: defineNbDof( const int& nbDof ) { assert(nbDof >= 0); nbDofs = nbDof; resetReady(); }
void Stack<TaskGeneric>:: down( const TaskGeneric& key ) { bool find =false; StackIterator_t it; for ( it=stack.begin();stack.end()!=it;++it ) { if( *it == &key ) { find=true; break; } } if( stack.end()==it ) { return; } if(! find ){ return; } StackIterator_t pos=it; pos++; // If the task is already at the end of the stack, do nothing if( stack.end()==pos ){ return; } TaskGeneric* task=*it; while(! mutex_.try_lock() ){} stack.erase( it ); // the task was the second to last one if( stack.end()==pos ){ stack.push_back(task); } else { stack.insert( pos,task ); } resetReady(); mutex_.unlock(); }
void Stack<TaskGeneric>:: push( TaskGeneric& task ) { while(! mutex_.try_lock() ){} stack.push_back( &task ); addDependancy( getTaskDependancyList( task ) ); resetReady(); mutex_.unlock(); }
void Stack<TaskGeneric>:: clear( void ) { for ( StackIterator_t it=stack.begin();stack.end()!=it;++it ) { removeDependancy( getTaskDependancyList( **it ) ); } stack.clear(); resetReady(); }
/** * Reset Manager has request a reset, send the current state and * start sending updates. */ void CCAPI_Service_reset_request() { cc_deviceinfo_ref_t handle = 0; sendResetUpdates = 1; if (CCAPI_DeviceInfo_isPhoneIdle(handle) == TRUE) { resetReady(); } else { resetNotReady(); } }
TaskGeneric& Stack<TaskGeneric>:: pop( void ) { TaskGeneric* res = stack.back(); while(! mutex_.try_lock() ){} removeDependancy( getTaskDependancyList( *res ) ); stack.pop_back(); resetReady(); mutex_.unlock(); return *res; }
void Stack<TaskGeneric>:: remove( const TaskGeneric& key ) { bool find =false; StackIterator_t it; for ( it=stack.begin();stack.end()!=it;++it ) { if( *it == &key ) { find=true; break; } } if(! find ){ return; } while(! mutex_.try_lock() ){} stack.erase( it ); removeDependancy( getTaskDependancyList( key ) ); resetReady(); mutex_.unlock(); }
void Stack<TaskGeneric>:: up( const TaskGeneric& key ) { bool find =false; StackIterator_t it; for ( it=stack.begin();stack.end()!=it;++it ) { if( *it == &key ) { find=true; break; } } if( stack.begin()==it ) { return; } if(! find ){ return; } StackIterator_t pos=it; pos--; TaskGeneric * task = *it; while(! mutex_.try_lock() ){} stack.erase( it ); stack.insert( pos,task ); resetReady(); mutex_.unlock(); }