1 #ifndef CARMA_PIPELINE_PUBLISHERSTAGE_H
2 #define CARMA_PIPELINE_PUBLISHERSTAGE_H
5 #include "carma/pipeline/pipelineUtils.h"
7 #include "carma/util/ConcurrentQueue.h"
8 #include "carma/util/PthreadMutex.h"
9 #include "carma/util/SimpleStatisticsAccumulators.h"
10 #include "carma/util/ThreadQuit.h"
12 #include <boost/shared_ptr.hpp>
17 namespace correlator {
22 namespace obsRecord2 {
23 class CorbaCorrProducer;
28 class PipelineSubsystem;
43 const std::string & channelName,
44 const std::string & servedObjectName,
45 carma::pipeline::PipelineType plType );
52 void preprocess( carma::correlator::lib::CorrelatorDataPtr cd );
56 carma::correlator::lib::CorrelatorDataPtr
57 postprocess( carma::correlator::lib::CorrelatorDataPtr cd );
59 void fillMonitorData( );
61 static void publishCorrDataThread(
Publisher & This );
63 class PublishCorrDataTQRH :
64 public carma::util::ThreadQuitRequestHandler {
67 explicit PublishCorrDataTQRH(
Publisher & mom );
69 virtual ~PublishCorrDataTQRH( );
71 void HandleQuitRequest( ::pthread_t thread );
78 struct PublishRequest {
79 carma::correlator::lib::CorrelatorDataPtr data;
82 typedef carma::util::ConcurrentQueue<PublishRequest> PublishQueue;
87 carma::util::FloatStatAccumulator corbaSendTimeAcc;
88 float lastCorbaSendMillis;
89 float lastCorbaSendKilobytes;
93 PublishQueue publishRequestQueue_;
98 typedef ::boost::shared_ptr< CorrProducer > CorrProducerPtr;
99 typedef ::std::map< int, CorrProducerPtr > CorrProducerMap;
101 CorrProducerMap corrProducers_;
102 ::pthread_t publisherThreadId_;
104 const PublishQueue::size_type maxQueueRequests_;
Base interface for a correlator pipeline stage.
Class to hold a Band of Correlator Data.
Implements interface for serving correlator data using CORBA.
Tagged: Wed Jun 29 11:00:27 PDT 2005.
Class used to publish Correlator Data and send data out via a notification channel.
Abstract base class for retrieving pipeline monitor system components common between the spectral lin...
Publisher(carma::monitor::PipelineSubsystem &monitor, const std::string &channelName, const std::string &servedObjectName, carma::pipeline::PipelineType plType)
Constructor.
A simple wrapper class that makes use of ::pthread_mutex_t easier in a C++ world. ...
virtual ~Publisher()
Destructor.