Giter Site home page Giter Site logo

c-client's Introduction

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:

  1. 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)
  1. 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

  1. Create a new feature flag on your dashboard
  2. 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

License

FOSSA Status

c-client's People

Contributors

ashanbrown avatar eakraly avatar eli-darkly avatar fossabot avatar tedu avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.