Passa al contenuto principale

BC_SHARED_MAP

33.0

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 è :

  1. il processo A crea o accede ad una mappa condivisa specificando un nome ed una serie di attributi
  2. Il processo A popola la mappa indicando una chiave ed il valore da inserire nella mappa
  3. 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

MetodoDescrizioneTipo
ContieneControlla la presenza di una chiaveMetodo di oggetto
GETCostruisce / ottiene mappaMetodo statico
LeggiDataLettura dataMetodo di oggetto
LeggiDoubleLettura doubleMetodo di oggetto
LeggiInteroLettura valore interoMetodo di oggetto
LeggiStringaLettura di un valore stringaMetodo di oggetto
RimuoviRimozione chiaveMetodo di oggetto
ScriviDataScrittura dataMetodo di oggetto
ScriviDoubleScrittura doubleMetodo di oggetto
ScriviIntScrittura interoMetodo di oggetto
ScriviStringaScrittura stringaMetodo di oggetto