posta - Amiga Magazine Online
posta - Amiga Magazine Online
posta - Amiga Magazine Online
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Romano Tenca<br />
La notifica sotto 2.0<br />
Una nuova importante caratteristica delll<strong>Amiga</strong>DOS.<br />
Fra le tante novità del DOS 2.0, particolare rilevanza merita<br />
I'implementazione del meccanismo della notifica, che<br />
consente un'integrazione più alta fra i programmi in multi-<br />
tasking e dunque una migliore interfaccia utente.<br />
La notifica permette a qualsiasi programma di ricevere un<br />
"awertimento" dal DOS quando un file o una directory<br />
vengono modificati dall'utente (mediante l'uso di un co-<br />
mando del DOS come delete, per esempio) o da un altro<br />
programma.<br />
Tale sistema, per esempio, è usato normalmente dal 2.0 per<br />
gestire le directory di preferences poste in ENV:; a questo<br />
modo tutte le volte che l'utente modifica le preferences il<br />
comando IPrefs (che viene eseguito di solito nella Startup-<br />
Sequence del 2.0) viene avvertito che qualcosa è stato<br />
modificato e si comporta di conseguenza.<br />
I vantaggi offerti dalla notifica sono molto importanti in un<br />
ambiente multitasking in cui certi dati vengano condivisi<br />
mediante file (d'ora in poi useremo genericamente la paro-<br />
la file per fare riferimento a un qualsiasi elemento del file<br />
system, anche se si tratta di directory); infatti, il programma<br />
che modifica un file non deve preoccuparsi di avvertire altri<br />
eventuali processi delle modifiche effettuate.<br />
Di questo compito si incarica direttamente il processo di<br />
gestione del file (I'handler), che conosce tutti i programmi<br />
interessati alla cosa. In altre parole, è l'oggetto che ha il<br />
compito di notificare a chiunque sia interessato che qualcu-<br />
no l'ha modificato.<br />
I pacchetti<br />
Perché la notifica possa awenire, il programma deve avan-<br />
zare una specifica richiesta in tal senso all'handler di gestio-<br />
ne del file (come RAM:, DFO:, HDO: ... ).<br />
La notifica è stata implementata sotto 2.0 mediante l'intro-<br />
duzione di due nuovi pacchetti per gli handler del DOS:<br />
ACTION-ADD-NOTIFY (4097), che richiede come primo<br />
argomento un BPTR alla struttura NotifyRequest (vedere<br />
figura 1) e restituisce un valore holeano come risultato, e<br />
ACTION-REMOVE-NOTIFY (4098), che ha lo stesso argo-<br />
mento e io stesso risultato.<br />
La struttura NotifyRequest permette di indicare il nome<br />
dell'elemento del file system da "sorvegliare" e il modo in<br />
cui deve awenire la notifica.<br />
I1 nome deve essere contenuto nella stringa (conclusa da<br />
uno 0) indirizzata dal campo nr-FullName. I1 nome deve<br />
struct NotifyRequest {<br />
UBYTE *nrName; /* usato per le<br />
funzioni */<br />
UBYTE *nr-FullNarne; /* usato per i<br />
pacchetti */<br />
ULONG nr-UserData; /* a<br />
disposizione delle applicazioni */<br />
ULONG nr-Flags;<br />
union {<br />
struct 1<br />
struct MsgPort *nr_Port; /* per<br />
SENDMESSAGE */<br />
l nrMsg;<br />
struct {<br />
struct Task *nr-Task; /* per<br />
SEND-SIGNAL * /<br />
UBYTE nr-SignalNurn; /* per<br />
SEND-SIGNAL */<br />
UBYTE nrgad[3] ;<br />
} nr-Signal;<br />
l nr-stuff;<br />
ULONG nr-Reserved [4] ; /* riservati:<br />
lasciare a O */<br />
/* riservati al<br />
sistema */<br />
ULONG nrMsgCount; /* numero di<br />
messaggi inviati */<br />
struct MsgPort *nr-Handler; /* handler di<br />
gestione (usato da EndNotify) */<br />
1;<br />
Figura 1: La struttura NotifyRequest definita nel fde<br />
include do4notify.h