C++ Client-Side SDK
LaunchDarkly SDK
Public Member Functions | List of all members
launchdarkly::client_side::flag_manager::FlagUpdater Class Reference

#include <flag_updater.hpp>

Inheritance diagram for launchdarkly::client_side::flag_manager::FlagUpdater:
Inheritance graph
[legend]
Collaboration diagram for launchdarkly::client_side::flag_manager::FlagUpdater:
Collaboration graph
[legend]

Public Member Functions

 FlagUpdater (FlagStore &flag_store)
 
void Init (Context const &context, std::unordered_map< std::string, ItemDescriptor > data) override
 
void Upsert (Context const &context, std::string key, ItemDescriptor item) override
 
void Apply (Context const &context, FlagChangeSet change_set, bool from_cache) override
 
std::unique_ptr< IConnection > OnFlagChange (std::string const &key, std::function< void(std::shared_ptr< FlagValueChangeEvent >)> handler) override
 
- Public Member Functions inherited from launchdarkly::client_side::IDataSourceUpdateSink
 IDataSourceUpdateSink (IDataSourceUpdateSink const &item)=delete
 
 IDataSourceUpdateSink (IDataSourceUpdateSink &&item)=delete
 
IDataSourceUpdateSink & operator= (IDataSourceUpdateSink const &)=delete
 
IDataSourceUpdateSink & operator= (IDataSourceUpdateSink &&)=delete
 
- Public Member Functions inherited from launchdarkly::client_side::flag_manager::IFlagNotifier
virtual std::unique_ptr< IConnection > OnFlagChange (std::string const &key, ChangeHandler handler)=0
 
 IFlagNotifier (IFlagNotifier const &item)=delete
 
 IFlagNotifier (IFlagNotifier &&item)=delete
 
IFlagNotifier & operator= (IFlagNotifier const &)=delete
 
IFlagNotifier & operator= (IFlagNotifier &&)=delete
 

Additional Inherited Members

- Public Types inherited from launchdarkly::client_side::flag_manager::IFlagNotifier
using ChangeHandler = std::function< void(std::shared_ptr< FlagValueChangeEvent >)>
 

Detailed Description

Applies data source updates to the store and dispatches the resulting change events to registered listeners.

Thread-safe. Every method takes signal_mutex_, so an update arriving on a data source's thread cannot interleave with a listener being registered or removed. Listener callbacks run on the thread that delivered the update, while that mutex is held, so a callback must not register listeners of its own.

Member Function Documentation

◆ Apply()

void launchdarkly::client_side::flag_manager::FlagUpdater::Apply ( Context const &  context,
FlagChangeSet  change_set,
bool  from_cache 
)
overridevirtual

Applies a changeset as a single unit. Unlike Upsert, this path does not order or reject updates by version. FDv2 reserves the per-flag version for event tracking and manages payload consistency through selectors instead.

Parameters
from_cacheWhether the changeset was loaded from the local cache, in which case it is not written back to it.

Implements launchdarkly::client_side::IDataSourceUpdateSink.

◆ OnFlagChange()

std::unique_ptr< IConnection > launchdarkly::client_side::flag_manager::FlagUpdater::OnFlagChange ( std::string const &  key,
std::function< void(std::shared_ptr< FlagValueChangeEvent >)>  handler 
)
override

Listen for changes for the specific flag.

Parameters
keyThe flag to listen to.
handlerThe handler to signal when the flag changes.
Returns
A Connection which can be used to stop listening for changes to the flag using this handler.

The documentation for this class was generated from the following files: