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 
52  public:
55  double wait_time_;
56  double integ_time_;
57  double send_time_;
58  char* pickle_ret_;
60  static bool is_master_;
61  static bool started_, done_;
62  static int mytid_;
63  static int debug_;
64  static bool master_works_;
65 
66  protected:
67  char* execute_helper(size_t*, int id, bool exec = true); // involves hoc specific details in
68  // ocbbs.cpp
69  void subworld_worker_execute(); // shadows execute_helper. ie. each of
70  // the nrnmpi_myid_bbs workers (and master) need to execute
71  // the same thing on each of the subworld processes
72  // associated with nrnmpi_myid==0. A subworld does not
73  // intracommunicate via the bulletin board but only via
74  // mpi on the subworld communicator.
75 };
76 
77 #endif
Definition: bbsimpl.h:4
virtual int upkint()=0
int working_id_
Definition: bbsimpl.h:54
virtual bool look_take(const char *)=0
static bool is_master_
Definition: bbsimpl.h:60
virtual void return_args(int userid)
Definition: ocbbs.cpp:1385
double send_time_
Definition: bbsimpl.h:57
static int mytid_
Definition: bbsimpl.h:62
BBSImpl()
Definition: bbs.cpp:92
virtual void post_result(int id)=0
char * execute_helper(size_t *, int id, bool exec=true)
Definition: ocbbs.cpp:1215
static int debug_
Definition: bbsimpl.h:63
virtual void save_args(int userid)=0
int n_
Definition: bbsimpl.h:54
virtual int take_todo()=0
double integ_time_
Definition: bbsimpl.h:56
virtual int submit(int userid)
Definition: bbs.cpp:326
virtual void worker()
Definition: bbs.cpp:426
static bool master_works_
Definition: bbsimpl.h:64
virtual void pkbegin()=0
virtual void pkstr(const char *)=0
virtual void execute(int id)
Definition: bbs.cpp:282
virtual void upkvec(int, double *)=0
static bool started_
Definition: bbsimpl.h:61
int runworker_called_
Definition: bbsimpl.h:53
virtual int look_take_result(int pid)=0
virtual char * upkstr()=0
double wait_time_
Definition: bbsimpl.h:55
virtual void perror(const char *)
Definition: bbs.cpp:162
virtual void pkvec(int, double *)=0
virtual ~BBSImpl()
Definition: bbs.cpp:107
virtual void pkpickle(const char *, size_t)=0
virtual void pkint(int)=0
void subworld_worker_execute()
Definition: subworld.cpp:3
virtual bool is_master()
Definition: bbs.cpp:125
char * pickle_ret_
Definition: bbsimpl.h:58
virtual double time()
Definition: bbs.cpp:133
static bool done_
Definition: bbsimpl.h:61
virtual int look_take_todo()=0
virtual void post_todo(int parentid)=0
virtual bool working(int &id, double &x, int &userid)
Definition: bbs.cpp:364
virtual void post(const char *)=0
virtual void take(const char *)=0
virtual double upkdouble()=0
size_t pickle_ret_size_
Definition: bbsimpl.h:59
virtual bool look(const char *)=0
virtual char * upkpickle(size_t *)=0
virtual void start()
Definition: bbs.cpp:506
virtual void pkdouble(double)=0
virtual void done()
Definition: bbs.cpp:487
virtual void context()
Definition: bbs.cpp:344
virtual int master_take_result(int pid)
Definition: bbs.cpp:359
static double userid(void *v)
Definition: ocbbs.cpp:227