#include #include "Agent.h" Agent::Agent(vector sensorList, vector actuatorList, vector channelList) { m_sensorList = sensorList; m_actuatorList = actuatorList; m_channelList = channelList; } Agent::~Agent() { int i; for (i = 0; i < (int) m_sensorList.size(); i++) { delete m_sensorList[i]; } for (i = 0; i < (int) m_actuatorList.size(); i++) { delete m_actuatorList[i]; } for (i = 0; i < (int) m_channelList.size(); i++) { delete m_channelList[i]; } } void Agent::run() { int i; int rank, stop = 0; MPI_Status status; MPI_Comm_rank(MPI_COMM_WORLD, &rank); while (!stop) { MPI_Recv(&stop, 1, MPI_INT, MASTER_ID, SYNC_MSG, MPI_COMM_WORLD, &status); for (i = 0; i < (int) m_sensorList.size(); i++) { Sensor *x = m_sensorList[i]; x->update(); } step(); for (i = 0; i < (int) m_actuatorList.size(); i++) { Actuator *x = m_actuatorList[i]; x->update(); } MPI_Send(&stop, 1, MPI_INT, MASTER_ID, SYNC_MSG, MPI_COMM_WORLD); } }