source: Sophya/trunk/ArchTOIPipe/Kernel/ringprocessor.h@ 4023

Last change on this file since 4023 was 2392, checked in by aubourg, 22 years ago

divers pio

File size: 2.2 KB
Line 
1// This may look like C code, but it is really -*- C++ -*-
2
3// ArchTOIPipe (C) CEA/DAPNIA/SPP IN2P3/LAL
4// Eric Aubourg
5// Christophe Magneville
6// Reza Ansari
7// $Id: ringprocessor.h,v 1.3 2003-05-28 21:03:19 aubourg Exp $
8
9
10
11#ifndef RINGPROCESSOR_H
12#define RINGPROCESSOR_H
13
14
15#include "config.h"
16
17#include <pthread.h>
18#include <string>
19#include <map>
20
21class Ring;
22class RingPipe;
23
24class RingProcessor {
25public:
26 RingProcessor();
27 virtual ~RingProcessor();
28 virtual void init();
29protected:
30 int declareRingInput(string ring);
31 int declareRingOutput(string ring);
32
33 void chkinit() {
34 if (!inited) {init(); afterinit(); inited=true;}
35 }
36 bool inited;
37 virtual void afterinit();
38
39public:
40 virtual void run();
41
42 virtual int getMinRingIndex() {return ringBegin;}
43 virtual int getMaxRingIndex() {return ringEnd;}
44 virtual void setRingRange(int min, int max) {ringBegin=min; ringEnd=max;}
45
46 virtual void addRingInput(string name, RingPipe* ring);
47 virtual void addRingOutput(string name, RingPipe* ring);
48
49 virtual void start();
50 virtual void setName(string n) {name=n;}
51
52 virtual int getWontNeedBefore() {return wontNeedRing;}
53
54 virtual void setNeededRingHistory(int nrings); // -1 : disable
55
56protected:
57 virtual Ring const* getRing(int index, int i); // le ring sera desalloue par le systeme
58 virtual void putRing(int index, int i, Ring const*); // le ring a ete alloue par new, il sera gere
59 // par le systeme.
60
61 RingPipe* getInputRing(int index);
62 RingPipe* getOutputRing(int index);
63 RingPipe* getOutRing(string out);
64 virtual void wontNeedRingBefore(int i);
65 friend class RingPipe;
66 friend class TOIManager;
67 virtual void getRingRange(int& min, int& max);
68
69
70 int ringBegin;
71 int ringEnd;
72 int wontNeedRing;
73 int neededRingHistory;
74
75 void autoWontNeedRing(int iCur);
76 int lastAWNR;
77
78 map<string, int> inRingIx;
79 map<string, int> outRingIx;
80
81 RingPipe** inRings;
82 RingPipe** outRings;
83
84 string name;
85
86 pthread_t thread;
87
88 static void* ThreadStart(void *);
89};
90#endif
Note: See TracBrowser for help on using the repository browser.