source: Sophya/trunk/Poubelle/archTOI.old/toiproducer.h@ 555

Last change on this file since 555 was 555, checked in by ansari, 26 years ago

portage cxx en cours

File size: 2.6 KB
RevLine 
[534]1// toiproducer.h
2// Eric Aubourg CEA/DAPNIA/SPP septembre 1999
3
4#ifndef TOIPRODUCER_H
5#define TOIPRODUCER_H
6
7#include <set>
8#include <map>
9#include <deque>
10
11using namespace std;
12
13#include "toi.h"
14#include "ark.h"
15
16class TOIAbsorber;
17class RequestHandler;
18
19class TOIProducer {
20public:
21 TOIProducer() {}
22 virtual ~TOIProducer() {}
23
24 virtual bool canProduce(TOI const&);
25 virtual bool isProducing(TOI const&);
26 virtual void addTOI(TOI &, TOIAbsorber* client); // exception si pas productible
27 virtual bool canGetValue(long sampleNum, TOI const& toi); // for this samplenum
28 virtual bool canGetPrevValue(long sampleNum, TOI const& toi);
29 virtual bool canGetNextValue(long sampleNum, TOI const& toi);
30 virtual bool canGetValueLater(long sampleNum, TOI const& toi); // Might, later but not now
31
32 virtual double getPrevValue(long& sampleNum, TOI const& toi);
33 virtual double getNextValue(long& sampleNum, TOI const& toi);
34 virtual double getValue(long sampleNum, TOI const& toi);
35
36 virtual long firstSampleNum(TOI const&);
37 virtual long lastSampleNum(TOI const&);
38
39 virtual long wontNeedEarlier(TOI const&, TOIAbsorber* client, long);
40
41 virtual set<string> getAvailOptions(TOI const&);
42 virtual set<string> getProperAvailOptions(TOI const&);
43
44 virtual void outManifest(RequestHandler*);
45 virtual void outVersion(RequestHandler*);
46 virtual string getName();
47
48 set<TOI> getPossibleTOIs() {return possibleTOIs;}
49
50
51protected:
52 virtual void computedValue(TOI const& toi, long sampleNum, double value);
53
54 set<TOI> possibleTOIs;
55 set<TOI> producedTOIs;
56 map<TOIAbsorber*, set<TOI> > clients;
57 //map<TOI, map<TOIAbsorber*, long> > lastNeededSample;
58 //map<TOI, deque<pair<long, double> > > history;
59 map<int, map<TOIAbsorber*, long> > lastNeededSample;
60 map<int, deque<pair<long, double> > > history;
61
[555]62 deque<pair<long, double> >::const_iterator findHistL(TOI const& toi, long sampleNum);
63 deque<pair<long, double> >::const_iterator findHistL(deque<pair<long, double> >& h, long sampleNum);
64 deque<pair<long, double> >::const_iterator findHistH(TOI const& toi, long sampleNum);
65 deque<pair<long, double> >::const_iterator findHistH(deque<pair<long, double> >& h, long sampleNum);
[534]66};
67
68class ArchFileSet;
69class TOILowLevProducer : public TOIProducer {
70public:
71 virtual void handleBlock(ArchFileSet*)=0; // push !
72 virtual void addTOI(TOI &, TOIAbsorber* client); // exception si pas productible
73};
74
75//#define CHKPROD if (!isProducing(toi)) throw ArchExc("Not producing " + toi.name);
76#define CHKPROD toi;
77
78
79#endif
Note: See TracBrowser for help on using the repository browser.