source: Sophya/trunk/AddOn/TAcq/racqumem.h@ 3592

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

This commit was generated by cvs2svn to compensate for changes in r3537,
which included commits to RCS files with non-trunk default branches.

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.