C++ SDK reference (server-side)
C++ SDK reference (server-side)
C++ SDK reference (server-side)
This topic documents how to get started with the server-side C++ SDK, and links to reference information on all of the supported features.
LaunchDarkly’s SDKs are open source. In addition to this reference guide, we provide source, API reference documentation, and a sample application:
To use the C++ SDK, you must have the following prerequisites installed on your build machine:
cmake, version 3.19 or aboveboost, version 1.81 or aboveopenssl, version 1.1 or abovelibpthread, if you are using a POSIX environmentTo build the C++ SDK, you must have the following dependencies. These are automatically fetched by cmake during the build process:
If you are planning to run the C++ SDK test suite, you will also need the following:
You do not need to run the test suite in order to use the SDK.
This SDK is intended for use in multi-user C++ server applications. If you have a C++ application and want to set up LaunchDarkly in a mobile, desktop, or embedded application, read the client-side C++ SDK reference.
To learn more about LaunchDarkly’s different SDK types, read Choosing an SDK type.
Previous versions of this SDK were written in C, with a C++ wrapper available. In version 3.0 and higher, this SDK is written in C++, with a C wrapper available. The code samples below show all options, where applicable.
After you complete the Getting started process, follow these instructions to start using the LaunchDarkly SDK in your C application.
The following sections explain how to install and configure the SDK, and then to verify its connection to LaunchDarkly by fetching flag configuration information.
You can incorporate the SDK by building from source using cmake, or by using pre-built artifacts. Then, include the LaunchDarkly headers.
To incorporate the SDK using cmake:
CMakeLists.txt to include the SDK repository:
launchdarkly::server target:
The C++ (server-side) SDK releases include 64-bit static and dynamic libraries for Linux, Mac, and Windows.
To incorporate the SDK using prebuilt artifacts:
cmake:
You can now reference the installed headers and link against the prebuilt libraries.
To include the LaunchDarkly SDK headers:
The C wrapper is included in the release binaries.
Here’s how to install the SDK:
cmake, the build system will expect that boost and openssl exist on the system. The cmake configuration exports the target ldclientapi.cmake and you cannot use LaunchDarkly’s artifacts, use cmake install to install the SDK in directory you choose. This copies the required headers, and binaries equivalent to LaunchDarkly’s release bundles.After cloning the repository, include the LaunchDarkly SDK headers:
SDK components common to the C++ (server-side) SDK v3.0 and the C++ (client-side) SDK v3.0 exist within the top-level launchdarkly namespace. Server-side components exist within launchdarkly::server_side.
Individual server-side config builders, for example the LoggingBuilder, are within the launchdarkly::server_side::config::builders namespace. To reduce verbosity of configuration code, you may bring this namespace into scope.
To keep the examples in our documentation concise, we assume symbols in the top-level launchdarkly namespace are visible. You can bring launchdarkly, launchdarkly::server_side, launchdarkly::server_side::config::builders, or all of these into scope, or you can refer to SDK components by their fully-qualified names.
For example:
The C++ (server-side) SDK uses an SDK key. Keys are specific to each project and environment. They are available on the SDK keys page under Settings. To learn more about key types, read Keys.
After you install and import the SDK, create a single, shared instance of Client. To create a client instance, you need your environment’s SDK key to authorize your application to connect to a particular environment within LaunchDarkly.
Here’s how to configure the SDK key and create the client:
To learn more about the specific configuration options available for this SDK, read ConfigBuilder.
Next, construct the client and call StartAsync to initiate a request to the LaunchDarkly service and fetch the feature flag settings.
Because the client initializes asynchronously, you may choose to block until the client is ready.
To block on initialization:
To initialize asynchronously:
Whether you block on initialization or initialize asynchronously, you can also examine the result to determine if initialization succeeded. Here’s how:
If you block on initialization, the initialization call blocks up to the time maxwait. If you request a feature flag before initialization completes, you will receive the fallback value you defined in your variation call.
Now you can check which variation a specific context should receive for a given feature flag. Here’s how:
Lastly, shut down the client when your application terminates.
In the C++ SDK v3.0, the SDK will be automatically closed. If you are using the C binding, or if you are working with earlier versions of the SDK, you must specifically close the client. To learn more, read Shutting down.
This SDK supports the following features: