/usr/share/SuperCollider/HelpSource/Classes/NotificationCenter.schelp is in supercollider-common 1:3.8.0~repack-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | class:: NotificationCenter
summary:: let an object emit notifications
related:: Classes/SimpleController, Classes/NodeWatcher
categories:: Control
description::
One common OOP pattern is Model-View-Controller where one object (the controller) is a dependant of the model. Every time the model changes it notifies all of its dependants. In this case the model has a dictionary of dependants and iterates through those.
Another common pattern is NotificationCenter wherein an object emits a notification and clients can register functions that will be executed when that notification happens.
A link::Classes/Server:: emits a \newAllocators notification when it creates new node and bus allocators which it does when it quits or boots.
code::
NotificationCenter.notify(Server.default, \newAllocators);
::
You can listen for this:
code::
NotificationCenter.register(Server.default, \newAllocators, yourself, {
// throw away all your node variables
// or stop the music
});
::
The link::Classes/Buffer:: class register a function to clear its info cache whenever a server restarts. The server is emitting changed messages quite often (every 0.4 secs for the status updates), and the Buffer class is only interested in boot/quit events, so this is a more lightweight system for this purpose.
ClassMethods::
private::initClass
method::notify
The object emits a message and may also pass extra args.
method::register
An interested client can register the action function for the object/message notification. A listener may only register one action per object/message notification.
method::unregister
Remove the registrations.
method::registerOneShot
After the notification has been emitted and handled, automatically unregister.
method::registrationExists
Simply confirms if a registration is already in place.
|