NEURON
bbsimpl.h
Go to the documentation of this file.
1 #ifndef bbsimpl_h
2 #define bbsimpl_h
3 
4 class BBSImpl {
5 public:
6  BBSImpl();
7  virtual ~BBSImpl();
8 
9  virtual bool look(const char*) = 0;
10 
11  virtual void take(const char*) = 0; /* blocks til something to take */
12  virtual bool look_take(const char*) = 0; /* returns false if nothing to take */
13  // after taking use these
14  virtual int upkint() = 0;
15  virtual double upkdouble() = 0;
16  virtual void upkvec(int, double*) = 0;
17  virtual char* upkstr() = 0; // delete [] char* when finished
18  virtual char* upkpickle(size_t*) = 0; // delete [] char* when finished
19 
20  // before posting use these
21  virtual void pkbegin() = 0;
22  virtual void pkint(int) = 0;
23  virtual void pkdouble(double) = 0;
24  virtual void pkvec(int, double*) = 0;
25  virtual void pkstr(const char*) = 0;
26  virtual void pkpickle(const char*, size_t) = 0;
27  virtual void post(const char*) = 0;
28 
29  virtual void post_todo(int parentid) = 0;
30  virtual void post_result(int id) = 0;
31  virtual int look_take_result(int pid) = 0; // returns id, or 0 if nothing
32  virtual int master_take_result(int pid); // returns id
33  virtual int look_take_todo() = 0; // returns id, or 0 if nothing
34  virtual int take_todo() = 0; // returns id
35  virtual void save_args(int userid) = 0;
36  virtual void return_args(int userid);
37 
38  virtual void execute(int id); // assumes a "todo" message in receive buffer
39  virtual int submit(int userid);
40  virtual bool working(int &id, double& x, int& userid);
41  virtual void context();
42 
43  virtual void start();
44  virtual void done();
45 
46  virtual void worker(); // forever execute
47  virtual bool is_master();
48  virtual double time();
49 
50  virtual void perror(const char*);
51 public:
54  double wait_time_;
55  double integ_time_;
56  double send_time_;
57  char* pickle_ret_;
59  static bool is_master_;
60  static bool started_, done_;
61  static int mytid_;
62  static int debug_;
63  static bool master_works_;
64 protected:
65  char* execute_helper(size_t*, int id, bool exec=true); // involves hoc specific details in ocbbs.cpp
66  void subworld_worker_execute(); //shadows execute_helper. ie. each of
67  // the nrnmpi_myid_bbs workers (and master) need to execute
68  // the same thing on each of the subworld processes
69  // associated with nrnmpi_myid==0. A subworld does not
70  // intracommunicate via the bulletin board but only via
71  // mpi on the subworld communicator.
72 };
73 
74 #endif
static bool is_master_
Definition: bbsimpl.h:59
virtual int upkint()=0
static double userid(void *v)
Definition: ocbbs.cpp:225
virtual int look_take_todo()=0
virtual void done()
Definition: bbs.cpp:484
size_t pickle_ret_size_
Definition: bbsimpl.h:58
virtual int look_take_result(int pid)=0
double integ_time_
Definition: bbsimpl.h:55
double send_time_
Definition: bbsimpl.h:56
static int mytid_
Definition: bbsimpl.h:61
virtual void start()
Definition: bbs.cpp:500
virtual int submit(int userid)
Definition: bbs.cpp:328
static bool master_works_
Definition: bbsimpl.h:63
virtual ~BBSImpl()
Definition: bbs.cpp:107
virtual void pkstr(const char *)=0
virtual void execute(int id)
Definition: bbs.cpp:283
virtual double time()
Definition: bbs.cpp:133
virtual void pkvec(int, double *)=0
virtual void post(const char *)=0
virtual char * upkstr()=0
virtual int take_todo()=0
static int debug_
Definition: bbsimpl.h:62
int working_id_
Definition: bbsimpl.h:53
int runworker_called_
Definition: bbsimpl.h:52
virtual void pkpickle(const char *, size_t)=0
virtual void return_args(int userid)
Definition: ocbbs.cpp:1308
virtual void save_args(int userid)=0
virtual void pkbegin()=0
virtual void context()
Definition: bbs.cpp:346
BBSImpl()
Definition: bbs.cpp:92
int n_
Definition: bbsimpl.h:53
void subworld_worker_execute()
Definition: subworld.cpp:3
virtual void perror(const char *)
Definition: bbs.cpp:162
Definition: bbsimpl.h:4
virtual void post_result(int id)=0
virtual bool look(const char *)=0
virtual void pkdouble(double)=0
virtual void take(const char *)=0
virtual bool working(int &id, double &x, int &userid)
Definition: bbs.cpp:366
virtual int master_take_result(int pid)
Definition: bbs.cpp:361
static bool started_
Definition: bbsimpl.h:60
virtual void post_todo(int parentid)=0
virtual double upkdouble()=0
virtual void pkint(int)=0
char * pickle_ret_
Definition: bbsimpl.h:57
virtual bool is_master()
Definition: bbs.cpp:125
virtual bool look_take(const char *)=0
static bool done_
Definition: bbsimpl.h:60
double wait_time_
Definition: bbsimpl.h:54
virtual void upkvec(int, double *)=0
virtual void worker()
Definition: bbs.cpp:423
char * execute_helper(size_t *, int id, bool exec=true)
Definition: ocbbs.cpp:1140
virtual char * upkpickle(size_t *)=0