coin-Bcp
List of all members
BCP_message_environment Class Referenceabstract

This is an abstract base class that describes the message passing environment. More...

#include <BCP_message.hpp>

Inheritance diagram for BCP_message_environment:
Inheritance graph
[legend]

Public Member Functions

Destructor
virtual ~BCP_message_environment ()
 Being virtual, the destructor invokes the destructor for the real type of the object being deleted. More...
 
Registering a process
virtual int register_process (USER_initialize *user_init)=0
 A process can register (receive its process id) with the message passing environment. More...
 
Identify parent process
virtual int parent_process ()=0
 Return the process id of the parent process (the process that spawned the currnet process. More...
 
Testing processes
virtual bool alive (const int pid)=0
 Test if the process given by the argument is alive or not. More...
 
virtual const int * alive (int num, const int *pids)=0
 Test if the processes given by the process array in the argument are alive or not. More...
 
Send to one process
virtual void send (const int target, const BCP_message_tag tag)=0
 Send an empty message (message tag only) to the process given by the frist argument. More...
 
virtual void send (const int target, const BCP_message_tag tag, const BCP_buffer &buf)=0
 Send the message in the buffer with the given message tag to the process given by the first argument. More...
 
Broadcasting
virtual void multicast (int num, const int *targets, const BCP_message_tag tag)=0
 Send an empty message (message tag only) to all the processes in the process array. More...
 
virtual void multicast (int num, const int *targets, const BCP_message_tag tag, const BCP_buffer &buf)=0
 Send the message in the buffer with the given message tag to all processes in the process array. More...
 
Receiving
virtual void receive (const int source, const BCP_message_tag tag, BCP_buffer &buf, const double timeout)=0
 Blocking receive with timeout. More...
 
virtual bool probe (const int source, const BCP_message_tag tag)=0
 Probe if there are any messages from the given process with the given message tag. More...
 
Starting a process
virtual int start_process (const BCP_string &exe, const bool debug)=0
 Spawn a new process. More...
 
virtual int start_process (const BCP_string &exe, const BCP_string &machine, const bool debug)=0
 Spawn a new process on the machine specified by the second argument. More...
 
virtual bool start_processes (const BCP_string &exe, const int proc_num, const bool debug, int *ids)=0
 Spawn proc_num processes, all with the same executable. More...
 
virtual bool start_processes (const BCP_string &exe, const int proc_num, const BCP_vec< BCP_string > &machines, const bool debug, int *ids)=0
 Spawn proc_num processes on the machines given by the third argument, all with the same executable. More...
 
Additional function for MPI interface
virtual int num_procs ()
 Return the number of processes. More...
 

Detailed Description

This is an abstract base class that describes the message passing environment.

The implementation of the message passing protocol must implement this class.

All methods are pure virtual, enforcing the correct overriding of the methods.

Definition at line 30 of file BCP_message.hpp.

Constructor & Destructor Documentation

virtual BCP_message_environment::~BCP_message_environment ( )
inlinevirtual

Being virtual, the destructor invokes the destructor for the real type of the object being deleted.

Definition at line 36 of file BCP_message.hpp.

Member Function Documentation

virtual int BCP_message_environment::register_process ( USER_initialize user_init)
pure virtual

A process can register (receive its process id) with the message passing environment.

Implemented in BCP_single_environment.

virtual int BCP_message_environment::parent_process ( )
pure virtual

Return the process id of the parent process (the process that spawned the currnet process.

Returns null if the process does not have a parent.

Implemented in BCP_single_environment.

virtual bool BCP_message_environment::alive ( const int  pid)
pure virtual

Test if the process given by the argument is alive or not.

Return true if alive, false otherwise.

Implemented in BCP_single_environment.

virtual const int* BCP_message_environment::alive ( int  num,
const int *  pids 
)
pure virtual

Test if the processes given by the process array in the argument are alive or not.

Return a pointer to the first dead process, or to the end of the array if there are no dead processes.

Implemented in BCP_single_environment.

virtual void BCP_message_environment::send ( const int  target,
const BCP_message_tag  tag 
)
pure virtual

Send an empty message (message tag only) to the process given by the frist argument.

Implemented in BCP_single_environment.

virtual void BCP_message_environment::send ( const int  target,
const BCP_message_tag  tag,
const BCP_buffer buf 
)
pure virtual

Send the message in the buffer with the given message tag to the process given by the first argument.

Implemented in BCP_single_environment.

virtual void BCP_message_environment::multicast ( int  num,
const int *  targets,
const BCP_message_tag  tag 
)
pure virtual

Send an empty message (message tag only) to all the processes in the process array.

Implemented in BCP_single_environment.

virtual void BCP_message_environment::multicast ( int  num,
const int *  targets,
const BCP_message_tag  tag,
const BCP_buffer buf 
)
pure virtual

Send the message in the buffer with the given message tag to all processes in the process array.

Implemented in BCP_single_environment.

virtual void BCP_message_environment::receive ( const int  source,
const BCP_message_tag  tag,
BCP_buffer buf,
const double  timeout 
)
pure virtual

Blocking receive with timeout.

Wait until a message is received from the given process with the given message tag within the given timelimit. If timeout is positive then the receive routine times out after this many seconds. If it is negative then the method blocks until a message is received. The received message is saved into the buffer. With a 0 pointer as the first argument (or the predefined BCP_AnyProcess process id can be used) a message from any process will be accepted. Messages with any message tag are accepted if the second argument is BCP_Msg_AnyMessage.

Implemented in BCP_single_environment.

virtual bool BCP_message_environment::probe ( const int  source,
const BCP_message_tag  tag 
)
pure virtual

Probe if there are any messages from the given process with the given message tag.

Return true if such a message is found, false otherwise. Note that the message is not "read", only its existence is checked. Similarly as above, the wild cards BCP_AnyProcess and BCP_Msg_AnyMessage can be used.

Implemented in BCP_single_environment.

virtual int BCP_message_environment::start_process ( const BCP_string exe,
const bool  debug 
)
pure virtual

Spawn a new process.

The first argument contains the path to the executable to be spawned. If the second argument is set to true, then the executable is spawned under a debugger.

Implemented in BCP_single_environment.

virtual int BCP_message_environment::start_process ( const BCP_string exe,
const BCP_string machine,
const bool  debug 
)
pure virtual

Spawn a new process on the machine specified by the second argument.

Implemented in BCP_single_environment.

virtual bool BCP_message_environment::start_processes ( const BCP_string exe,
const int  proc_num,
const bool  debug,
int *  ids 
)
pure virtual

Spawn proc_num processes, all with the same executable.

NOTE: ids must be allocated already and have enough space for proc_num entries.

Returns
true/false depending on success.

Implemented in BCP_single_environment.

virtual bool BCP_message_environment::start_processes ( const BCP_string exe,
const int  proc_num,
const BCP_vec< BCP_string > &  machines,
const bool  debug,
int *  ids 
)
pure virtual

Spawn proc_num processes on the machines given by the third argument, all with the same executable.

NOTE: ids must be allocated already and have enough space for proc_num entries.

Returns
true/false depending on success.

Implemented in BCP_single_environment.

virtual int BCP_message_environment::num_procs ( )
inlinevirtual

Return the number of processes.

For non-MPI this just returns 0.

Definition at line 151 of file BCP_message.hpp.


The documentation for this class was generated from the following file: