Cos' WNPComm?

WNPComm (Warlock Named Pipe Communication) una libreria tramite la quale possibile far comunicare due processi indipendenti in modo semplice e affidabile, utilizzando due named-pipe (o fifo). L'architettura di riferimento quella client-server, ovvero ogni comunicazione stabilita fra un processo (client) che invia un dato e un'altro (server) che lo riceve, e, a discrezione, risponde.

Nel caso in cui sia prevista una risposta da parte del server, il client potra' riceverla su una fifo preventivamente da esso definita, oppure potra' lasciare che il sistema ne crei una automaticamente. Il nome file del file verr quindi automaticamente incluso nel pacchetto inviato al server.

Il cuore della libreria scritto in C. Ma sono disponibili interfaccie per i seguenti linguaggi:
  • Tcl/Tk
  • Perl

  • Come funziona?

    La libreria WNPComm implementa fondamentalmente un protocollo base per l'invio affidabile di dati tramite buffer gestiti dal kernel, le named-pipe. Questo protocollo pu essere diviso in tre livelli distinti.

    Livello 1 - Livello fisico
    Le funzioni che fanno parte di questo livello provvedono a inviare o ricevere i dati direttamente dal file-descriptor associato alla fifo. Nel caso di invio di un messaggio, la funzione procede come segue:
  • I dati da inviare vengono acquisiti dal livello superiore
  • Venono aggiunti degli header che permettono la corretta ricostruzione dei dati
  • I bytes vengono scritti nel file-descriptor associato alla fifo preposta al loro invio

  • In caso di ricezione di un messaggio la procedura l'inversa di quella presentata.
    Gestione della frammentazione: qualora il dato inviato superi la dimensione del buffer, le funzioni opereranno una frammentazione e ricostruzione del dato stesso, in modo trasparente.

    Livello 2 - Costruzione del pacchetto
    Le funzioni di questo livello collezionano le informazioni provenienti dal livello superiore e creano un pacchetto idoneo all'invio, o estraggono i dati da un pacchetto ricevuto dal livello sottostante, nel caso di ricezione.
    Le informazioni cosi' aggregate o estratte sono le seguenti:
  • Process-ID (PID) del processo client
  • Nome file della fifo preposta alla lettura della risposta
  • Il dato oggetto della trasmissione

  • Livello 3 - Gestore della sessione
    Questo livello responsabile delle seguenti operazioni:
  • Apertura del canale fisico (fifo) in lettura o scrittura
  • Gestione degli accessi concorrenti (file locking)
  • Sincronizzazione per la chiusura del canale

  • Livello 4 - Applicazioni
    Questo livello contiene varie funzioni che forniscono dei servizi usando le funzioni dei livelli sottostanti. Le applicazioni disponibili sono le seguenti:
  • Comunicazione concorrente (multisessione)