16.06.2013 Views

posta - Amiga Magazine Online

posta - Amiga Magazine Online

posta - Amiga Magazine Online

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!