Nella fase di inizializzazione viene aperta la connessione TCP con il server Memcached e il connection ID viene memorizzato nella nuova globale:
/u2/dcs/source_linux/common/memcached/GMemcached.vi |
Inoltre viene inizializzato il VI
/u2/dcs/source_linux/common/memcached/checkMcConn.vi |
il che comporta l'azzeramento di un suo shift-register interno che tiene conto del numero di errori di connessione al server Memcached.
L'IP del server Memcached ed il numero della porta sono costanti di programma.
In caso di errore viene visualizzata una dialog-box bloccante.
Manca l'inoltro di errore sul server MySQL
![LNF DA Control Group > [ITA] Memcached DEVILs > 1_devil_mc_init.png](/download/attachments/33162648/1_devil_mc_init.png?version=1&modificationDate=1585305278000&api=v2)
Nella fase di run viene chiamato in modalità slow poll il VI checkMcConn.vi che verifica lo stato della connessione con il server.
se la connessione e' funzionante: il VI ritorna senza alcun effetto
se c'e' un errore di connessione: il VI incrementa il proprio contatore interno di errore e tenta di riaprirla.
Al terzo errore viene visualizzata una dialog-box bloccante.
Manca l'inoltro di errore sul server MySQL
Nella fase di close viene chiusa la connessione TCP con il server Memcached.
Il VI GXXXLoader, originariamente così:
![LNF DA Control Group > [ITA] Memcached DEVILs > 2_gxxxloader.png](/download/attachments/33162648/2_gxxxloader.png?version=1&modificationDate=1585305408000&api=v2)
si modifica invertendo l'ordine dei frames di inizializzazione delle globali e del VI unpackDBData.2.0.vi. Inoltre si deve collegare l'indice "i" del loop di caricamento degli elementi all'input elemID delle globali.
Il VI GXXXLoader — dopo le modifiche — si presenta così:
![LNF DA Control Group > [ITA] Memcached DEVILs > 3_gxxxloader_mc.png](/download/attachments/33162648/3_gxxxloader_mc.png?version=1&modificationDate=1585305450000&api=v2)
Manca l'inoltro di errore sul server MySQL
Salvare le GXXXSta_eth.vi e GXXXDyn_eth.vi esistenti con l'estensione …_orig.vi e procedere alle seguenti modifiche:
Cambiare l'icona della globale (l'esempio è per la GICEDyn_eth.vi)
![]()
Il frame init, originariamente così:
![LNF DA Control Group > [ITA] Memcached DEVILs > 5_gxxx_init.png](/download/attachments/33162648/5_gxxx_init.png?version=1&modificationDate=1585305605000&api=v2)
si modifica introducendo un nuovo shift register dove si carica il vettore di chiavi che corrispondono agli elementi nella memoria di Memcached. Le chiavi si costruisconono come:
<elementName>_STA per la globale statica
<elementName>_DYN per la globale dinamica
Fare attenzione a mettere la stringa "_STA" o "_DYN" coerente con il tipo di globale che si stà modificando.
Per recuperare i nomi degli elementi appartenenti alla classe XXX specifica della globale, utilizzare il VI
/u2/dcs/source_linux/globas/selectGElemList3-classID_eth.vi |
Fare attenzione a mettere il giusto classID in ingresso al VI.
Il frame init — dopo le modifiche — si presenta così:
![LNF DA Control Group > [ITA] Memcached DEVILs > 6_gxxx_mc_init.png](/download/attachments/33162648/6_gxxx_mc_init.png?version=1&modificationDate=1585305770000&api=v2)
Il frame append, originariamente così:
![LNF DA Control Group > [ITA] Memcached DEVILs > 7_gxxx_append.png](/download/attachments/33162648/7_gxxx_append.png?version=1&modificationDate=1585305789000&api=v2)
si modifica:
recuperando la i-esima chiave (dell'elemento corrente)
serializzando il record corrispondente per mezzo dell'operatore flatten to string
scrivendo il dato serializzato su Memcached, utilizzando il VI
![LNF DA Control Group > [ITA] Memcached DEVILs > 8_memcachedset.png](/download/attachments/33162648/8_memcachedset.png?version=1&modificationDate=1585305879000&api=v2)
Il frame append — dopo le modifiche — si presenta così:
![LNF DA Control Group > [ITA] Memcached DEVILs > 9_gxxx_mc_append.png](/download/attachments/33162648/9_gxxx_mc_append.png?version=1&modificationDate=1585305879000&api=v2)
Il frame write, originariamente così:
![LNF DA Control Group > [ITA] Memcached DEVILs > 10_gxxx_write.png](/download/attachments/33162648/10_gxxx_write.png?version=1&modificationDate=1585305879000&api=v2)
si modifica in maniera identica al frame append.
Il frame write — dopo le modifiche — si presenta così:
![LNF DA Control Group > [ITA] Memcached DEVILs > 11_gxxx_mc_write.png](/download/attachments/33162648/11_gxxx_mc_write.png?version=1&modificationDate=1585305879000&api=v2)
Il frame read rimane immodificato (l'unica cosa da fare è connettere lo shift register del vettore di chiavi).