Pytanie : Projekt zagadnienie, data od /proc

Cześć,

This być

Ok tutaj ono być. I próbować a. c. ++ program który iść zdjęcie the /proc filesystem. Do tej pory I pisać parser parse do tej pory pid dir. The zdjęcie wtedy być klasa inclosing the proc struktura który I próbować.

[ProcInfo]
  |-----1312--[Dir]
  |                   |
  |                   |---smap--[Kartoteka]
  |                   |                   |--RSS--[Dane]
  |                   |                   |--USS--[Dane]
  |                   |                   |--PSS--[Dane]
  |                   |---cmdline--[Kartoteka]
  |                   |                    |--cmd--[Dane]
  |                   |---sieć--[Dir]
  |                                  |---sockstat6--[Kartoteka]
  |                                  |                         |--TCP6--[Dane]
  |---meminfo--[Kartoteka]
                         |---memtotal--[Dane]

[ProcInfo] =A klasowy proc che musieć the wirtualny zdjęcie class
[Dir] =A klasa dir w proc che musieć the wirtualny zdjęcie class
[Kartoteka] =A klasa kartoteka w proc che musieć the wirtualny zdjęcie class
[Dane] =A klasa the dane który the parser returns.

class Zdjęcie
{
wirtualny pustka append (Snapshot*) = (0);
};

class Dir : jawny Snapshot
{


….
intymny:
std: map *mpData;
};

class Kartoteka: jawny Snapshot
{


….
intymny:
std: map *mpData;
};


class ProcInfo : jawny Dir
{

….
};

I wtedy polubić w niciany bieg każdy 10 sec i zabranie zdjęcie /ptoc

ProcHandler proc;
ProcInfo *procInfo = proc.snapshot ();

Dir pidSnapshot = procInfo->getPid (1312);
Data dane = pidSnapshot.get (ProcInfo:: RSS);
int rss = data.toInt ();
string sRss = data.toString ();

File memSnapshot = procInfo->getSystem (ProcInfo:: MEM);
Data dane = memSnapshot.get (ProcInfo:: MEMTOTAL);
int mem = data.toInt ();
string sMem = data.toString ();

delete procInfo;

Any komentarz na ten projekt być dużo doceniać nawet mały doceniać I właśnie potrzeba niektóre karma z powrotem. I gapić się przy ten projekt i I myśleć że I blokować mój jaźń wewnątrz jaźń the projekt. I potrzebować niektóre nowy oko spojrzenie przy ono i być może móc niektóre problem lub być może lepszy design.


Odpowiedź : Projekt zagadnienie, data od /proc


Wydawać się iść, ale ponieważ ty pytać dla nowy pomysł, tutaj iść --

- Gdy sprawa system/smak I dużo raczej utrzymywać the zamiana non-members jakby, więc I musieć the interfejs i pozwalać jakaś nowy zamiana dodawać the system łatwo. Ale gdy I powiedzieć, smak być sprawa smak być może.

Konwertyta (Dane D);
Konwertyta (D);

- Od ty opowiadać o pomniejszanie serwer wycieczka i bandwidth i zdjęcie używać the "zdjęcie" zwrot, ono być naturalny także "dyferencjalny zdjęcie". W Ten Sposób the pomysł być że ty brać początkowy zdjęcie.

Dir pidSnapshot = procInfo->getPid (1312);
SnapShot* różnica = pidSnapshot->difference ();

Zdjęcie:: różnica ();
Zdjęcie:: applyDifferential (Snapshot* D)

Tak, że sposób, tylko wartość który mieć zmiana ponieważ ostatni zdobycz wracać i który móc ogromny oszczędzanie pod względem występ.

- Być ty pewny the proc filesystem mieć symboliczny połączenie (I znaczyć the ten sam jednostka pod wieloskładnikowy rój)? Jeżeli tak, wtedy być ono wtedy dwa kopia the ten sam datum. I zgadywać ono liczyć się dużo, dopóki the zdjęcie właśnie wartość przedmiot.

- Raczej mieć the getPid () etc jakby bardzo szczególny accessors, ono być warty zachodu jeżeli ty móc w the podstawowy klasa rodzajowy set znalezisko () metoda jak mówić

wirtualny Snapshot* Zdjęcie:: znalezisko (smyczkowy dziecko) {
}

Także jak o Zdjęcie baza który mieć dziecko

klasowy SnapshotContainer: jawny Zdjęcie
{
wirtualny Snapshot* Zdjęcie:: znalezisko (smyczkowy dziecko) {
}
intymny:
  std: mapa *mpData;
};

- Być pomocniczo, jeżeli ty także zapewniać lekceważyć ale znacząco różnica dla znalezisko (), dzwonić ono lokalizować () ten brać ścieżka (raczej imię) i robić the brudny praca the.

// ścieżka być w ten forma, /root/net/sockstats/tcpip6
Snapshot* Zdjęcie:: lokalizować (smyczkowy ścieżka) {
}

- The znacząco zmiana który I zrobić być the zdjęcie odniesienie liczyć przedmiot i mądrze/refptr the zdjęcie raczej surowy pointer. Wokoło naprawdę dawać mnóstwo władza, szczególnie gdy ty chcieć sprawnie dziecko i wokoło (być może)

klasowy Zdjęcie: jawny RefCounted // Widzieć Poco:: RefCounted dla ref.
{
}

typedef RefCountedPtr RefSnapshot;

Mieć Nadzieję te pomoc…
Inne rozwiązania  
 
programming4us programming4us