NEURON
bbsrcli.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <nrnmpiuse.h>
4 #include "bbsimpl.h"
5 class KeepArgs;
6 struct bbsmpibuf;
7 
8 class BBSClient: public BBSImpl { // implemented as PVM Client
9  public:
11  ~BBSClient() override;
12 
13  bool look(const char*) override;
14 
15  void take(const char*) override; /* blocks til something to take */
16  bool look_take(const char*) override; /* returns false if nothing to take */
17  // after taking use these
18  int upkint() override;
19  double upkdouble() override;
20  void upkvec(int, double*) override;
21  char* upkstr() override; // delete [] char* when finished
22  std::vector<char> upkpickle() override;
23 
24  // before posting use these
25  void pkbegin() override;
26  void pkint(int) override;
27  void pkdouble(double) override;
28  void pkvec(int, double*) override;
29  void pkstr(const char*) override;
30  void pkpickle(const std::vector<char>&) override;
31  void post(const char*) override;
32 
33  void post_todo(int parentid) override;
34  void post_result(int id) override;
35  int look_take_result(int pid) override; // returns id, or 0 if nothing
36  int look_take_todo() override; // returns id, or 0 if nothing
37  int take_todo() override; // returns id
38  void save_args(int) override;
39  void return_args(int) override;
40 
41  void start() override;
42  void done() override;
43 
44  void perror(const char*) override;
45 
46  private:
47  int get(const char* key, int type); // return type
48  int get(int key, int type); // return type
49  int get(int type); // return type
50  private:
51  static int sid_;
53 #if NRNMPI
54  void upkbegin();
55  char* getkey();
56  int getid();
57  bbsmpibuf *sendbuf_, *recvbuf_, *request_;
58 #endif
59 };
void pkstr(const char *) override
void return_args(int) override
double upkdouble() override
int upkint() override
std::vector< char > upkpickle() override
int take_todo() override
void post_result(int id) override
bool look(const char *) override
char * upkstr() override
static int sid_
Definition: bbsrcli.h:51
int get(const char *key, int type)
void post_todo(int parentid) override
void pkvec(int, double *) override
void save_args(int) override
~BBSClient() override
void perror(const char *) override
int get(int type)
void pkbegin() override
int look_take_result(int pid) override
void pkint(int) override
void done() override
int look_take_todo() override
void start() override
int get(int key, int type)
void upkvec(int, double *) override
KeepArgs * keepargs_
Definition: bbsrcli.h:52
void pkpickle(const std::vector< char > &) override
void pkdouble(double) override
void post(const char *) override
void take(const char *) override
bool look_take(const char *) override
Definition: bbsimpl.h:5
#define key
Definition: tqueue.hpp:45
short type
Definition: cabvars.h:10