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();
    }
Example #5
0
/**
 * 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();
    }