My Project
 All Classes Files Functions Variables Enumerations Enumerator Friends Macros Pages
PipeQueue.h
Go to the documentation of this file.
1 #ifndef GCP_UTIL_PIPEQUEUE_H
2 #define GCP_UTIL_PIPEQUEUE_H
3 
12 #include "gcp/util/common/Pipe.h"
13 
14 #include <queue>
15 
16 namespace gcp {
17  namespace util {
18 
22  class PipeQueue : public Pipe {
23 
24  public:
25 
26  // A class for handling a single message
27 
28  class QueueNode {
29  public:
30 
31  QueueNode();
32  QueueNode(void* buffer, size_t nbyte);
33 
34  QueueNode(const QueueNode& node);
35  QueueNode(QueueNode& node);
36  void operator=(const QueueNode& node);
37  void operator=(QueueNode& node);
38 
39  ~QueueNode();
40 
41  unsigned nbyte_;
42  unsigned char* buffer_;
43 
44  };
45 
46  // A class for handling a queue of messages
47 
48  class MsgQueue {
49  public:
50 
51  void push(void* buffer, size_t nbyte);
52  void pop(void* buffer, size_t nbyte);
53 
54  private:
55 
56  std::queue<QueueNode> queue_;
57 
58  };
59 
65  PipeQueue();
66 
72  ~PipeQueue();
73 
79  PipeState write(void *buffer, size_t nbyte, long timeout=PIPE_NOWAIT);
80 
86  PipeState read(void *buffer, size_t nbyte, long timeout=PIPE_NOWAIT);
87 
88  public:
89 
90  Mutex queueGuard_;
91  MsgQueue messages_;
92 
93  }; // End class Pipe
94 
95  }; // End namespace util
96 }; // End namespace gcp
97 
98 #endif // PIPE_H
99 
100 
101 
102 
103 
104 
105 
~PipeQueue()
Definition: PipeQueue.cc:30
Definition: PipeQueue.h:28
PipeState write(void *buffer, size_t nbyte, long timeout=PIPE_NOWAIT)
Definition: PipeQueue.cc:80
void push(void *buffer, size_t nbyte)
Definition: PipeQueue.cc:200
Definition: PipeQueue.h:48
Definition: Pipe.h:42
Definition: Mutex.h:16
PipeState read(void *buffer, size_t nbyte, long timeout=PIPE_NOWAIT)
Definition: PipeQueue.cc:36
QueueNode()
Definition: PipeQueue.cc:128
~QueueNode()
Definition: PipeQueue.cc:185
PipeQueue()
Definition: PipeQueue.cc:25
void pop(void *buffer, size_t nbyte)
Definition: PipeQueue.cc:209
Definition: tVideoCapabilitiesEml.cc:67
Definition: PipeQueue.h:22
void operator=(const QueueNode &node)
Definition: PipeQueue.cc:163