NEURON
bbsdirect.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <vector>
4 
5 #include <nrnmpiuse.h>
6 
7 #include "bbsimpl.h"
8 class KeepArgs;
9 #if NRNMPI
10 struct bbsmpibuf;
11 #endif
12 
13 // uses the pvm packing and unpacking functions but calls the
14 // server directly instead of through pvmd send, recv.
15 // i.e. this bbs can only be on the master
16 
17 class BBSDirect: public BBSImpl {
18  public:
20  ~BBSDirect() override;
21 
22  bool look(const char*) override;
23 
24  void take(const char*) override; /* blocks til something to take */
25  bool look_take(const char*) override; /* returns false if nothing to take */
26  // after taking use these
27  int upkint() override;
28  double upkdouble() override;
29  void upkvec(int, double*) override;
30  char* upkstr() override; // delete [] char* when finished
31  std::vector<char> upkpickle() override;
32 
33  // before posting use these
34  void pkbegin() override;
35  void pkint(int) override;
36  void pkdouble(double) override;
37  void pkvec(int, double*) override;
38  void pkstr(const char*) override;
39  void pkpickle(const std::vector<char>&) override;
40  void post(const char*) override;
41 
42  void post_todo(int parentid) override;
43  void post_result(int id) override;
44  int look_take_result(int pid) override; // returns id, or 0 if nothing
45  int master_take_result(int pid) override; // returns id
46  int look_take_todo() override; // returns id, or 0 if nothing
47  int take_todo() override; // returns id
48  void save_args(int) override;
49  void return_args(int) override;
50 
51  void context() override;
52 
53  void start() override;
54  void done() override;
55 
56  void perror(const char*) override;
57 
58  private:
60 #if NRNMPI
61  bbsmpibuf *sendbuf_, *recvbuf_;
62 #endif
63 };
void perror(const char *) override
void pkpickle(const std::vector< char > &) override
std::vector< char > upkpickle() override
KeepArgs * keepargs_
Definition: bbsdirect.h:59
void pkvec(int, double *) override
void pkdouble(double) override
double upkdouble() override
int master_take_result(int pid) override
void pkbegin() override
char * upkstr() override
bool look(const char *) override
void done() override
void start() override
~BBSDirect() override
void post_result(int id) override
void post(const char *) override
void save_args(int) override
void return_args(int) override
void pkint(int) override
void pkstr(const char *) override
int look_take_todo() override
void take(const char *) override
void upkvec(int, double *) override
int upkint() override
int take_todo() override
void post_todo(int parentid) override
void context() override
int look_take_result(int pid) override
bool look_take(const char *) override
Definition: bbsimpl.h:5