Join GitHub today
GitHub is home to over 20 million developers working together to host and review code, manage projects, and build software together.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
|Failed to load latest commit information.|
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