Ejemplo n.º 1
0
 // wait for condition to be met
 inline void wait(void)
 {
   Lock lock(_mutex);
   // wait and check if condition is met:
   while( !testCondition() )
     if( pthread_cond_wait(&_cond._cond, &_mutex._mutex)!=0 )
       throw Threads::Exception("Conditional::wait(): "
                                "pthread_cond_wait() failed");
 };
Ejemplo n.º 2
0
int
asyncAwaitCondition (int timeout, AsyncConditionTester *testCondition, void *data) {
  TimePeriod period;
  startTimePeriod(&period, timeout);

  while (!(testCondition && testCondition(data))) {
    long int elapsed;

    if (afterTimePeriod(&period, &elapsed)) return 0;
    awaitAction(timeout - elapsed);
  }

  return 1;
}
Ejemplo n.º 3
0
void AiEntity::updateState() {
  // test conditions
  AiSpecies* species = gSpeciesData.get(mType);
  size_t totalStates = species->stateMachine.mStates.size();
  bool isDone = false;
  for (size_t i = 0; i < totalStates && !isDone; i++) {
    if (species->stateMachine.mStates[i].state == mCurrentState) {
      if (testCondition(species->stateMachine.mStates[i].condition)) {
        mCurrentState = species->stateMachine.mStates[i].nextState;
        isDone = true;
      }
    }
  }

  switch(mCurrentState) {
  case AISTATE_ALL:
    printf("AiEntity::updateState(): AISTATE_ALL: should not be here...\n");
    mCurrentState = AISTATE_STOP;
    break;
  case AISTATE_STOP:
    break;
  case AISTATE_WANDER:
    break;
  case AISTATE_MOVE_TO_WAYPOINT:
    break;
  case AISTATE_PURSUE:
    break;
  case AISTATE_ATTACK_MELEE:
    break;
  case AISTATE_ATTACK_RANGE:
    break;
  case AISTATE_RANGE:
    break;
  case AISTATE_FLEE:
    break;
  case AISTATE_FOLLOW:
    break;
  default:
    printf("AiEntity::updateState(): unknown state\n");
    mCurrentState = AISTATE_STOP;
    break;
  }
}
Ejemplo n.º 4
0
PyObject*
Actionary::testPostAssertions(iPAR* ipar) {
	return testCondition(ipar,5);
}
Ejemplo n.º 5
0
PyObject*
Actionary::testDuringAssertions(iPAR* ipar) {
	return testCondition(ipar,4);
}
Ejemplo n.º 6
0
PyObject*
Actionary::testExecutionSteps(iPAR* ipar) {
  return testCondition(ipar, 3);
}
Ejemplo n.º 7
0
PyObject*
Actionary::testPreparatorySpec(iPAR* ipar) {
  return testCondition(ipar, 2);
}
Ejemplo n.º 8
0
PyObject*
Actionary::testCulminationCond(iPAR* ipar) {
  return testCondition(ipar, 1);
}
Ejemplo n.º 9
0
PyObject*
Actionary::testApplicabilityCond(iPAR* ipar) {
   return testCondition(ipar, 0);
}
Ejemplo n.º 10
0
int main()
{
	testCondition();

	return 0;
}