HBASE-17800 [C++] handle exceptions in client RPC (Xiaobing Zhou and Enis Soztutar)
23 files changed
tree: e8c9cb094a0d2dcc9708158c5aca5b8f39225a23
  1. bin/
  2. connection/
  3. core/
  4. exceptions/
  5. if/
  6. security/
  7. serde/
  8. test-util/
  9. third-party/
  10. utils/
  11. .buckconfig
  12. .dockerignore
  13. .gitignore
  14. BUILDING.md
  15. Dockerfile
  16. hbase.doxygen
  17. Makefile
  18. Makefile.protos
  19. README.md
README.md

hbase-native-client

Native client for HBase

This is a C/C++ library that implements a HBase client.

Design Philosphy

Synchronous and Async versions will both be built on the same foundation. The core foundation will be C++. External users wanting a C library will have to choose either async or sync. These libraries will be thin veneers ontop of the C++.

We should try and follow pthreads example as much as possible:

  • Consistent naming.
  • Opaque pointers as types so that binary compat is easy.
  • Simple setup when the defaults are good.
  • Attr structs when lots of paramters could be needed.

Naming

All public C files will start with hbase_*.{h, cc}. This is to keep naming conflicts to a minimum. Anything without the hbase_ prefix is assumed to be implementation private.

All C apis and typedefs will be prefixed with hb_.

All typedefs end with _t.

Docker

The build environment is docker. This should keep a consistent build environment for everyone. Buck the build system works best with mmap'd files. On OSX this means that vmwarefusion works the best. However it should work with just the defaults.