#include "BDPipeline.h"
#include "BDProcessor.h"

#include <MinosObjectMap/MomNavigator.h>
#include <RawData/RawRecord.h>
#include <RawData/RawDataBlock.h>
#include <RawData/RawBeamMonHeaderBlock.h>
#include <RawData/RawBeamMonBlock.h>


using namespace std;

BDPipeline::BDPipeline()
{
}

BDPipeline::~BDPipeline()
{
    while (fPipe.size()) {
	delete fPipe.back();
	fPipe.pop_back();
    }
}


void BDPipeline::SetSpill(const RawBeamMonHeaderBlock& rbmhb,
			  const RawBeamMonBlock& rbmb)
{
    fPayloadBlock = &rbmb;
    fHeaderBlock = &rbmhb;

    size_t siz = fPipe.size();
    for (size_t ind=0; ind<siz; ++ind) {
	fPipe[ind]->SetSpill(*fHeaderBlock,*fPayloadBlock);
    }
}

const RawBeamMonHeaderBlock* BDPipeline::GetHeaderBlock() const
{
    return fHeaderBlock;
}

const RawBeamMonBlock* BDPipeline::GetPayloadBlock() const
{
    return fPayloadBlock;
}
BDPipeline::ProcessPipeline& BDPipeline::GetProcessPipeline() 
{
    return fPipe;
}
