source: Sophya/branches/Reza/AddOn/TAcq/racqumem.h@ 3537

Last change on this file since 3537 was 3537, checked in by ansari, 17 years ago

Ajout du module AddOn/TAcq (programmes test pour acquisition BAORadio) ds cvs sophya (sous-repertoire AddOn/) , Reza 22/10/2008

File size: 2.1 KB
RevLine 
[3537]1#ifndef RACQUMEM_H_SEEN
2#define RACQUMEM_H_SEEN
3
4//----------------------------------------------------------------
5// ---- classes de gestion memoire pour acquisition BAORadio -----
6// LAL - R. Ansari - Juin/Juillet 2008
7//----------------------------------------------------------------
8
9
10#include "machdefs.h"
11#include <string>
12#include <vector>
13#include <iostream>
14#include "sopnamsp.h"
15#include "zthread.h"
16
17#include "brtypes.h"
18
19using namespace std;
20
21// Structure de gestion utilisee par la classe RAcqMemMgr
22typedef struct {
23 uint_4 act;
24 uint_4 stat;
25 uint_4 nbact[3];
26// int tid;
27} St_MemZ;
28
29enum MemZStatus { MemZS_Free=0, MemZS_Filled=1, MemZS_Saved=2, MemZS_Proc=4 };
30enum MemZaction { MemZA_None=0, MemZA_Fill=1, MemZA_Save=2, MemZA_Proc=4};
31
32// -------------------------------------------------------------------
33// Structure de gestion de zones memoire partagee (des vecteurs) entre
34// threads - qui doivent operer successivement sur les vecteurs
35// -------------------------------------------------------------------
36class RAcqMemZoneMgr {
37public:
38// Constructeur, nz=Nb de zones, np=Nb de paquets/zone , psz=taille de paquet
39 RAcqMemZoneMgr(uint_4 nz, uint_4 np=1000, uint_4 psz=4096);
40 ~RAcqMemZoneMgr();
41
42 // Retourne le nombre de zones memoire
43 inline uint_4 NbZones() { return nzones; }
44 // Retourne la taille de paquet
45 inline uint_4 PaqSize() { return paqsz; }
46 // Retourne le nb de paquets dans une zone
47 inline uint_4 NbPaquets() { return npaq; }
48 // Retourne la taille totale d'une zone
49 inline uint_4 ZoneSize() { return npaq*paqsz; }
50
51 // Retourne un MemZone disponible pour une action specifique
52 int FindMemZoneId(MemZaction act);
53 // Libere une zone memoire en marquant son etat
54 int FreeMemZone(int id, MemZStatus st);
55 // Retourne le pointeur de la zone numero k
56 inline Byte* GetMemZone(int id) {
57 if ((id < 0) || (id >= memzones.size())) return NULL;
58 return memzones[id];
59 }
60
61 ostream& Print(ostream& os);
62 void Stop();
63
64protected:
65 // ... variables membres
66 ZMutex mex;
67 uint_4 nzones, npaq, paqsz;
68 vector< Byte* > memzones;
69 vector< St_MemZ > states;
70 bool stop_;
71};
72
73
74
75
76#endif
Note: See TracBrowser for help on using the repository browser.