NEURON
bbslsrv.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <string>
4 #include <variant>
5 #include <vector>
6 
7 #include <InterViews/resource.h>
8 
9 class MessageList;
10 class WorkList;
11 class ReadyList;
12 class ResultList;
13 
14 using MessageItem = std::variant<int, double, std::vector<double>, std::vector<char>, std::string>;
15 
16 class MessageValue: public Resource {
17  public:
18  void init_unpack();
19  // following return 0 if success, -1 if failure
20  int upkint(int*);
21  int upkdouble(double*);
22  int upkvec(int, double*);
23  int upkstr(char*);
24  int upkpickle(std::vector<char>&);
25 
26  int pkint(int);
27  int pkdouble(double);
28  int pkvec(int, double*);
29  int pkstr(const char*);
30  int pkpickle(const std::vector<char>&);
31 
32  private:
33  std::vector<MessageItem> args_{};
34  std::size_t index_{};
35 };
36 
38  public:
40  virtual ~BBSLocalServer();
41 
42  void post(const char* key, MessageValue*);
43  bool look(const char* key, MessageValue**);
44  bool look_take(const char* key, MessageValue**);
45 
46  void post_todo(int parentid, MessageValue*);
47  void post_result(int id, MessageValue*);
49  int look_take_result(int pid, MessageValue**);
50 
51  private:
56  int next_id_;
57 };
std::variant< int, double, std::vector< double >, std::vector< char >, std::string > MessageItem
Definition: bbslsrv.hpp:14
bool look(const char *key, MessageValue **)
Definition: bbslsrv.cpp:205
ResultList * results_
Definition: bbslsrv.hpp:55
MessageList * messages_
Definition: bbslsrv.hpp:52
WorkList * work_
Definition: bbslsrv.hpp:53
ReadyList * todo_
Definition: bbslsrv.hpp:54
void post_result(int id, MessageValue *)
Definition: bbslsrv.cpp:244
void post_todo(int parentid, MessageValue *)
Definition: bbslsrv.cpp:231
virtual ~BBSLocalServer()
Definition: bbslsrv.cpp:177
int look_take_result(int pid, MessageValue **)
Definition: bbslsrv.cpp:275
void post(const char *key, MessageValue *)
Definition: bbslsrv.cpp:223
bool look_take(const char *key, MessageValue **)
Definition: bbslsrv.cpp:187
int look_take_todo(MessageValue **)
Definition: bbslsrv.cpp:256
std::size_t index_
Definition: bbslsrv.hpp:34
int pkdouble(double)
Definition: bbslsrv.cpp:96
int upkdouble(double *)
Definition: bbslsrv.cpp:128
int pkpickle(const std::vector< char > &)
Definition: bbslsrv.cpp:111
int pkint(int)
Definition: bbslsrv.cpp:91
int upkstr(char *)
Definition: bbslsrv.cpp:148
int upkint(int *)
Definition: bbslsrv.cpp:116
int upkvec(int, double *)
Definition: bbslsrv.cpp:137
int upkpickle(std::vector< char > &)
Definition: bbslsrv.cpp:160
std::vector< MessageItem > args_
Definition: bbslsrv.hpp:33
int pkstr(const char *)
Definition: bbslsrv.cpp:106
int pkvec(int, double *)
Definition: bbslsrv.cpp:101
void init_unpack()
Definition: bbslsrv.cpp:87
#define key
Definition: tqueue.hpp:45