Giter Club home page Giter Club logo

cetcd's Introduction

Cetcd is a C client for etcd

License Gitter Stories in Ready wercker status

Table of Contents generated with DocToc

Status

cetcd is on active development. It aims to be used in production environment and to supply full features of etcd. Any issues or pull requests are welcome!

Features

  • Round-robin load balance and failover
  • Full support for etcd keys space apis
  • Multiple concurrent watchers support

Deps

cetcd use sds as a dynamic string utility. It is licensed in sds/LICENSE. sds is interaged in cetcd's source code, so you don't have to install it before.

yajl is a powerful json stream parsing libaray. We use the stream apis to parse response from cetcd. It is already integrated as a third-party dependency, so you are not necessary to install it before.

curl is required to issue HTTP requests in cetcd

Install

Install curl if needed on Ubuntu

apt-get install libcurl4-openssl-dev

or on CentOS

yum install libcurl-devel

then

make
make install

It default installs to /usr/local.

Use

make install prefix=/path

to specify your custom path.

Link

Use -lcetcd to link the library

Examples

Usage

cetcd_array is an expandable dynamic array. It is used to pass etcd cluster addresses, and return cetcd response nodes

Create an array to store the etcd addresses

    cetcd_array addrs;

    cetcd_array_init(&addrs, 3);
    cetcd_array_append(&addrs, "127.0.0.1:2379");
    cetcd_array_append(&addrs, "127.0.0.1:2378");
    cetcd_array_append(&addrs, "127.0.0.1:2377");

cetcd_client is a context cetcd uses to issue requests, you should init it with etcd addresses

Init the cetcd_client

    cetcd_client cli;
    cetcd_client_init(&cli, &addrs);

Then you can issue an cetcd request which reply with an cetcd response

Set a key

    cetcd_response *resp;
    resp = cetcd_set(&cli, "/service/redis", "hello cetcd", 0);
    if(resp->err) {
        printf("error :%d, %s (%s)\n", resp->err->ecode, resp->err->message, resp->err->cause);
    }
    cetcd_response_release(resp);

Get a key

    cetcd_response *resp;
    resp = cetcd_get(&cli, "/service/redis");
    if(resp->err) {
        printf("error :%d, %s (%s)\n", resp->err->ecode, resp->err->message, resp->err->cause);
    }
    cetcd_response_release(resp);

List a directory

    cetcd_response *resp;
    resp = cetcd_lsdir(&cli, "/service", 1, 1);
    if(resp->err) {
        printf("error :%d, %s (%s)\n", resp->err->ecode, resp->err->message, resp->err->cause);
    }
    cetcd_response_print(resp);
    cetcd_response_release(resp);

Clean all resources

    cetcd_array_destory(&addrs);
    cetcd_client_destroy(&cli);

See examples/cetcdget.c for more detailes

cetcd's People

Contributors

huang-lin avatar kinsu avatar rostvel avatar shafreeck avatar thkukuk avatar zhileitao 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.