00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef _RGEDDEI_ABSTRACTPROCESSOR_H
00012 #define _RGEDDEI_ABSTRACTPROCESSOR_H
00013
00014 #ifdef __GEDDEI_BUILD
00015 #include "processor.h"
00016 #include "abstractprocessorport.h"
00017 #else
00018 #include <geddei/processor.h>
00019 #include <rgeddei/abstractprocessorport.h>
00020 #endif
00021 using namespace Geddei;
00022 using namespace rGeddei;
00023
00024 namespace Geddei
00025 {
00026 class SubProcessor;
00027 }
00028
00029 namespace rGeddei
00030 {
00031
00032 class LocalProcessor;
00033 class RemoteProcessor;
00034 class LocalDomProcessor;
00035 class RemoteDomProcessor;
00036 class LocalSession;
00037 class RemoteSession;
00038 class AbstractProcessor;
00039 class AbstractProcessorGroup;
00040
00060 class AbstractProcessor
00061 {
00062 AbstractProcessorGroup *theGroup;
00063
00064 protected:
00073 virtual void doInit(const QString &name, AbstractProcessorGroup *g, const Properties &p) = 0;
00074
00079 AbstractProcessor() : theGroup(0) {}
00080
00081 public:
00094 void setGroup(AbstractProcessorGroup &g);
00095
00108 void setNoGroup();
00109
00118 virtual const bool go() = 0;
00119
00132 virtual const Processor::ErrorType waitUntilGoing(int *errorData = 0) = 0;
00133
00140 virtual void waitUntilDone() = 0;
00141
00148 virtual void stop() = 0;
00149
00156 virtual void reset() = 0;
00157
00166 virtual void split(const uint sourceIndex) = 0;
00167
00176 virtual void share(const uint sourceIndex) = 0;
00177
00199 virtual const bool connect(const uint sourceIndex, const RemoteProcessor *sink, const uint sinkIndex, const uint bufferSize = 1) = 0;
00200
00222 virtual const bool connect(const uint sourceIndex, const LocalProcessor *sink, const uint sinkIndex, const uint bufferSize = 1) = 0;
00223
00233 virtual void disconnect(const uint sourceIndex) = 0;
00234
00240 virtual void disconnectAll() = 0;
00241
00250 virtual const QString name() const = 0;
00251
00261 void init(const QString &name, AbstractProcessorGroup &g, const Properties &p = Properties()) { doInit(name, &g, p); }
00262
00276 void init(const QString &name = "", const Properties &p = Properties()) { doInit(name, 0, p); }
00277
00288 AbstractProcessorPort operator[](const uint port) { return AbstractProcessorPort(this, port); }
00289
00320 static LocalProcessor *create(LocalSession &session, Processor &processor);
00321
00341 static LocalProcessor *create(LocalSession &session, Processor *processor);
00342
00353 static LocalProcessor *create(LocalSession &session, const QString &type);
00354
00365 static RemoteProcessor *create(RemoteSession &session, const QString &type);
00366
00367 virtual ~AbstractProcessor() {}
00368 };
00369
00370 };
00371
00372 #endif