Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
The couchbase client for C.
C C++ CMake Shell Perl Makefile

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
config
doc
example
include
m4
packaging
src
tests
tools
win32
.gitignore
AUTHORS
LICENSE
Makefile.am
NMakefile
README
configure.ac

README

Hi!

I started implementing libcouchbase during the release testing of
Couchbase. We didn't have a "smart client" in C at the moment, so I had
to revert to Python/Java to run my tests. A "smart client" is a client
that utilize the REST interface to locate the server hosting a given
vbucket.

Initially I looked at adding the support to libmemcached, since
libmemcached already implements everything I need except for the
"smart client" bits. Unfortunately it wasn't that easy to add this to
the existing codebase, because libmemcached doesn't use vbuckets and
the serverlist is provided by the caller. I'm not saying that it would
be impossible to refactor the code so that it works, but libmemcached
isn't targeted to couchbase only (and adding vendor-specific logic to
a generic library didn't feel right).

You might think that I suffer for the "not invented here" syndrome by
adding my own implementation for base64 encoding and extremely simple
implementation for sending and parsing a chunked http response instead
of using libraries such as libcurl etc. The answer is really simple:
I want to minimize the list of external dependencies making it easier
to build and install on your system (and we're only using an extremely
simple and small part of HTTP ;-))

I'm going to try my very best to keep the public interface as stable
as possible making upgrades as easy as possible. I've tried my very
best to hide all knowledge about the internals in the interface, and
that is for a reason. As a client of the library you should _NOT_
try to poke at the internals, because that will _MOST LIKELY_ cause
your application to crash when I'm changing the internals (and you
can be pretty sure that they will change between versions).

Cheers,

Trond Norbye


Something went wrong with that request. Please try again.