NEURON
bbslsrv.h
Go to the documentation of this file.
1 #ifndef bbslsrv_h
2 #define bbslsrv_h
3 
4 #include <InterViews/resource.h>
5 
6 class MessageList;
7 class WorkList;
8 class ReadyList;
9 class ResultList;
10 
11 class MessageItem {
12 public:
13  MessageItem();
14  virtual ~MessageItem();
16  int type_;
17  size_t size_; // for pickle type
18  union {
19  int i;
20  double d;
21  double* pd;
22  char* s;
23  }u;
24 };
25 
26 class MessageValue : public Resource {
27 public:
28  MessageValue();
29  virtual ~MessageValue();
30  void init_unpack();
31  // following return 0 if success, -1 if failure
32  int upkint(int*);
33  int upkdouble(double*);
34  int upkvec(int, double*);
35  int upkstr(char*);
36  int upkpickle(char*, size_t*);
37 
38  int pkint(int);
39  int pkdouble(double);
40  int pkvec(int, double*);
41  int pkstr(const char*);
42  int pkpickle(const char*, size_t);
43 private:
44  MessageItem* link();
45 private:
46  int type_;
50 };
51 
53 public:
55  virtual ~BBSLocalServer();
56 
57  void post(const char* key, MessageValue*);
58  bool look(const char* key, MessageValue**);
59  bool look_take(const char* key, MessageValue**);
60 
61  void post_todo(int parentid, MessageValue*);
62  void post_result(int id, MessageValue*);
63  int look_take_todo(MessageValue**);
64  int look_take_result(int pid, MessageValue**);
65 private:
70  int next_id_;
71 };
72 
73 #endif
ReadyList * todo_
Definition: bbslsrv.h:68
static double look_take(void *v)
Definition: ocbbs.cpp:468
int type_
Definition: bbslsrv.h:46
int next_id_
Definition: bbslsrv.h:70
WorkList * work_
Definition: bbslsrv.h:67
MessageList * messages_
Definition: bbslsrv.h:66
static const char ** upkstr(void *v)
Definition: ocbbs.cpp:362
MessageItem * next_
Definition: bbslsrv.h:15
char * s
Definition: bbslsrv.h:22
ResultList * results_
Definition: bbslsrv.h:69
MessageItem * first_
Definition: bbslsrv.h:47
size_t size_
Definition: bbslsrv.h:17
MessageItem * unpack_
Definition: bbslsrv.h:49
union MessageItem::@60 u
#define key
Definition: spt2queue.cpp:20
virtual ~MessageItem()
Definition: bbslsrv.cpp:117
double * pd
Definition: bbslsrv.h:21
static Object ** upkvec(void *v)
Definition: ocbbs.cpp:371
double d
Definition: bbslsrv.h:20
static double look(void *v)
Definition: ocbbs.cpp:458
int type_
Definition: bbslsrv.h:16
static void post(HCONV hc, const char *name)
Definition: ddeclnt.cpp:166
MessageItem * last_
Definition: bbslsrv.h:48