Observables Implementation
An implementation of an interface that declares an observable must implement the behaviour of the observable. The observable must be initiated, freed and invoked.
To implement basic observable functionality an implementation must include a maxon::ObserverObjectClass object with MAXON_COMPONENT() .
The observable declared with MAXON_OBSERVABLE() is available as a member variable with the defined name and a "_" prefix.
// This example shows an implementation of an interface. // It implements also an observable that is invoked when the function Ping() is called.// init observable _ObservablePing.Init( self , maxon::Id ( "ObservablePing" )) iferr_return ; return maxon::OK ; } void FreeComponent() { // free observable _ObservablePing.Free(); } MAXON_METHOD void Ping() { // increment ++_count;
// notify subscribers iferr (_ObservablePing.Notify(_count)) { DiagnosticOutput ( "Observable error: @" , err); } } private : maxon::Int32 _count; };
The observable must be implemented using MAXON_OBSERVABLE_IMPL() .
Observables are based on maxon::ObservableBaseInterface :
Subscriber notification:
Observers are handled with: