LaunchDarkly SDK for C / C++
The LaunchDarkly C / C++ SDK is designed primarily for use in desktop and embedded systems applications. It follows the client-side LaunchDarkly model for single-user contexts (much like our mobile or JavaScript SDKs). It is not intended for use in multi-user systems such as web servers and applications.
Quick setup (POSIX)
The C / C++ SDK requires a POSIX environment, and assumes that both libcurl
and libpthread
are installed.
Unlike other LaunchDarkly SDKs, the C SDK has no installation steps. To get started, clone this repository or download a release archive from the GitHub Releases page. You can use the Makefile
in this repository as a starting point for integrating this SDK into your application.
You can get the required dependencies on Ubuntu Linux with:
sudo apt-get update && sudo apt-get install build-essential libcurl4-openssl-dev
Quick setup (Windows)
Building the SDK requires that the Visual Studio C compiler be installed. The SDK also requires libcurl.
Unlike other LaunchDarkly SDKs, the C SDK has no installation steps. To get started, clone this repository or download a release archive from the GitHub Releases page.
You can obtain the libcurl dependency at curl.haxx.se. You will need to extract curl and then update Makefile.win
with the path you saved it to. The Makefile will automatically build curl for you.
Open a Visual Studio command prompt, navigate to the c-sdk directory, and run nmake /f Makefile.win
to build the SDK libraries.
Getting started
Once integrated, you can follow these steps to initialize a client instance:
- Include the LaunchDarkly SDK headers:
#include "ldapi.h"
[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Flaunchdarkly%2Fc-client.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Flaunchdarkly%2Fc-client?ref=badge_shield)
- Create a new LDClient instance and user with your SDK key:
unsigned int maxwaitmilliseconds = 10 * 1000;
LDConfig *config = LDConfigNew("YOUR_CLIENT_SIDE_KEY");
LDUser *user = LDUserNew("YOUR_USER_KEY");
LDClient *client = LDClientInit(config, user, maxwaitmilliseconds);
In most cases, you should create a single LDClient
instance for the lifecycle of your program (a singleton pattern can be helpful here). When finished with the client (or prior to program exit), you should close the client:
LDClientClose(client);
Your first feature flag
- Create a new feature flag on your dashboard
- In your application code, use the feature's key to check whether the flag is on for each user:
show_feature = LDBoolVariation(client, "your.flag.key", false);
if (show_feature) {
// application code to show the feature
} else {
// the code to run if the feature is off
}
You'll also want to ensure that the client is initialized before checking the flag:
initialized = LDClientIsInitialized(client);
Learn more
Check out our documentation for in-depth instructions on configuring and using LaunchDarkly. You can also head straight to the complete reference guide for this SDK.
Testing
We run integration tests for all our SDKs using a centralized test harness. This approach gives us the ability to test for consistency across SDKs, as well as test networking behavior in a long-running application. These tests cover each method in the SDK, and verify that event sending, flag evaluation, stream reconnection, and other aspects of the SDK all behave correctly.
Contributing
We encourage pull-requests and other contributions from the community. We've also published an SDK contributor's guide that provides a detailed explanation of how our SDKs work.
About LaunchDarkly
- LaunchDarkly is a continuous delivery platform that provides feature flags as a service and allows developers to iterate quickly and safely. We allow you to easily flag your features and manage them from the LaunchDarkly dashboard. With LaunchDarkly, you can:
- Roll out a new feature to a subset of your users (like a group of users who opt-in to a beta tester group), gathering feedback and bug reports from real-world use cases.
- Gradually roll out a feature to an increasing percentage of users, and track the effect that the feature has on key metrics (for instance, how likely is a user to complete a purchase if they have feature A versus feature B?).
- Turn off a feature that you realize is causing performance problems in production, without needing to re-deploy, or even restart the application with a changed configuration file.
- Grant access to certain features based on user attributes, like payment plan (eg: users on the ‘gold’ plan get access to more features than users in the ‘silver’ plan). Disable parts of your application to facilitate maintenance, without taking everything offline.
- LaunchDarkly provides feature flag SDKs for
- Explore LaunchDarkly
- www.launchdarkly.com for more information
- docs.launchdarkly.com for our documentation and SDKs
- apidocs.launchdarkly.com for our API documentation
- blog.launchdarkly.com for the latest product updates