StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
ipcQLib.hh
1 #ifndef _IPC_Q_LIB_HH_
2 #define _IPC_Q_LIB_HH_
3 
4 #include <sys/types.h>
5 
6 #include <SUNRT/clock.h>
7 
8 struct msgbuf ;
9 
10 class ipcQClass {
11 public:
12  ipcQClass(int id, int create=1, u_short node_id=0) ;
13  ~ipcQClass() ;
14 
15  void dup(int tsk, int create=1, u_short node_id=0) ; // makes this que be a duplicate for task tsk as well...
16 
17  int send(void *ptr, int bytes, int tmout) ;
18  int receive(void *ptr, int bytes, int tmout) ;
19  int send(struct msgbuf *msg, int bytes, int tmout) ;
20  int receive(struct msgbuf *msg, int bytes, int tmout) ;
21  int peek(void) ;
22 
23  static int remove(int id, u_short node_id=0) ;
24  static ipcQClass *find(u_short node, int task, int crea=0) ;
25 
26  int task ;
27  u_short node ;
28 
29  u_int snd_seq ;
30  u_int rcv_seq ;
31 
32  u_int snd_ticks[4] ; // 0 min, 1 av, 2 max, 3 last
33  u_int rcv_ticks[4] ;
34  u_int msg_ticks[4] ;
35 
36  u_char snd_blocked, rcv_blocked ;
37 
38  static class ipcQClass *daqTasks[256] ; // the index is the task number
39 
40  static struct ipcQStruct {
41  ipcQClass *que ;
42  u_short node ;
43  int task ;
44  } queue_list[256] ; // the index is just a counter
45  static u_int queue_num ; // ...with up to queue_num counts
46 
47 
48 private:
49  static const u_int ticker(void) { return getCpuCycle() ; } ;
50  int ipc_qid ;
51  key_t key ;
52 } ;
53 
54 #endif