The DejaVU Framework -- hush 3.1

include: professional-program-21-PacketBuffer-PacketBuffer.h /cygdrive/d/www/media


- [up] [top] - index make include source logic grammar scripts html configure mx slides talks scenes reports projects
<body bgcolor="#FFFFFF" text="#000000">

include 
include 
using std::queue;

template 
<h4 align=right text=red> PacketBuffer</h4><hr>
  class PacketBuffer
{
 public:
  //
  // If maxSize is non-positive, the size is unlimited.
  // Otherwise only maxSize packets are allowed in
  // the buffer at any one time.
  //
  PacketBuffer(int maxSize = -1);

  //
  // Stores the packet in the buffer.
  // Throws overflow_error is the buffer is full.
  //
  void bufferPacket(const T& packet);

  //
  // Returns the next packet. Throws out_of_range
  // if the buffer is empty.
  //
  T getNextPacket() throw (std::out_of_range);

 protected:
  queue mPackets;
  int mMaxSize;

 private:
  // prevent assignment and pass-by-value
  PacketBuffer(const PacketBuffer& src);
  PacketBuffer& operator=(const PacketBuffer& rhs);
};
<hr>


template 
PacketBuffer::PacketBuffer(int maxSize)
{
  mMaxSize = maxSize;
}

template 
void PacketBuffer::bufferPacket(const T& packet)
{
  if (mMaxSize > 0 && mPackets.size() == static_cast(mMaxSize)) {
    // No more space. Just drop the packet.
    return;
  }

  mPackets.push(packet);
}

template 
T PacketBuffer::getNextPacket() throw (std::out_of_range)
{
  if (mPackets.empty()) {
    throw (std::out_of_range("Buffer is empty"));
  }
  // retrieve the head element
  T temp = mPackets.front();
  // pop the head element
  mPackets.pop();
  // return the head element
  return (temp);
}
<hr> <style type="text/css"> div.mainnavigate { margin: 20px 2px; /* background-color: #ffffff; */ border: 1px solid black; } </style> <div class=xnavigate> [] <black>readme</black> course(s) preface <black>I</black> 1 2 <black>II</black> 3 4 <black>III</black> 5 6 7 <black>IV</black> 8 9 10 <black>V</black> 11 12 afterthought(s) <black>appendix</black> reference(s) example(s) <black>resource(s)</black> _ </div> <hr>

(C) Æliens 20/2/2008

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author. </div> <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-2780434-1"; urchinTracker(); </script> </body> </html> <hr> <hr> <table cellpadding=10> <tr> <td> <address> Hush Online Technology </address> hush@cs.vu.nl <br>10/19/08 </td><td> </td> <td></td><td></td><td></td><td></td><td></td><td></td><td></td> <td> </td> </tr> </table>