00001
00002
00003 #ifndef Collector_h
00004 #define Collector_h
00005
00006 #include "Node.h"
00007 #include "Exception.h"
00008 #include <map>
00009
00010 namespace FD {
00011
00012 class Collector : public Node
00013 {
00014
00015 public:
00016
00018 Collector(std::string nodeName, ParameterSet params);
00019
00022 virtual void initialize();
00023
00026 virtual ObjectRef getOutput(int output_id, int count);
00027
00029 virtual ObjectRef getOutputNamed (const std::string &outputName, int count);
00030
00031
00033 virtual bool hasOutput(int output_id) const;
00034
00035 virtual void request(int outputID, const ParameterSet &req) {inputs[outputID].node->request(inputs[outputID].outputID,req);}
00036
00037 virtual void requestAll(const ParameterSet &req)
00038 {
00039 for (int i=0;i<inputs.size();i++)
00040 inputs[i].node->request(inputs[i].outputID,req);
00041 }
00042
00043 protected:
00045 virtual int translateInput(std::string inputName);
00046
00048 virtual int translateOutput(std::string inputName);
00049
00050 protected:
00052 Collector() {throw new GeneralException("Collector default constructor should not be called",__FILE__,__LINE__);}
00053
00054 };
00055 }
00056 #endif