skip to Main Content

Segnalo questo articolo molto interessante che illustra brillantemente come utilizzare il polimorfismo e la tecnica del caricamento dinamico delle librerie su Linux per estendere un software in modo elegante e robusto e senza toccare il codice principale. La tecnica si basa sull’impiego di interfacce comuni, astrazioni di un entità, impiegate dal codice principale e sulla specializzazione di queste entità (che devono rigorosamente implementare l’interfaccia) che verranno collocate in librerie dinamiche (detto cosi magari fà schifo quindi consiglio di leggere attentamente l’articolo per chi è interessato).

Applicazione al demone Ardad

Chiaramente questa tecnica verrà sfruttata su Ardad per fornire il driver giusto per ogni dispositivo sul quale dovrà girare. Chiunque in questo modo potrà scrivere il driver appropriato senza toccare il codice principale e sarà il demone a scegliere quello che più gli si addice sulla base della versione del software del dispositivo ospite. I differenti driver si comporteranno quindi come plugin e saranno registrati utilizzando delle convenzioni basate sulla versione del dispositivo per la quale sono concepiti.

Questa infrastruttura consente di estendere le funzionalità del demone scrivendo solamente ulteriori driver senza la necessità di mettere mano al codice principale o di ricompilarlo. Inoltre i differenti driver essendo librerie dinamiche e fornendo un servizio utile (restituire informazioni sul dispositivo) potranno essere sfruttati da software di terze parti (per es. per ottenere la configurazione di un interfaccia, piuttosto che di un servizio o di uno storage) e costituire quindi un layer comune di astrazione per l’accesso alla configurazione del dispositivo.

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Back To Top