Bcp 1.4.4
Loading...
Searching...
No Matches
BCP_message_single.hpp
Go to the documentation of this file.
1// Copyright (C) 2000, International Business Machines
2// Corporation and others. All Rights Reserved.
3#ifndef _BCP_MESSAGE_SINGLE_H
4#define _BCP_MESSAGE_SINGLE_H
5
6#include <map>
7
8#include "BcpConfig.h"
9
10#include "BCP_message.hpp"
11
12class BCP_process;
13
14//#############################################################################
15
17private:
20protected:
21 // The argument list of the started process
23 char ** _arglist;
24public:
25 void set_arguments(const int argnum, const char* const * args);
26protected:
28 _argnum(0), _arglist(NULL), _my_id(my_id) {}
29protected:
30 int _my_id;
31 static std::map<int, BCP_process*> processes;
32public:
35
38
39 bool alive(const int pid);
40 const int* alive(int num, const int* pids);
41
42 void send(const int target, const BCP_message_tag tag);
43 void send(const int target,
44 const BCP_message_tag tag, const BCP_buffer& buf);
45
46 void multicast(int num, const int* targets,
47 const BCP_message_tag tag);
48 void multicast(int num, const int* targets,
49 const BCP_message_tag tag, const BCP_buffer& buf);
50
51 void receive(const int source,
52 const BCP_message_tag tag, BCP_buffer& buf,
53 const double timeout);
54 bool probe(const int source, const BCP_message_tag tag);
55
56 int start_process(const BCP_string& exe,
57 const bool debug);
58 int start_process(const BCP_string& exe,
59 const BCP_string& machine,
60 const bool debug);
61 bool start_processes(const BCP_string& exe,
62 const int proc_num,
63 const bool debug,
64 int* ids);
65 bool start_processes(const BCP_string& exe,
66 const int proc_num,
67 const BCP_vec<BCP_string>& machines,
68 const bool debug,
69 int* ids);
70
71// void stop_process(const int process);
72// void stop_processes(const BCP_proc_array* processes);
73};
74
75#endif
BCP_message_tag
This enumerative constant describes the message tags different processes of BCP understand.
This class describes the message buffer used for all processes of BCP.
Definition: BCP_buffer.hpp:39
This is an abstract base class that describes the message passing environment.
Definition: BCP_message.hpp:30
const int * alive(int num, const int *pids)
Test if the processes given by the process array in the argument are alive or not.
void multicast(int num, const int *targets, const BCP_message_tag tag)
Send an empty message (message tag only) to all the processes in the process array.
int parent_process()
Return the process id of the parent process (the process that spawned the currnet process.
static std::map< int, BCP_process * > processes
int 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.
bool probe(const int source, const BCP_message_tag tag)
Probe if there are any messages from the given process with the given message tag.
void send(const int target, const BCP_message_tag tag)
Send an empty message (message tag only) to the process given by the frist argument.
void multicast(int num, const int *targets, 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.
int start_process(const BCP_string &exe, const bool debug)
Spawn a new process.
bool alive(const int pid)
Test if the process given by the argument is alive or not.
virtual ~BCP_single_environment()
int register_process(USER_initialize *user_init)
A process can register (receive its process id) with the message passing environment.
bool start_processes(const BCP_string &exe, const int proc_num, const BCP_vec< BCP_string > &machines, const bool debug, int *ids)
Spawn proc_num processes on the machines given by the third argument, all with the same executable.
void receive(const int source, const BCP_message_tag tag, BCP_buffer &buf, const double timeout)
Blocking receive with timeout.
void set_arguments(const int argnum, const char *const *args)
bool start_processes(const BCP_string &exe, const int proc_num, const bool debug, int *ids)
Spawn proc_num processes, all with the same executable.
void send(const int 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.
This class is a very simple impelementation of a constant length string.
Definition: BCP_string.hpp:13
The class BCP_vec serves the same purpose as the vector class in the standard template library.
Definition: BCP_vector.hpp:24
This class is an abstract base class for the initializer class the user has to provide.
Definition: BCP_USER.hpp:160