/******************************************************************* * * DESCRIPTION: class NodeCoordinatorModel * * AUTHOR: Ezequiel Glinsky * * EMAIL: mailto://eglinsky@sce.carleton.ca * * DATE: March, 2004 * *******************************************************************/ #ifndef __PNCOORDMODEL_H #define __PNCOORDMODEL_H #include "model.h" //class Model #define NC_CLASS_NAME "NodeCoordinator" /** definitions **/ class NodeCoordinatorModel : public Model { public: virtual ~NodeCoordinatorModel() // Destructor {} unsigned long totalProcCount() const { return 1; } unsigned long localProcCount() const; protected: friend class ParallelModelAdmin; NodeCoordinatorModel( const string &name = "ParallelNodeCoordinator" ) // Constructor : Model( name ) {} virtual string className() const { return NC_CLASS_NAME; } virtual ParallelProcessor &createParallelProcessor() { return SingleParallelProcessorAdmin::Instance().generateNodeCoordinator( this, this->localProc()); } }; // class NodeCoordinatorModel inline unsigned long NodeCoordinatorModel::localProcCount () const { if ( localProc() != ParallelProcessor::InvalidId ) return 1; else return 0; } #endif //__PNodeCoordinatorModel_H