Gestione eventi

Un servizio ospitato deve implementare l'interfaccia IUPnPEventSource se dispone di variabili di stato evento. Questa interfaccia dispone di due metodi: Advise e Unadvise. Questa interfaccia fornisce un meccanismo che consente all'host del dispositivo di sottoscrivere le notifiche degli eventi generate dal servizio ospitato. Non verrà registrato più di un sink di evento alla volta.

Un servizio ospitato deve implementare il metodo Advise mantenendo un riferimento all'interfaccia IUPnPEventSink , che è stata passata come parametro. Se l'interfaccia viene trovata, il metodo Advise include un riferimento a tale interfaccia finché non viene richiamato Unadvise o finché l'oggetto servizio ospitato non viene rimosso. Il metodo Advise viene chiamato una sola volta.

Per rimuovere la sottoscrizione, l'host del dispositivo richiama Unadvise e passa il puntatore all'oggetto utilizzato quando viene chiamato Advise. Il servizio ospitato rimuove la sottoscrizione se il puntatore è uguale a quello passato a Advise.

Quando viene modificato il valore di una variabile di stato, il servizio ospitato deve segnalare che si è verificato un evento. Il servizio esegue questa operazione richiamando il metodo IUPnPEventSink:: OnStateChanged .

Quando l'host del dispositivo non deve più ricevere notifiche dal servizio ospitato, richiama IUPnPEventSource:: Unadvise, passando lo stesso puntatore a un oggetto ricevuto da Advise. L'host del dispositivo richiama questo metodo quando il dispositivo non si trova più nella rete.