Base Module VST 3.7
SDK for developing VST plug-in
UpdateHandler Class Reference

UpdateHandler implements IUpdateManager and IUpdateHandler to handle dependencies between objects to store and forward messages to dependent objects. More...

#include <updatehandler.h>

+ Inheritance diagram for UpdateHandler:

Public Member Functions

 UpdateHandler ()
 
 ~UpdateHandler () SMTG_OVERRIDE
 
tresult addDependent (FUnknown *object, IDependent *dependent) SMTG_OVERRIDE
 register More...
 
tresult removeDependent (FUnknown *object, IDependent *dependent, size_t &earseCount)
 unregister More...
 
tresult removeDependent (FUnknown *object, IDependent *dependent) SMTG_OVERRIDE
 
tresult triggerUpdates (FUnknown *object, int32 message) SMTG_OVERRIDE
 send More...
 
tresult deferUpdates (FUnknown *object, int32 message) SMTG_OVERRIDE
 send More...
 
tresult cancelUpdates (FUnknown *object) SMTG_OVERRIDE
 cancel pending messages send by More...
 
tresult triggerDeferedUpdates (FUnknown *object=nullptr) SMTG_OVERRIDE
 send pending messages send by More...
 
size_t countDependencies (FUnknown *object=nullptr)
 
 OBJ_METHODS (UpdateHandler, FObject) FUNKNOWN_METHODS2(IUpdateHandler
 
virtual void addDependent (IDependent *dep)
 adds dependency to the object More...
 
virtual void removeDependent (IDependent *dep)
 removes dependency from the object More...
 
virtual void deferUpdate (int32 msg=kChanged)
 Similar to triggerUpdates, except only delivered in idle (usefull in collecting updates). More...
 
- Public Member Functions inherited from FObject
 FObject ()=default
 default constructor... More...
 
 FObject (const FObject &)
 
FObjectoperator= (const FObject &)
 overloads operator "=" as the reference assignment More...
 
virtual ~FObject ()
 destructor... More...
 
virtual FClassID isA () const
 a local alternative to getFClassID () More...
 
virtual bool isA (FClassID s) const
 evaluates if the passed ID is of the FObject type More...
 
virtual bool isTypeOf (FClassID s, bool=true) const
 evaluates if the passed ID is of the FObject type More...
 
int32 getRefCount ()
 returns the current interface reference count More...
 
FUnknown * unknownCast ()
 get FUnknown interface from object More...
 
tresult queryInterface (const TUID _iid, void **obj) SMTG_OVERRIDE
 please refer to FUnknown::queryInterface () More...
 
uint32 addRef () SMTG_OVERRIDE
 please refer to FUnknown::addref () More...
 
uint32 release () SMTG_OVERRIDE
 please refer to FUnknown::release () More...
 
void update (FUnknown *, int32) SMTG_OVERRIDE
 empty virtual method that should be overridden by derived classes for data updates upon changes More...
 
virtual void addDependent (IDependent *dep)
 adds dependency to the object More...
 
virtual void removeDependent (IDependent *dep)
 removes dependency from the object More...
 
virtual void changed (int32 msg=kChanged)
 Inform all dependents, that the object has changed. More...
 
virtual void deferUpdate (int32 msg=kChanged)
 Similar to triggerUpdates, except only delivered in idle (usefull in collecting updates). More...
 
virtual void updateDone (int32)
 empty virtual method that should be overridden by derived classes More...
 
virtual bool isEqualInstance (FUnknown *d)
 
template<class C >
IPtr< C > fromUnknown (FUnknown *unknown)
 
virtual tresult cancelUpdates (FUnknown *object)=0
 cancel pending messages send by More...
 
virtual tresult triggerDeferedUpdates (FUnknown *object=nullptr)=0
 send pending messages send by More...
 

Public Attributes

 IUpdateManager
 
FObject SINGLETON(UpdateHandler) private Steinberg::Base::Thread::FLock lock
 
Update::Table * table = nullptr
 

Additional Inherited Members

- Static Public Member Functions inherited from FObject
static FClassID getFClassID ()
 return Class ID as an ASCII string (statically) More...
 
static void setUpdateHandler (IUpdateHandler *handler)
 set method for the local attribute More...
 
static IUpdateHandler * getUpdateHandler ()
 get method for the local attribute More...
 
static bool classIDsEqual (FClassID ci1, FClassID ci2)
 compares (evaluates) 2 class IDs More...
 
static FObjectunknownToObject (FUnknown *unknown)
 pointer conversion from FUnknown to FObject More...
 
template<class Class >
static IPtr< Class > fromUnknown (FUnknown *unknown)
 convert from FUnknown to FObject More...
 
- Static Public Attributes inherited from FObject
static const FUID iid
 Special UID that is used to cast an FUnknown pointer to a FObject. More...
 
- Static Public Attributes inherited from IUpdateManager
static const FUID iid
 
- Protected Attributes inherited from FObject
int32 refCount = 1
 COM-model local reference count. More...
 
- Static Protected Attributes inherited from FObject
static IUpdateHandler * gUpdateHandler = nullptr
 

Detailed Description

UpdateHandler implements IUpdateManager and IUpdateHandler to handle dependencies between objects to store and forward messages to dependent objects.

This implementation is thread save, so objects can send message, add or remove dependents from different threads. Do do so it uses mutex, so be aware of locking.

Constructor & Destructor Documentation

◆ UpdateHandler()

◆ ~UpdateHandler()

Member Function Documentation

◆ addDependent() [1/2]

tresult addDependent ( FUnknown *  object,
IDependent *  dependent 
)

register

Parameters
dependentto get messages from
object

◆ removeDependent() [1/3]

tresult removeDependent ( FUnknown *  object,
IDependent *  dependent,
size_t &  earseCount 
)

unregister

Parameters
dependentto get no messages from
object

◆ removeDependent() [2/3]

tresult removeDependent ( FUnknown *  object,
IDependent *  dependent 
)

◆ triggerUpdates()

tresult triggerUpdates ( FUnknown *  object,
int32  message 
)

send

Parameters
messageto all dependents of
objectimmediately

◆ deferUpdates()

tresult deferUpdates ( FUnknown *  object,
int32  message 
)

send

Parameters
messageto all dependents of
objectwhen idle

◆ cancelUpdates()

tresult cancelUpdates ( FUnknown *  object)
virtual

cancel pending messages send by

Parameters
objector by any if object is 0

Implements IUpdateManager.

◆ triggerDeferedUpdates()

tresult triggerDeferedUpdates ( FUnknown *  object = nullptr)
virtual

send pending messages send by

Parameters
objector by any if object is 0

Implements IUpdateManager.

◆ countDependencies()

size_t countDependencies ( FUnknown *  object = nullptr)

◆ OBJ_METHODS()

OBJ_METHODS ( UpdateHandler  ,
FObject   
)

◆ addDependent() [2/2]

void addDependent ( IDependent *  dep)
virtual

adds dependency to the object

Reimplemented from FObject.

◆ removeDependent() [3/3]

void removeDependent ( IDependent *  dep)
virtual

removes dependency from the object

Reimplemented from FObject.

◆ deferUpdate()

void deferUpdate ( int32  msg = kChanged)
virtual

Similar to triggerUpdates, except only delivered in idle (usefull in collecting updates).

Reimplemented from FObject.

Member Data Documentation

◆ IUpdateManager

◆ lock

FObject SINGLETON (UpdateHandler) private Steinberg::Base::Thread::FLock lock

◆ table

Update::Table* table = nullptr
Empty

Copyright © Steinberg Media Technologies GmbH. All Rights Reserved. This documentation is under this license.