#include <BCP_message_single.hpp>
Public Member Functions | |
void | set_arguments (const int argnum, const char *const *args) |
BCP_single_environment () | |
virtual | ~BCP_single_environment () |
virtual BCP_proc_id * | register_process (USER_initialize *user_init) |
A process can register (receive its process id) with the message passing environment. | |
virtual BCP_proc_id * | parent_process () |
Return the process id of the parent process (the process that spawned the currnet process. | |
virtual bool | alive (const BCP_proc_id *pid) |
Test if the process given by the argument is alive or not. | |
virtual BCP_vec< BCP_proc_id * > ::iterator | alive (const BCP_proc_array &parray) |
Test if the processes given by the process array in the argument are alive or not. | |
virtual void | send (const BCP_proc_id *const target, const BCP_message_tag tag) |
Send an empty message (message tag only) to the process given by the frist argument. | |
virtual void | send (const BCP_proc_id *const target, const BCP_message_tag tag, const BCP_buffer &buf) |
Send the message in the buffer with the given message tag to the process given by the first argument. | |
virtual void | multicast (const BCP_proc_array *const target, const BCP_message_tag tag) |
Send an empty message (message tag only) to all the processes in the process array. | |
virtual void | multicast (const BCP_proc_array *const target, const BCP_message_tag tag, const BCP_buffer &buf) |
Send the message in the buffer with the given message tag to all processes in the process array. | |
virtual void | multicast (BCP_vec< BCP_proc_id * >::const_iterator beg, BCP_vec< BCP_proc_id * >::const_iterator end, const BCP_message_tag tag) |
Send an empty message (message tag only) to the processes in [beg, end) . | |
virtual void | multicast (BCP_vec< BCP_proc_id * >::const_iterator beg, BCP_vec< BCP_proc_id * >::const_iterator end, const BCP_message_tag tag, const BCP_buffer &buf) |
Send the message in the buffer with the given message tag to the processes in [beg, end) . | |
virtual void | receive (const BCP_proc_id *const source, const BCP_message_tag tag, BCP_buffer &buf, const double timeout) |
Blocking receive with timeout. | |
virtual bool | probe (const BCP_proc_id *const source, const BCP_message_tag tag) |
Probe if there are any messages from the given process with the given message tag. | |
virtual BCP_proc_id * | unpack_proc_id (BCP_buffer &buf) |
Unpack a process id from the buffer given in the argument. | |
virtual void | pack_proc_id (BCP_buffer &buf, const BCP_proc_id *pid) |
Pack the process id into the buffer. | |
virtual BCP_proc_id * | start_process (const BCP_string &exe, const bool debug) |
Spawn a new process. | |
virtual BCP_proc_id * | start_process (const BCP_string &exe, const BCP_string &machine, const bool debug) |
Spawn a new process on the machine specified by the second argument. | |
virtual BCP_proc_array * | start_processes (const BCP_string &exe, const int proc_num, const bool debug) |
Spawn proc_num processes, all with the same executable. | |
virtual BCP_proc_array * | start_processes (const BCP_string &exe, const int proc_num, const BCP_vec< BCP_string > &machines, const bool debug) |
Spawn proc_num processes on the machines given by the third argument, all with the same executable. | |
Protected Member Functions | |
BCP_single_environment (BCP_single_id &my_id) | |
Protected Attributes | |
int | _argnum |
char ** | _arglist |
BCP_single_id | _my_id |
Static Protected Attributes | |
static std::map< BCP_single_id, BCP_process * > | processes |
Private Member Functions | |
BCP_single_environment (const BCP_single_environment &) | |
BCP_single_environment & | operator= (const BCP_single_environment &) |
Definition at line 37 of file BCP_message_single.hpp.
BCP_single_environment::BCP_single_environment | ( | const BCP_single_environment & | ) | [private] |
BCP_single_environment::BCP_single_environment | ( | BCP_single_id & | my_id | ) | [inline, protected] |
Definition at line 48 of file BCP_message_single.hpp.
BCP_single_environment::BCP_single_environment | ( | ) | [inline] |
Definition at line 54 of file BCP_message_single.hpp.
virtual BCP_single_environment::~BCP_single_environment | ( | ) | [virtual] |
BCP_single_environment& BCP_single_environment::operator= | ( | const BCP_single_environment & | ) | [private] |
void BCP_single_environment::set_arguments | ( | const int | argnum, | |
const char *const * | args | |||
) |
virtual BCP_proc_id* BCP_single_environment::register_process | ( | USER_initialize * | user_init | ) | [virtual] |
A process can register (receive its process id) with the message passing environment.
Implements BCP_message_environment.
virtual BCP_proc_id* BCP_single_environment::parent_process | ( | ) | [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.
Implements BCP_message_environment.
virtual bool BCP_single_environment::alive | ( | const BCP_proc_id * | pid | ) | [virtual] |
Test if the process given by the argument is alive or not.
Return true if alive, false otherwise.
Implements BCP_message_environment.
virtual BCP_vec<BCP_proc_id*>::iterator BCP_single_environment::alive | ( | const BCP_proc_array & | parray | ) | [virtual] |
Test if the processes given by the process array in the argument are alive or not.
Return an iterator to the first dead process, or to the end of the array if there are no dead processes.
Implements BCP_message_environment.
virtual void BCP_single_environment::send | ( | const BCP_proc_id *const | target, | |
const BCP_message_tag | tag | |||
) | [virtual] |
Send an empty message (message tag only) to the process given by the frist argument.
Implements BCP_message_environment.
virtual void BCP_single_environment::send | ( | const BCP_proc_id *const | target, | |
const BCP_message_tag | tag, | |||
const BCP_buffer & | buf | |||
) | [virtual] |
Send the message in the buffer with the given message tag to the process given by the first argument.
Implements BCP_message_environment.
virtual void BCP_single_environment::multicast | ( | const BCP_proc_array *const | target, | |
const BCP_message_tag | tag | |||
) | [virtual] |
Send an empty message (message tag only) to all the processes in the process array.
Implements BCP_message_environment.
virtual void BCP_single_environment::multicast | ( | const BCP_proc_array *const | target, | |
const BCP_message_tag | tag, | |||
const BCP_buffer & | buf | |||
) | [virtual] |
Send the message in the buffer with the given message tag to all processes in the process array.
Implements BCP_message_environment.
virtual void BCP_single_environment::multicast | ( | BCP_vec< BCP_proc_id * >::const_iterator | beg, | |
BCP_vec< BCP_proc_id * >::const_iterator | end, | |||
const BCP_message_tag | tag | |||
) | [virtual] |
Send an empty message (message tag only) to the processes in [beg, end)
.
Implements BCP_message_environment.
virtual void BCP_single_environment::multicast | ( | BCP_vec< BCP_proc_id * >::const_iterator | beg, | |
BCP_vec< BCP_proc_id * >::const_iterator | end, | |||
const BCP_message_tag | tag, | |||
const BCP_buffer & | buf | |||
) | [virtual] |
Send the message in the buffer with the given message tag to the processes in [beg, end)
.
Implements BCP_message_environment.
virtual void BCP_single_environment::receive | ( | const BCP_proc_id *const | source, | |
const BCP_message_tag | tag, | |||
BCP_buffer & | buf, | |||
const double | timeout | |||
) | [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
.
Implements BCP_message_environment.
virtual bool BCP_single_environment::probe | ( | const BCP_proc_id *const | source, | |
const BCP_message_tag | tag | |||
) | [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.
Implements BCP_message_environment.
virtual BCP_proc_id* BCP_single_environment::unpack_proc_id | ( | BCP_buffer & | buf | ) | [virtual] |
Unpack a process id from the buffer given in the argument.
Implements BCP_message_environment.
virtual void BCP_single_environment::pack_proc_id | ( | BCP_buffer & | buf, | |
const BCP_proc_id * | pid | |||
) | [virtual] |
Pack the process id into the buffer.
Implements BCP_message_environment.
virtual BCP_proc_id* BCP_single_environment::start_process | ( | const BCP_string & | exe, | |
const bool | debug | |||
) | [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.
Implements BCP_message_environment.
virtual BCP_proc_id* BCP_single_environment::start_process | ( | const BCP_string & | exe, | |
const BCP_string & | machine, | |||
const bool | debug | |||
) | [virtual] |
Spawn a new process on the machine specified by the second argument.
Implements BCP_message_environment.
virtual BCP_proc_array* BCP_single_environment::start_processes | ( | const BCP_string & | exe, | |
const int | proc_num, | |||
const bool | debug | |||
) | [virtual] |
Spawn proc_num
processes, all with the same executable.
Implements BCP_message_environment.
virtual BCP_proc_array* BCP_single_environment::start_processes | ( | const BCP_string & | exe, | |
const int | proc_num, | |||
const BCP_vec< BCP_string > & | machines, | |||
const bool | debug | |||
) | [virtual] |
Spawn proc_num
processes on the machines given by the third argument, all with the same executable.
Implements BCP_message_environment.
int BCP_single_environment::_argnum [protected] |
Definition at line 43 of file BCP_message_single.hpp.
char** BCP_single_environment::_arglist [protected] |
Definition at line 44 of file BCP_message_single.hpp.
BCP_single_id BCP_single_environment::_my_id [protected] |
Definition at line 51 of file BCP_message_single.hpp.
std::map<BCP_single_id, BCP_process*> BCP_single_environment::processes [static, protected] |
Definition at line 52 of file BCP_message_single.hpp.