• Main Page
  • Packages
  • Classes
  • Files
  • File List
  • File Members

unlock/bci/acquire-c++/AsyncSampleCollector.hpp

Go to the documentation of this file.
00001 #ifndef ASYNC_SAMPLE_COLLECTOR_HPP
00002 #define ASYNC_SAMPLE_COLLECTOR_HPP
00003 
00004 #include <boost/lockfree/spsc_queue.hpp>
00005 #include <boost/atomic.hpp>
00006 #include <cstddef>
00007 
00008 #include "ISignal.hpp"
00009 #include "Sample.hpp"
00010 #include "SampleBuffer.hpp"
00011 #include "IWorkController.hpp"
00012 #include "Portability.hpp"
00013 
00014 using namespace boost;
00015 using namespace boost::lockfree;
00016 
00017 class DllExport AsyncSampleCollector
00018 {
00019  public:
00020   AsyncSampleCollector(ISignal* pSignal, lockfree::spsc_queue<Sample<uint32_t> >* pQueue,
00021                        IWorkController* pWorkController, Sample<uint32_t>* pSamples,
00022                        size_t samplesSize, SampleBuffer<uint32_t>* pRingBuffer);
00023   AsyncSampleCollector(const AsyncSampleCollector& copy);
00024   virtual ~AsyncSampleCollector();
00025   
00026  public:
00027   size_t currentSample() const;
00028   void  incrementCurrentSample();
00029 
00030  public:
00031   AsyncSampleCollector& operator=(const AsyncSampleCollector& rhs);
00032   bool operator==(const AsyncSampleCollector& rhs) const;
00033   bool operator!=(const AsyncSampleCollector& rhs) const;  
00034   void operator()();
00035   
00036  private:
00037   ISignal* mpSignal;
00038   spsc_queue<Sample<uint32_t> >* mpQueue;
00039   IWorkController* mpWorkController;
00040   Sample<uint32_t>* mpSamples;
00041   size_t mSamplesSize;
00042   size_t mCurrentSample;
00043   SampleBuffer<uint32_t>* mpRingBuffer;
00044 };
00045 
00046 #endif

Generated on Mon Nov 10 2014 11:09:07 for The Unlock Project by  doxygen 1.7.1