BC_SHARED_MAP
La classe BC_SHARED_MAP permette di condividere dati tra processi di una stessa macchina, definendo una mappa di chiave / valore. La chiave è una stringa di lunghezza arbitraria, il valore puó essere intero, stringa, o double. La sequenza operativa è :
- il processo A crea o accede ad una mappa condivisa specificando un nome ed una serie di attributi
- Il processo A popola la mappa indicando una chiave ed il valore da inserire nella mappa
- Un processo B accede alla mappa, legge i valori specificando la chiave, li può modificare e/o cancellare
NB: la condivisione di oggetti o collezioni deve passare attraverso un processo di serializzazione / deserializzazione.
La prima funzione (statica) da richiamare della classe è GET:
Gli argomenti della funzione sono:
- Visibilitá : definisce il contesto di condivisione. Attualmmente sono:
- installazione,
- processo sismenu
- utente (del processo sismenu)
- Nome : è il nome da attribuire alla mappa e permette di identificarla. Il nome è usato tecnicamente per definire il nome effettivo in base alle regole di visibilità
- Modo Accesso : può essere:
- creazione,
- aperturaOCreazione
- apertura
- Dimensione: la memoria complessiva della mappa va predefinita. Se si esaurisce, la mappa nelle operazioni di modifica darà errore
La funzione statica GET ritorna una istanza della classe non vuota se la funzione non fallisce.
Sulla istanza della funzione sono disponibili le seguenti funzioni:
- Contiene ( chiave ) : permette di verificare se una certa chiave è presente in mappa
- LeggiIntero ( chiave ) : permette di leggere un valore intero data la sua chiave. Se la chiave non è presente lla funzione ritorna il valore di default.
- LeggiStringa/LeggiData/LeggiDouble : come sopra con il tipo corrispondente
- Rimuovi ( chiave ) : permette di rimuovere una chiave dalla mappa se presente, non fa nulla in sua assenza
- ScriviIntero ( chiave , valore ) : permette di aggiungere o aggiornare un valore intero nella mappa specificando la sua chiave
- ScriviStringa/ScriviData/ScriviDouble : come sopra con il tipo corrispondente
Le operazioni di modifica sono fatte in maniera concorrenziale, ovvero se due processi scrivono contemporaneamente, la mappa rimane corretta. L'ordine di inserimento non è specificato
In fase di lettura più processi possono leggere contemporaneamente, senza alcun blocco.
Metodi
| Metodo | Descrizione | Tipo |
|---|---|---|
| Contiene | Controlla la presenza di una chiave | |
| GET | Costruisce / ottiene mappa | |
| LeggiData | Lettura data | |
| LeggiDouble | Lettura double | |
| LeggiIntero | Lettura valore intero | |
| LeggiStringa | Lettura di un valore stringa | |
| Rimuovi | Rimozione chiave | |
| ScriviData | Scrittura data | |
| ScriviDouble | Scrittura double | |
| ScriviInt | Scrittura intero | |
| ScriviStringa | Scrittura stringa |