ConfigCat SDK for .NET. ConfigCat is a hosted feature flag service: https://configcat.com. Manage feature toggles across frontend, backend, mobile, desktop apps. Alternative to LaunchDarkly. Management app + feature flag SDKs.
Adds ClientReady, FlagEvaluated, ConfigChanged, Error and BeforeClientDispose events to ConfigCatClientsOptions/ConfigCatClients.
Also improves/fixes minor issues of the previously submitted PRs:
To be able to meet the requirement of raising the ClientReady event when "maxInitWaitTimeSeconds passed" in the case of auto polling, I needed to change the ManualResetEventSlim-based approach to initialization handling to a CancellationTokenSource-based one because CTS supports active and timed notifications via RegisterCallback+CancelAfter.
Logging around value evaluation (RolloutEvaluator) has been also revised and cleaned up because the original implementation didn't play nicely with the FlagEvaluated event and mass-evaluation like GetAllValues and GetAllVariationIds.
[x] I have covered the applied changes with automated tests.
[x] I have executed the full automated test set against my changes.
[x] I have validated my changes against all supported platform versions.
Describe the purpose of your pull request
ClientReady
,FlagEvaluated
,ConfigChanged
,Error
andBeforeClientDispose
events toConfigCatClientsOptions
/ConfigCatClients
.Also improves/fixes minor issues of the previously submitted PRs:
To be able to meet the requirement of raising the
ClientReady
event when "maxInitWaitTimeSeconds passed" in the case of auto polling, I needed to change theManualResetEventSlim
-based approach to initialization handling to aCancellationTokenSource
-based one because CTS supports active and timed notifications viaRegisterCallback
+CancelAfter
.Logging around value evaluation (
RolloutEvaluator
) has been also revised and cleaned up because the original implementation didn't play nicely with theFlagEvaluated
event and mass-evaluation likeGetAllValues
andGetAllVariationIds
.[x] I have covered the applied changes with automated tests.
[x] I have executed the full automated test set against my changes.
[x] I have validated my changes against all supported platform versions.
[x] I have read and accepted the contribution agreement.