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 
44  private:
45  MessageItem* link();
46 
47  private:
48  int type_;
52 };
53 
55  public:
57  virtual ~BBSLocalServer();
58 
59  void post(const char* key, MessageValue*);
60  bool look(const char* key, MessageValue**);
61  bool look_take(const char* key, MessageValue**);
62 
63  void post_todo(int parentid, MessageValue*);
64  void post_result(int id, MessageValue*);
66  int look_take_result(int pid, MessageValue**);
67 
68  private:
73  int next_id_;
74 };
75 
76 #endif
bool look(const char *key, MessageValue **)
Definition: bbslsrv.cpp:296
ResultList * results_
Definition: bbslsrv.h:72
MessageList * messages_
Definition: bbslsrv.h:69
WorkList * work_
Definition: bbslsrv.h:70
ReadyList * todo_
Definition: bbslsrv.h:71
void post_result(int id, MessageValue *)
Definition: bbslsrv.cpp:348
int next_id_
Definition: bbslsrv.h:73
void post_todo(int parentid, MessageValue *)
Definition: bbslsrv.cpp:331
virtual ~BBSLocalServer()
Definition: bbslsrv.cpp:262
int look_take_result(int pid, MessageValue **)
Definition: bbslsrv.cpp:386
void post(const char *key, MessageValue *)
Definition: bbslsrv.cpp:318
bool look_take(const char *key, MessageValue **)
Definition: bbslsrv.cpp:274
int look_take_todo(MessageValue **)
Definition: bbslsrv.cpp:362
size_t size_
Definition: bbslsrv.h:17
MessageItem * next_
Definition: bbslsrv.h:15
int type_
Definition: bbslsrv.h:16
virtual ~MessageItem()
Definition: bbslsrv.cpp:117
char * s
Definition: bbslsrv.h:22
double d
Definition: bbslsrv.h:20
double * pd
Definition: bbslsrv.h:21
union MessageItem::@45 u
int pkdouble(double)
Definition: bbslsrv.cpp:168
int upkdouble(double *)
Definition: bbslsrv.cpp:212
int pkint(int)
Definition: bbslsrv.cpp:161
int upkstr(char *)
Definition: bbslsrv.cpp:233
int upkint(int *)
Definition: bbslsrv.cpp:203
MessageItem * last_
Definition: bbslsrv.h:50
int upkvec(int, double *)
Definition: bbslsrv.cpp:221
MessageItem * first_
Definition: bbslsrv.h:49
MessageItem * link()
Definition: bbslsrv.cpp:145
int type_
Definition: bbslsrv.h:48
MessageItem * unpack_
Definition: bbslsrv.h:51
int upkpickle(char *, size_t *)
Definition: bbslsrv.cpp:242
virtual ~MessageValue()
Definition: bbslsrv.cpp:137
int pkpickle(const char *, size_t)
Definition: bbslsrv.cpp:194
int pkstr(const char *)
Definition: bbslsrv.cpp:186
int pkvec(int, double *)
Definition: bbslsrv.cpp:175
void init_unpack()
Definition: bbslsrv.cpp:157
#define key
Definition: spt2queue.cpp:20