CARMA C++
FrameBuffer.h
Go to the documentation of this file.
1 #ifndef SZA_UTIL_FRAMEBUFFER_H
2 #define SZA_UTIL_FRAMEBUFFER_H
3 
11 #include <vector>
12 #include <map>
13 #include "carma/szautil/Mutex.h"
14 
15 namespace sza {
16  namespace util {
17 
18  class DataFrameManager;
19 
20  class FrameBuffer {
21  public:
22 
26  FrameBuffer(unsigned nFrame);
27 
31  virtual ~FrameBuffer();
32 
39  DataFrameManager* getFrame(unsigned int id, bool create);
40 
45  DataFrameManager* getNextFrame();
46 
54  DataFrameManager* dispatchNextFrame();
55 
59  unsigned int getNframesInQueue();
60 
61  protected:
62 
66  struct FrameBufferSlot {
67  unsigned int id_;
68  DataFrameManager* frame_;
69  struct FrameBufferSlot* next_;
70  };
71 
75  std::vector<struct FrameBufferSlot> slots_;
76 
80  unsigned long nSlot_;
81 
82  private:
83 
87  Mutex guard_;
88 
92  std::map<unsigned int, struct FrameBufferSlot*> frameMap_;
93 
97  struct FrameBufferSlot* nextFreeSlot_;
98 
103  struct FrameBufferSlot* nextSendSlot_;
104 
108  struct FrameBufferSlot* lastSentSlot_;
109 
113  unsigned long nUsed_;
114 
118  struct FrameBufferSlot* findSlot(unsigned int id);
119 
123  struct FrameBufferSlot* getNextSlot();
124 
128  void clearSlot(FrameBufferSlot* slot);
129 
130  }; // End class FrameBuffer
131 
132  } // End namespace util
133 } // End namespace sza
134 
135 #endif // End #ifndef SZA_UTIL_FRAMEBUFFER_H
This is a base class for managing a generic dataframe of registers.
Create a struct that we will use as an internal buffer.
Definition: FrameBuffer.h:66
Tagged: Sat Mar 27 16:28:13 PST 2004.