Cuestión : Edición de diseño, almacenando la fecha de /proc

Hola, el

This es más para conseguir a una cierta regeneración de mi diseño entonces un problema real para solucionar. Pensé que le daría un intento puesto que usted los individuos ha sido anterior tan provechoso. el

Ok aquí es. Estoy intentando escribir el programa del A.C. ++ que va a tomar una foto del sistema de ficheros de /proc. He escrito hasta ahora un programa de análisis para analizar cada directorio del pid. La foto entonces será una clase que incluye la estructura del proc que estoy intentando diseñar.
del

[ProcInfo]  |-----1312--
[de Dir]  |                   |
  |                   |---smap--
[del archivo]  |                   |                   |--RSS--
[de los datos]  |                   |                   |--USS--
[de los datos]  |                   |                   |--PSS--
[de los datos]  |                   |---cmdline--
[del archivo]  |                   |                    |--cmd--
[de los datos]  |                   |---red--
[de Dir]  |                                  |---sockstat6--
[del archivo]  |                                  |                         |--TCP6--
[de los datos]  |---meminfo--
[del archivo]                         |---memtotal--La clase del =A del

[ProcInfo] [de los datos] que representa el proc que debe heredar la clase virtual del =A del class
[Dir] de la foto que representa un dir en el proc que debe heredar la clase virtual del =A del class
[archivo] de la foto que representa un archivo en el proc que debe heredar la clase virtual del =A del class
[datos] de la foto representando los datos esos el
{vacío virtual de la foto del programa de análisis returns.

class del
añade (Snapshot*) = 0;
};

class Dir : Snapshot
{
del
del
……….
privado:
std: map;
}; archivo del

class: Snapshot
{
del
del
……….
privado:
std: map;
};


class ProcInfo : Dir
{
del
…….
}; el

I entonces quisiera utilizar esto en un hilo de rosca funciona cada sec 10 y tomar una foto del proc del

ProcHandler de /ptoc; *procInfo del
ProcInfo = proc.snapshot (); pidSnapshot del

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

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

delete procInfo;los comentarios del

Any sobre este diseño serían incluso pequeños mucho apreciados que apenas necesito conseguir alguno retroactúo. He estado mirando fijamente este diseño a de largo y pienso que he trabado a mi uno mismo adentro a esto el diseño. Necesito algunos nuevos ojos hechar una ojeada él y pueden ver quizá algunos problemas o quizá un design.


class= del

Respuesta : Edición de diseño, almacenando la fecha de /proc


Parece aceptable a mí, pero puesto que usted pidió nuevas ideas, aquí va --

- Pues una cuestión de pref/gusto yo mucho algo guardaría a no miembros de las conversiones como, así que no tengo que contaminar el interfaz y no dejo ninguna nueva conversión ser agregado al sistema fácilmente. Pero como dije, ésa es una cuestión de gusto quizá.

Convertido (datos d);
Convertido (d);

- Desde usted habló de viajes y de anchura de banda de reducción al mínimo del servidor y coincidente utilizó la frase de la “foto”, él es natural de pensar también en “fotos diferenciadas”. La idea es tan que usted toma una foto primaria.

pidSnapshot de Dir = procInfo->getPid (1312);
Diferencia = pidSnapshot->difference de SnapShot* ();

Foto:: diferencia ();
Foto:: applyDifferential (Snapshot* d)

De modo que manera, solamente valores que tienen cambio puesto que la captura pasada será vuelta y que pueden causar ahorros enormes en términos de funcionamiento.

¿- Está usted seguro el sistema de ficheros del proc no tiene acoplamientos simbólicos (significo la misma entidad que aparece debajo de colmenas múltiples)? Si sí, entonces es aceptable guardar dos copias del mismo dato. Conjeturo que no importa mucho, mientras un objeto del valor de la foto apenas.

- Algo que teniendo la clase de accessors muy específicos, del getPid () etc sería más de mérito si usted podría tener en la clase baja que un sistema genérico de métodos del hallazgo () como dice

foto virtual de Snapshot*:: hallazgo (niño de la secuencia) {
}

También cómo sobre la base de la foto que tiene niños

clase SnapshotContainer: foto pública
{
foto virtual de Snapshot*:: hallazgo (niño de la secuencia) {
}
privado:
  std: *mpData del mapa;
};

- Ser provechoso, si usted también proporciona una variación leve pero importante para el hallazgo (), lo llaman localizan () ese toma una trayectoria (algo que un nombre) y hace el trabajo sucio de hacer atravesar.

la trayectoria de // está en esta forma, /root/net/sockstats/tcpip6
Foto de Snapshot*:: localizar (trayectoria de la secuencia) {
}

- El cambio más importante que realizaría sería hacer la foto un objeto contado referencia y vuelto un elegante/un refptr a la foto algo que indicadores crudos. Eso da realmente mucha energía, especialmente cuando usted quiere poder traer a niños y guardarlos alrededor (quizá)

foto de la clase: RefCounted público // ve Poco:: RefCounted para la referencia.
{
}

typedef RefCountedPtr RefSnapshot;

Esperar este la ayuda…
Otras soluciones  
 
programming4us programming4us