hbase-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ecl...@apache.org
Subject svn commit: r1555272 [1/2] - in /hbase/trunk/hbase-native-client: ./ bin/ cmake_modules/ src/ src/async/ src/core/ src/rpc/ src/sync/
Date Fri, 03 Jan 2014 22:52:43 GMT
Author: eclark
Date: Fri Jan  3 22:52:41 2014
New Revision: 1555272

URL: http://svn.apache.org/r1555272
Log:
HBASE-9977 Define C interface of HBase Client Asynchronous APIs

Added:
    hbase/trunk/hbase-native-client/
    hbase/trunk/hbase-native-client/.gitignore
    hbase/trunk/hbase-native-client/CMakeLists.txt
    hbase/trunk/hbase-native-client/README.md
    hbase/trunk/hbase-native-client/bin/
    hbase/trunk/hbase-native-client/bin/build-all.sh   (with props)
    hbase/trunk/hbase-native-client/bin/build-thirdparty.sh   (with props)
    hbase/trunk/hbase-native-client/bin/download-thirdparty.sh   (with props)
    hbase/trunk/hbase-native-client/bin/hbase-client-env.sh
    hbase/trunk/hbase-native-client/cmake_modules/
    hbase/trunk/hbase-native-client/cmake_modules/FindGTest.cmake
    hbase/trunk/hbase-native-client/cmake_modules/FindLibEv.cmake
    hbase/trunk/hbase-native-client/src/
    hbase/trunk/hbase-native-client/src/async/
    hbase/trunk/hbase-native-client/src/async/CMakeLists.txt
    hbase/trunk/hbase-native-client/src/async/get-test.cc
    hbase/trunk/hbase-native-client/src/async/hbase_admin.cc
    hbase/trunk/hbase-native-client/src/async/hbase_admin.h
    hbase/trunk/hbase-native-client/src/async/hbase_client.cc
    hbase/trunk/hbase-native-client/src/async/hbase_client.h
    hbase/trunk/hbase-native-client/src/async/hbase_connection.cc
    hbase/trunk/hbase-native-client/src/async/hbase_connection.h
    hbase/trunk/hbase-native-client/src/async/hbase_errno.h
    hbase/trunk/hbase-native-client/src/async/hbase_get.cc
    hbase/trunk/hbase-native-client/src/async/hbase_get.h
    hbase/trunk/hbase-native-client/src/async/hbase_mutations.cc
    hbase/trunk/hbase-native-client/src/async/hbase_mutations.h
    hbase/trunk/hbase-native-client/src/async/hbase_result.cc
    hbase/trunk/hbase-native-client/src/async/hbase_result.h
    hbase/trunk/hbase-native-client/src/async/hbase_scanner.cc
    hbase/trunk/hbase-native-client/src/async/hbase_scanner.h
    hbase/trunk/hbase-native-client/src/async/mutations-test.cc
    hbase/trunk/hbase-native-client/src/core/
    hbase/trunk/hbase-native-client/src/core/CMakeLists.txt
    hbase/trunk/hbase-native-client/src/core/admin.cc
    hbase/trunk/hbase-native-client/src/core/admin.h
    hbase/trunk/hbase-native-client/src/core/client.cc
    hbase/trunk/hbase-native-client/src/core/client.h
    hbase/trunk/hbase-native-client/src/core/connection.cc
    hbase/trunk/hbase-native-client/src/core/connection.h
    hbase/trunk/hbase-native-client/src/core/connection_attr.h
    hbase/trunk/hbase-native-client/src/core/delete.cc
    hbase/trunk/hbase-native-client/src/core/delete.h
    hbase/trunk/hbase-native-client/src/core/get.cc
    hbase/trunk/hbase-native-client/src/core/get.h
    hbase/trunk/hbase-native-client/src/core/hbase_connection_attr.cc
    hbase/trunk/hbase-native-client/src/core/hbase_connection_attr.h
    hbase/trunk/hbase-native-client/src/core/hbase_macros.h
    hbase/trunk/hbase-native-client/src/core/hbase_types.h
    hbase/trunk/hbase-native-client/src/core/mutation.cc
    hbase/trunk/hbase-native-client/src/core/mutation.h
    hbase/trunk/hbase-native-client/src/core/put.cc
    hbase/trunk/hbase-native-client/src/core/put.h
    hbase/trunk/hbase-native-client/src/core/scanner.cc
    hbase/trunk/hbase-native-client/src/core/scanner.h
    hbase/trunk/hbase-native-client/src/rpc/
    hbase/trunk/hbase-native-client/src/rpc/CMakeLists.txt
    hbase/trunk/hbase-native-client/src/sync/
    hbase/trunk/hbase-native-client/src/sync/CMakeLists.txt
    hbase/trunk/hbase-native-client/src/sync/hbase_admin.cc
    hbase/trunk/hbase-native-client/src/sync/hbase_admin.h
    hbase/trunk/hbase-native-client/src/sync/hbase_connection.cc
    hbase/trunk/hbase-native-client/src/sync/hbase_connection.h

Added: hbase/trunk/hbase-native-client/.gitignore
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/.gitignore?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/.gitignore (added)
+++ hbase/trunk/hbase-native-client/.gitignore Fri Jan  3 22:52:41 2014
@@ -0,0 +1,38 @@
+# Compiled Object files
+*.slo
+*.lo
+*.o
+
+# Compiled Dynamic libraries
+*.so
+
+# Compiled Static libraries
+*.lai
+*.la
+*.a
+
+#python
+*.pyc
+
+# CMake Generated Files
+CMakeCache.txt
+CMakeFiles
+Makefile
+cmake_install.CMakeCache
+cmake_install.cmake
+install_manifest.txt
+CTestTestfile.cmake
+build
+Testing
+
+
+
+# Thirdparty dirs
+
+thirdparty/glog-*
+thirdparty/gtest-*
+thirdparty/gtest
+thirdparty/protobuf-*
+thirdparty/libevent-*
+thirdparty/libev-*
+thirdparty/installed

Added: hbase/trunk/hbase-native-client/CMakeLists.txt
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/CMakeLists.txt?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/CMakeLists.txt (added)
+++ hbase/trunk/hbase-native-client/CMakeLists.txt Fri Jan  3 22:52:41 2014
@@ -0,0 +1,153 @@
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+cmake_minimum_required(VERSION 2.6)
+
+# generate CTest input files
+enable_testing()
+
+# where to find cmake modules
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake_modules")
+
+# if no build build type is specified, default to debug builds
+if (NOT CMAKE_BUILD_TYPE)
+  set(CMAKE_BUILD_TYPE Debug)
+endif(NOT CMAKE_BUILD_TYPE)
+
+STRING(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE)
+
+set(CXX_COMMON_FLAGS "-Wall -Wextra -std=c++11")
+set(C_COMMON_FLAGS "-Wall -Wextra -std=c11")
+
+set(CXX_FLAGS_DEBUG "-ggdb -g")
+set(C_FLAGS_DEBUG "-ggdb")
+
+set(CXX_FLAGS_FASTDEBUG "-ggdb -O1")
+set(C_FLAGS_FASTDEBUG "-ggdb -O1")
+
+set(CXX_FLAGS_RELEASE "-O3 -g -DNDEBUG -Wno-strict-aliasing")
+set(C_FLAGS_RELEASE "-O3 -g -DNDEBUG -Wno-strict-aliasing")
+
+# if no build build type is specified, default to debug builds
+if (NOT CMAKE_BUILD_TYPE)
+  set(CMAKE_BUILD_TYPE Debug)
+endif(NOT CMAKE_BUILD_TYPE)
+
+string(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE)
+
+# Set compile flags based on the build type.
+message("Configured for ${CMAKE_BUILD_TYPE} build (set with cmake -DCMAKE_BUILD_TYPE={release,debug,...})")
+if ("${CMAKE_BUILD_TYPE}" STREQUAL "DEBUG")
+  set(CMAKE_CXX_FLAGS ${CXX_FLAGS_DEBUG})
+  set(CMAKE_C_FLAGS ${C_FLAGS_DEBUG})
+elseif ("${CMAKE_BUILD_TYPE}" STREQUAL "FASTDEBUG")
+  set(CMAKE_CXX_FLAGS ${CXX_FLAGS_FASTDEBUG})
+  set(CMAKE_C_FLAGS ${C_FLAGS_FASTDEBUG})
+elseif ("${CMAKE_BUILD_TYPE}" STREQUAL "RELEASE")
+  set(CMAKE_CXX_FLAGS ${CXX_FLAGS_RELEASE})
+  set(CMAKE_C_FLAGS ${C_FLAGS_RELEASE})
+else()
+  message(FATAL_ERROR "Unknown build type: ${CMAKE_BUILD_TYPE}")
+endif ()
+
+set(CMAKE_CXX_FLAGS "${CXX_COMMON_FLAGS} ${CMAKE_CXX_FLAGS}")
+set(CMAKE_C_FLAGS "${C_COMMON_FLAGS} ${CMAKE_C_FLAGS}")
+
+
+# set compile output directory
+string(TOLOWER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_LOWERCASE)
+set(BUILD_OUTPUT_ROOT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/build/${CMAKE_BUILD_TYPE_LOWERCASE}/")
+
+# Link build/latest to the current build directory, to avoid developers
+# accidentally running the latest debug build when in fact they're building
+# release builds.
+file(MAKE_DIRECTORY ${BUILD_OUTPUT_ROOT_DIRECTORY})
+execute_process(COMMAND rm -f ${CMAKE_CURRENT_SOURCE_DIR}/build/latest)
+execute_process(COMMAND ln -sf ${BUILD_OUTPUT_ROOT_DIRECTORY}
+  ${CMAKE_CURRENT_SOURCE_DIR}/build/latest)
+
+# where to put generated libraries
+set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${BUILD_OUTPUT_ROOT_DIRECTORY}")
+set(ARCHIVE_OUTPUT_DIRECTORY "${BUILD_OUTPUT_ROOT_DIRECTORY}")
+set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${BUILD_OUTPUT_ROOT_DIRECTORY}")
+
+# where to put generated binaries
+set(EXECUTABLE_OUTPUT_PATH "${BUILD_OUTPUT_ROOT_DIRECTORY}")
+
+include_directories(src)
+
+#####################
+# Third Party
+#####################
+
+# find boost headers and libs
+set(Boost_DEBUG TRUE)
+set(Boost_USE_MULTITHREADED ON)
+find_package(Boost REQUIRED COMPONENTS thread system-mt)
+include_directories(${Boost_INCLUDE_DIRS})
+
+find_package(Protobuf REQUIRED)
+include_directories(${PROTOBUF_INCLUDE_DIRS})
+add_library(protobuf STATIC IMPORTED)
+set_target_properties(protobuf PROPERTIES IMPORTED_LOCATION "${PROTOBUF_STATIC_LIBRARY}")
+
+find_package(LibEv REQUIRED)
+include_directories(${LIBEV_INCLUDE_DIR})
+add_library(libev STATIC IMPORTED)
+
+
+set(HBASE_LIBS
+    ${PROTOBUF}
+    ${LIBEV}
+    ${Boost_LIBRARIES}
+)
+#########
+# Testing Config
+#########
+
+# find GTest headers and libs
+find_package(GTest REQUIRED)
+include_directories(${GTEST_INCLUDE_DIR})
+add_library(gtest STATIC IMPORTED)
+set_target_properties(gtest PROPERTIES IMPORTED_LOCATION "${GTEST_LIBS}")
+
+set(HBASE_TEST_LIBS ${HBASE_LIBS} ${GTEST_LIBS})
+set(HBASE_ASYNC_TEST_LIBS ${HBASE_LIBS} ${GTEST_LIBS} hbase-async)
+set(HBASE_SYNC_TEST_LIBS ${HBASE_LIBS} ${GTEST_LIBS} hbase-sync)
+
+function(ADD_HBASE_ASYNC_TEST TEST_NAME)
+    add_executable(${TEST_NAME} ${TEST_NAME}.cc)
+    target_link_libraries(${TEST_NAME} ${HBASE_ASYNC_TEST_LIBS})
+    add_test(${TEST_NAME} "${EXECUTABLE_OUTPUT_PATH}/${TEST_NAME}")
+endfunction()
+
+
+function(ADD_HBASE_SYNC_TEST TEST_NAME)
+    add_executable(${TEST_NAME} ${TEST_NAME}.cc)
+    target_link_libraries(${TEST_NAME} ${HBASE_ASYNC_TEST_LIBS})
+    add_test(${TEST_NAME} "${EXECUTABLE_OUTPUT_PATH}/${TEST_NAME}")
+endfunction()
+
+
+#####
+# Actual project definition
+#####
+add_subdirectory(src/async)
+add_subdirectory(src/sync)
+
+add_subdirectory(src/core)
+add_subdirectory(src/rpc)
+
+
+add_library(hbase-async SHARED $<TARGET_OBJECTS:hcore> $<TARGET_OBJECTS:hasync>)
+add_library(hbase-sync SHARED $<TARGET_OBJECTS:hcore> $<TARGET_OBJECTS:hsync>)

Added: hbase/trunk/hbase-native-client/README.md
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/README.md?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/README.md (added)
+++ hbase/trunk/hbase-native-client/README.md Fri Jan  3 22:52:41 2014
@@ -0,0 +1,34 @@
+# hbase-native-client
+
+Native client for HBase 0.96
+
+This is a C  library that implements a
+HBase client.  It's thread safe and libEv
+based.
+
+
+## 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.

Added: hbase/trunk/hbase-native-client/bin/build-all.sh
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/bin/build-all.sh?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/bin/build-all.sh (added)
+++ hbase/trunk/hbase-native-client/bin/build-all.sh Fri Jan  3 22:52:41 2014
@@ -0,0 +1,41 @@
+#! /usr/bin/env bash
+#
+#/**
+# * Copyright The Apache Software Foundation
+# *
+# * Licensed to the Apache Software Foundation (ASF) under one
+# * or more contributor license agreements.  See the NOTICE file
+# * distributed with this work for additional information
+# * regarding copyright ownership.  The ASF licenses this file
+# * to you under the Apache License, Version 2.0 (the
+# * "License"); you may not use this file except in compliance
+# * with the License.  You may obtain a copy of the License at
+# *
+# *     http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+# */
+
+set -e
+set -x
+
+SOURCE="${BASH_SOURCE[0]}"
+while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
+  DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+  SOURCE="$(readlink "$SOURCE")"
+  [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
+done
+DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+
+source ${DIR}/hbase-client-env.sh
+
+${DIR}/download-thirdparty.sh
+${DIR}/build-thirdparty.sh
+cd ${HBASE_DIR}
+cmake .
+make clean all
+make test

Propchange: hbase/trunk/hbase-native-client/bin/build-all.sh
------------------------------------------------------------------------------
    svn:executable = *

Added: hbase/trunk/hbase-native-client/bin/build-thirdparty.sh
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/bin/build-thirdparty.sh?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/bin/build-thirdparty.sh (added)
+++ hbase/trunk/hbase-native-client/bin/build-thirdparty.sh Fri Jan  3 22:52:41 2014
@@ -0,0 +1,64 @@
+#! /usr/bin/env bash
+#
+#/**
+# * Copyright The Apache Software Foundation
+# *
+# * Licensed to the Apache Software Foundation (ASF) under one
+# * or more contributor license agreements.  See the NOTICE file
+# * distributed with this work for additional information
+# * regarding copyright ownership.  The ASF licenses this file
+# * to you under the Apache License, Version 2.0 (the
+# * "License"); you may not use this file except in compliance
+# * with the License.  You may obtain a copy of the License at
+# *
+# *     http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+# */
+
+set -x
+set -e
+
+SOURCE="${BASH_SOURCE[0]}"
+while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
+  DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+  SOURCE="$(readlink "$SOURCE")"
+  [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
+done
+DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+
+source ${DIR}/../bin/hbase-client-env.sh
+
+# On some systems, autotools installs libraries to lib64 rather than lib.  Fix
+# this by setting up lib64 as a symlink to lib.  We have to do this step first
+# to handle cases where one third-party library depends on another.
+mkdir -p "${HBASE_PREFIX}/lib"
+cd ${HBASE_PREFIX}
+ln -sf lib "${HBASE_PREFIX}/lib64"
+
+if [ ! -f gtest ]; then
+  cd ${HBASE_GTEST_DIR}
+  cmake .
+  make -j4
+  cd ..
+  ln -sf ${HBASE_GTEST_DIR} gtest
+fi
+
+if [ ! -f ${HBASE_PREFIX}/lib/libprotobuf.a ]; then
+  cd ${HBASE_PROTOBUF_DIR}
+  ./configure --with-pic --disable-shared --prefix=${HBASE_PREFIX}
+  make -j4 install
+fi
+
+if [ ! -f ${HBASE_PREFIX}/lib/libev.a ]; then
+  cd ${HBASE_LIBEV_DIR}
+  ./configure --with-pic --disable-shared --prefix=${HBASE_PREFIX}
+  make -j4 install
+fi
+
+echo "---------------------"
+echo "Thirdparty dependencies built and installed into $HBASE_PREFIX successfully"

Propchange: hbase/trunk/hbase-native-client/bin/build-thirdparty.sh
------------------------------------------------------------------------------
    svn:executable = *

Added: hbase/trunk/hbase-native-client/bin/download-thirdparty.sh
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/bin/download-thirdparty.sh?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/bin/download-thirdparty.sh (added)
+++ hbase/trunk/hbase-native-client/bin/download-thirdparty.sh Fri Jan  3 22:52:41 2014
@@ -0,0 +1,70 @@
+#! /usr/bin/env bash
+#
+#/**
+# * Copyright The Apache Software Foundation
+# *
+# * Licensed to the Apache Software Foundation (ASF) under one
+# * or more contributor license agreements.  See the NOTICE file
+# * distributed with this work for additional information
+# * regarding copyright ownership.  The ASF licenses this file
+# * to you under the Apache License, Version 2.0 (the
+# * "License"); you may not use this file except in compliance
+# * with the License.  You may obtain a copy of the License at
+# *
+# *     http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+# */
+
+set -x
+set -e
+
+SOURCE="${BASH_SOURCE[0]}"
+while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
+  DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+  SOURCE="$(readlink "$SOURCE")"
+  [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
+done
+DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+
+source ${DIR}/../bin/hbase-client-env.sh
+
+mkdir -p ${HBASE_TP_DIR}
+cd ${HBASE_TP_DIR}
+
+
+if [ ! -d ${HBASE_GTEST_DIR} ]; then
+  echo "Fetching gtest"
+  wget -c http://googletest.googlecode.com/files/gtest-${HBASE_GTEST_VERSION}.zip
+  unzip gtest-${HBASE_GTEST_VERSION}.zip
+  rm gtest-${HBASE_GTEST_VERSION}.zip
+fi
+
+if [ ! -d ${HBASE_PROTOBUF_DIR} ]; then
+  echo "Fetching protobuf"
+  wget -c http://protobuf.googlecode.com/files/protobuf-${HBASE_PROTOBUF_VERSION}.tar.gz
+  tar xzf protobuf-${HBASE_PROTOBUF_VERSION}.tar.gz
+  rm protobuf-${HBASE_PROTOBUF_VERSION}.tar.gz
+fi
+
+if [ ! -d $HBASE_LIBEV_DIR ]; then
+  echo "Fetching libev"
+  wget -c http://dist.schmorp.de/libev/libev-${HBASE_LIBEV_VERSION}.tar.gz
+  tar zxf libev-${HBASE_LIBEV_VERSION}.tar.gz
+  rm -rf libev-${HBASE_LIBEV_VERSION}.tar.gz
+fi
+
+if [ ! -d $HBASE_PREFIX/bin/cpplint.py ]; then
+  echo "Fetching cpplint"
+  mkdir -p $HBASE_PREFIX/bin/
+  wget -O $HBASE_PREFIX/bin/cpplint.py http://google-styleguide.googlecode.com/svn/trunk/cpplint/cpplint.py
+  chmod +x $HBASE_PREFIX/bin/cpplint.py
+fi
+
+
+echo "---------------"
+echo "Thirdparty dependencies downloaded successfully"

Propchange: hbase/trunk/hbase-native-client/bin/download-thirdparty.sh
------------------------------------------------------------------------------
    svn:executable = *

Added: hbase/trunk/hbase-native-client/bin/hbase-client-env.sh
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/bin/hbase-client-env.sh?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/bin/hbase-client-env.sh (added)
+++ hbase/trunk/hbase-native-client/bin/hbase-client-env.sh Fri Jan  3 22:52:41 2014
@@ -0,0 +1,47 @@
+#! /usr/bin/env bash
+#
+#/**
+# * Copyright The Apache Software Foundation
+# *
+# * Licensed to the Apache Software Foundation (ASF) under one
+# * or more contributor license agreements.  See the NOTICE file
+# * distributed with this work for additional information
+# * regarding copyright ownership.  The ASF licenses this file
+# * to you under the Apache License, Version 2.0 (the
+# * "License"); you may not use this file except in compliance
+# * with the License.  You may obtain a copy of the License at
+# *
+# *     http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+# */
+
+SOURCE="${BASH_SOURCE[0]}"
+while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
+  DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+  SOURCE="$(readlink "$SOURCE")"
+  [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to
+                                               # resolve it relative to the path where
+                                               # the symlink file was located
+done
+DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+HBASE_DIR="${DIR}/../"
+HBASE_TP_DIR="${HBASE_DIR}/thirdparty/"
+
+HBASE_PREFIX=$HBASE_TP_DIR/installed
+
+HBASE_GTEST_VERSION=1.7.0
+HBASE_GTEST_DIR=$HBASE_TP_DIR/gtest-$HBASE_GTEST_VERSION
+
+HBASE_PROTOBUF_VERSION=2.5.0
+HBASE_PROTOBUF_DIR=$HBASE_TP_DIR/protobuf-$HBASE_PROTOBUF_VERSION
+
+HBASE_LIBEV_VERSION=4.15
+HBASE_LIBEV_DIR=$HBASE_TP_DIR/libev-$HBASE_LIBEV_VERSION
+
+# use the compiled tools
+export PATH=$HBASE_PREFIX/bin:$PATH

Added: hbase/trunk/hbase-native-client/cmake_modules/FindGTest.cmake
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/cmake_modules/FindGTest.cmake?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/cmake_modules/FindGTest.cmake (added)
+++ hbase/trunk/hbase-native-client/cmake_modules/FindGTest.cmake Fri Jan  3 22:52:41 2014
@@ -0,0 +1,36 @@
+set( GTEST_INCLUDE_SEARCH
+  ${CMAKE_SOURCE_DIR}/thirdparty/gtest/include
+)
+
+set( GTEST_LIB_SEARCH
+  ${CMAKE_SOURCE_DIR}/thirdparty/gtest
+)
+
+find_path(GTEST_INCLUDE
+  NAMES gtest/gtest.h
+  PATHS ${GTEST_INCLUDE_SEARCH}
+  NO_DEFAULT_PATH
+)
+
+find_library(GTEST_LIBRARY
+  NAMES gtest
+  PATHS ${GTEST_LIB_SEARCH}
+  NO_DEFAULT_PATH
+)
+
+find_library(GTEST_LIBRARY_MAIN
+  NAMES gtest_main
+  PATHS ${GTEST_LIB_SEARCH}
+  NO_DEFAULT_PATH
+)
+
+if (GTEST_INCLUDE AND GTEST_LIBRARY AND GTEST_LIBRARY_MAIN)
+  set(GTEST_LIBS ${GTEST_LIBRARY} ${GTEST_LIBRARY_MAIN})
+  set(GTEST_INCLUDE_DIR ${GTEST_INCLUDE})
+  set(GTEST_FOUND TRUE)
+endif()
+
+mark_as_advanced(
+  GTEST_INCLUDE_DIR
+  GTEST_LIBS
+)

Added: hbase/trunk/hbase-native-client/cmake_modules/FindLibEv.cmake
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/cmake_modules/FindLibEv.cmake?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/cmake_modules/FindLibEv.cmake (added)
+++ hbase/trunk/hbase-native-client/cmake_modules/FindLibEv.cmake Fri Jan  3 22:52:41 2014
@@ -0,0 +1,30 @@
+set( LIBEV_INCLUDE_SEARCH
+  ${CMAKE_SOURCE_DIR}/thirdparty/installed/include
+)
+
+set( LIBEV_LIB_SEARCH
+  ${CMAKE_SOURCE_DIR}/thirdparty/installed/include
+)
+
+find_path(LIBEV_INCLUDE
+  NAMES ev++.h
+  PATHS ${LIBEV_INCLUDE_SEARCH}
+  NO_DEFAULT_PATH
+)
+
+find_library(LIBEV_LIBRARY
+  NAMES ev
+  PATHS ${LIBEV_LIB_SEARCH}
+  NO_DEFAULT_PATH
+)
+
+if (LIBEV_INCLUDE_PATH AND LIBEV_LIBRARY)
+  set(LIBEV_LIBS ${LIBEV_LIBRARY})
+  set(LIBEV_INCLUDE_DIR ${LIBEV_INCLUDE})
+  set(LIBEV_FOUND TRUE)
+endif()
+
+mark_as_advanced(
+  LIBEV_INCLUDE_DIR
+  LIBEV_LIBS
+)

Added: hbase/trunk/hbase-native-client/src/async/CMakeLists.txt
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/src/async/CMakeLists.txt?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/src/async/CMakeLists.txt (added)
+++ hbase/trunk/hbase-native-client/src/async/CMakeLists.txt Fri Jan  3 22:52:41 2014
@@ -0,0 +1,27 @@
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+set( ASYNC_SRC
+  hbase_admin.cc
+  hbase_client.cc
+  hbase_connection.cc
+  hbase_get.cc
+  hbase_mutations.cc
+  hbase_result.cc
+  hbase_scanner.cc
+)
+
+
+add_library(hasync OBJECT ${ASYNC_SRC})
+
+ADD_HBASE_ASYNC_TEST(mutations-test)
+ADD_HBASE_ASYNC_TEST(get-test)

Added: hbase/trunk/hbase-native-client/src/async/get-test.cc
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/src/async/get-test.cc?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/src/async/get-test.cc (added)
+++ hbase/trunk/hbase-native-client/src/async/get-test.cc Fri Jan  3 22:52:41 2014
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <pthread.h>
+
+#include "gtest/gtest.h"
+#include "async/hbase_get.h"
+#include "async/hbase_client.h"
+
+
+pthread_cond_t cv;
+pthread_mutex_t mutex;
+
+TEST(GetTest, TestPut) {
+  char tn[] = "T1";
+  hb_byte_t row[] = "ROW";
+
+  hb_client_t client = NULL;
+  hb_get_t get = NULL;
+  int32_t s1 = -1;
+
+  pthread_cond_init(&cv, NULL);
+  pthread_mutex_init(&mutex, NULL);
+
+  s1 = hb_client_create(&client, NULL);
+  EXPECT_EQ(0, s1);
+
+  s1 = hb_get_create(&get);
+  EXPECT_EQ(0, s1);
+
+  hb_get_set_table(get, tn, 2);
+  hb_get_set_row(get, row, 3);
+
+  /*
+   * TODO:
+   * This is currently a NO-OP as there is no CB.
+   */
+  hb_get_send(client, get, NULL, NULL);
+
+  hb_client_destroy(client, NULL, NULL);
+
+  EXPECT_EQ(0, s1);
+}

Added: hbase/trunk/hbase-native-client/src/async/hbase_admin.cc
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/src/async/hbase_admin.cc?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/src/async/hbase_admin.cc (added)
+++ hbase/trunk/hbase-native-client/src/async/hbase_admin.cc Fri Jan  3 22:52:41 2014
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "async/hbase_admin.h"
+
+#include <stdlib.h>
+#include <stdbool.h>
+
+#include "core/admin.h"
+#include "async/hbase_connection.h"
+
+int32_t hb_admin_create(hb_admin_t* admin_ptr,
+    hb_connection_t connection) {
+  (*admin_ptr) = reinterpret_cast<hb_admin_t>(new Admin());
+  return 0;
+}
+
+/*
+ * Disconnect the admin releasing any internal objects
+ * or connections created in the background.
+ */
+int32_t hb_admin_destroy(hb_admin_t admin,
+    hb_admin_disconnection_cb cb, void * extra) {
+  if (cb)
+    cb(0, admin, extra);
+  free(admin);
+  return 0;
+}
+
+/*
+ * See if a table exists.
+ */
+int32_t hb_admin_table_exists(hb_admin_t admin,
+    char * name_space, size_t name_space_length,
+    char * table, size_t table_length,
+    hb_admin_table_exists_cb cb, void * extra) {
+  if (cb)
+    cb(0, admin, name_space, name_space_length,
+        table, table_length, true, extra);
+  return 0;
+}

Added: hbase/trunk/hbase-native-client/src/async/hbase_admin.h
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/src/async/hbase_admin.h?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/src/async/hbase_admin.h (added)
+++ hbase/trunk/hbase-native-client/src/async/hbase_admin.h Fri Jan  3 22:52:41 2014
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef ASYNC_HBASE_ADMIN_H_
+#define ASYNC_HBASE_ADMIN_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdlib.h>
+#include <stdbool.h>
+
+#include "core/hbase_macros.h"
+#include "async/hbase_connection.h"
+
+
+typedef void (* hb_admin_disconnection_cb)( int32_t status,
+    hb_admin_t admin, void * extra);
+typedef void (* hb_admin_table_exists_cb)(int32_t status, hb_admin_t admin,
+    char * name_space, size_t name_space_length,
+    char * table, size_t table_length, bool exsists, void * extra);
+
+/**
+ * Create a new hb_admin.
+ * All fields are initialized to the defaults. If you want to set
+ * connection or other properties, set those before calling any
+ * RPC functions.
+ */
+HBASE_API int32_t hb_admin_create(hb_admin_t* admin_ptr,
+    hb_connection_t connection);
+
+/*
+ * Disconnect the admin releasing any internal objects
+ * or connections created in the background.
+ */
+HBASE_API int32_t hb_admin_destroy(hb_admin_t admin,
+    hb_admin_disconnection_cb cb, void * extra);
+
+/*
+ * See if a table exists.
+ */
+HBASE_API int32_t hb_admin_table_exists(hb_admin_t admin,
+    char * name_space, size_t name_space_length,
+    char * table, size_t table_length,
+    hb_admin_table_exists_cb cb, void * extra);
+
+
+#ifdef __cplusplus
+}  // extern "C"
+#endif  // __cplusplus
+
+#endif  // ASYNC_HBASE_ADMIN_H_

Added: hbase/trunk/hbase-native-client/src/async/hbase_client.cc
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/src/async/hbase_client.cc?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/src/async/hbase_client.cc (added)
+++ hbase/trunk/hbase-native-client/src/async/hbase_client.cc Fri Jan  3 22:52:41 2014
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "async/hbase_client.h"
+
+#include <pthread.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "core/client.h"
+#include "async/hbase_connection.h"
+
+int32_t hb_client_create(hb_client_t* client_ptr,
+    hb_connection_t connection) {
+  (*client_ptr) = reinterpret_cast<hb_client_t>(new Client());
+  if (client_ptr == NULL)
+    return -1;  // TODO(eclark): setup the errno file.
+  return 0;
+}
+
+int32_t hb_client_destroy(hb_client_t client,
+    hb_client_disconnection_cb cb, void * extra) {
+  if (client == NULL)
+    return -2;
+  if (cb) {
+    cb(0, client, extra);
+  }
+  free(client);
+  return 0;
+}
+

Added: hbase/trunk/hbase-native-client/src/async/hbase_client.h
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/src/async/hbase_client.h?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/src/async/hbase_client.h (added)
+++ hbase/trunk/hbase-native-client/src/async/hbase_client.h Fri Jan  3 22:52:41 2014
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef ASYNC_HBASE_CLIENT_H_
+#define ASYNC_HBASE_CLIENT_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "core/hbase_macros.h"
+#include "core/hbase_types.h"
+
+/*
+ * Client disconnection callback typedef
+ *
+ * This is called after the connections are closed, but just
+ * before the client is freed.
+ */
+typedef void (* hb_client_disconnection_cb)( int32_t status,
+    hb_client_t client, void * extra);
+
+/**
+ * Create an hb_client_t.
+ *
+ * If connection is null then all defaults will be used.
+ */
+HBASE_API int32_t hb_client_create(hb_client_t * client_ptr,
+    hb_connection_t connection);
+
+/*
+ * Disconnect the client releasing any internal objects
+ * or connections created in the background.
+ */
+HBASE_API int32_t hb_client_destroy(hb_client_t client,
+    hb_client_disconnection_cb cb, void * extra);
+
+#ifdef __cplusplus
+}  // extern "C"
+#endif  // __cplusplus
+
+#endif  // ASYNC_HBASE_CLIENT_H_
+
+

Added: hbase/trunk/hbase-native-client/src/async/hbase_connection.cc
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/src/async/hbase_connection.cc?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/src/async/hbase_connection.cc (added)
+++ hbase/trunk/hbase-native-client/src/async/hbase_connection.cc Fri Jan  3 22:52:41 2014
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "async/hbase_connection.h"
+
+#include "core/connection.h"
+#include "core/hbase_types.h"
+
+extern "C" {
+int32_t hb_connection_create(hb_connection_t * connection_ptr,
+    hb_connection_attr_t connection_attr) {
+  (*connection_ptr) = reinterpret_cast<hb_connection_t>(new Connection());
+  if ((*connection_ptr) == NULL)
+    return -1;
+  return 0;
+}
+int32_t hb_connection_destroy(hb_connection_t connection) {
+  free(connection);
+  return 0;
+}
+}   // extern "C"

Added: hbase/trunk/hbase-native-client/src/async/hbase_connection.h
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/src/async/hbase_connection.h?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/src/async/hbase_connection.h (added)
+++ hbase/trunk/hbase-native-client/src/async/hbase_connection.h Fri Jan  3 22:52:41 2014
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef ASYNC_HBASE_CONNECTION_H_
+#define ASYNC_HBASE_CONNECTION_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "core/hbase_macros.h"
+#include "core/hbase_types.h"
+#include "core/hbase_connection_attr.h"
+
+#include <stdlib.h>
+
+/**
+ * Create an hb_connection.
+ *
+ * if connection_attr is null everything will be left as default
+ */
+HBASE_API int32_t hb_connection_create(hb_connection_t * connection_ptr,
+    hb_connection_attr_t connection_attr);
+
+/**
+ * Destroy the connection and free all resources allocated at creation
+ * time.
+ */
+HBASE_API int32_t hb_connection_destroy(hb_connection_t connection);
+
+#ifdef __cplusplus
+}  // extern "C"
+#endif  // __cplusplus
+
+#endif  // ASYNC_HBASE_CONNECTION_H_
+

Added: hbase/trunk/hbase-native-client/src/async/hbase_errno.h
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/src/async/hbase_errno.h?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/src/async/hbase_errno.h (added)
+++ hbase/trunk/hbase-native-client/src/async/hbase_errno.h Fri Jan  3 22:52:41 2014
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef ASYNC_HBASE_ERRNO_H_
+#define ASYNC_HBASE_ERRNO_H_
+
+#endif  // ASYNC_HBASE_ERRNO_H_

Added: hbase/trunk/hbase-native-client/src/async/hbase_get.cc
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/src/async/hbase_get.cc?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/src/async/hbase_get.cc (added)
+++ hbase/trunk/hbase-native-client/src/async/hbase_get.cc Fri Jan  3 22:52:41 2014
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "async/hbase_get.h"
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "core/get.h"
+
+int32_t hb_get_create(hb_get_t * get_ptr) {
+  (*get_ptr) = reinterpret_cast<hb_get_t>(new Get());
+  if ((*get_ptr) == NULL) {
+    return -1;
+  }
+  return 0;
+}
+
+int32_t hb_get_destroy(hb_get_t get) {
+  free(get);
+  return 0;
+}
+
+int32_t hb_get_set_row(hb_get_t get, unsigned char * row,
+    size_t row_length) {
+  return 0;
+}
+
+int32_t hb_get_set_table(hb_get_t get,
+    char * table, size_t table_length) {
+  return 0;
+}
+
+int32_t hb_get_set_namespace(hb_get_t get,
+    char * name_space, size_t name_space_length) {
+  return 0;
+}
+
+int32_t hb_get_send(hb_client_t client,
+    hb_get_t get, hb_get_cb cb, void * extra) {
+  if (cb) {
+    cb(0, client, get, NULL, extra);
+  }
+  return 0;
+}

Added: hbase/trunk/hbase-native-client/src/async/hbase_get.h
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/src/async/hbase_get.h?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/src/async/hbase_get.h (added)
+++ hbase/trunk/hbase-native-client/src/async/hbase_get.h Fri Jan  3 22:52:41 2014
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef ASYNC_HBASE_GET_H_
+#define ASYNC_HBASE_GET_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "core/hbase_macros.h"
+#include "core/hbase_types.h"
+
+/**
+ * Allocate a new get structure.
+ * Ownership passes to the caller.
+ */
+HBASE_API int32_t hb_get_create(hb_get_t * get_ptr);
+
+/**
+ * Destroy and free a get structure.
+ */
+HBASE_API int32_t hb_get_destroy(hb_get_t  get);
+
+/**
+ * set the row of this get.
+ */
+HBASE_API int32_t hb_get_set_row(hb_get_t get, hb_byte_t * row,
+    size_t row_length);
+
+/**
+ * Set the table.
+ */
+HBASE_API int32_t hb_get_set_table(hb_get_t get,
+    char * table, size_t table_length);
+
+/**
+ * Set the namespace this get is targeting.
+ */
+HBASE_API int32_t hb_get_set_namespace(hb_get_t get,
+    char * name_space, size_t name_space_length);
+
+/*
+ * get call back typedef.
+ */
+typedef void (* hb_get_cb)(int32_t status, hb_client_t client,
+    hb_get_t get, hb_result_t results, void * extra);
+
+HBASE_API int32_t hb_get_send(hb_client_t client,
+    hb_get_t get, hb_get_cb cb, void * extra);
+
+
+#ifdef __cplusplus
+}  // extern "C"
+#endif  // __cplusplus
+
+#endif  // ASYNC_HBASE_GET_H_

Added: hbase/trunk/hbase-native-client/src/async/hbase_mutations.cc
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/src/async/hbase_mutations.cc?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/src/async/hbase_mutations.cc (added)
+++ hbase/trunk/hbase-native-client/src/async/hbase_mutations.cc Fri Jan  3 22:52:41 2014
@@ -0,0 +1,111 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "async/hbase_mutations.h"
+
+#include <stdlib.h>
+
+#include "core/hbase_types.h"
+#include "core/mutation.h"
+#include "core/put.h"
+#include "core/delete.h"
+
+#include "async/hbase_result.h"
+
+extern "C" {
+int32_t hb_put_create(hb_put_t* put_ptr) {
+  (*put_ptr) = reinterpret_cast<hb_put_t>(new Put());
+  return 0;
+}
+
+int32_t hb_delete_create(hb_delete_t * delete_ptr) {
+  (*delete_ptr) = reinterpret_cast<hb_delete_t>(new Delete());
+  return 0;
+}
+
+int32_t hb_increment_create(hb_increment_t * increment_ptr) {
+  return 0;
+}
+
+int32_t hb_append_create(hb_append_t * append_ptr) {
+  return 0;
+}
+
+int32_t hb_mutation_destroy(hb_mutation_t mutation) {
+  return 0;
+}
+
+HBASE_API int32_t hb_mutation_set_namespace(hb_mutation_t mutation,
+    char * name_space, size_t name_space_length) {
+  Mutation * m = reinterpret_cast<Mutation *>(mutation);
+  m->set_namespace(name_space, name_space_length);
+  return 0;
+}
+
+HBASE_API int32_t hb_mutation_set_table(hb_mutation_t mutation,
+    char * table, size_t table_length) {
+  Mutation * m = reinterpret_cast<Mutation *>(mutation);
+  m->set_namespace(table, table_length);
+  return 0;
+}
+
+int32_t hb_mutation_set_row(hb_mutation_t mutation,
+    unsigned char * rk, size_t row_length) {
+  Mutation * m = reinterpret_cast<Mutation *>(mutation);
+  m->set_row(rk, row_length);
+  return 0;
+}
+
+int32_t hb_mutation_set_durability(hb_mutation_t mutation,
+    hb_durability_type durability) {
+  Mutation * m = reinterpret_cast<Mutation *>(mutation);
+  m->set_durability(durability);
+  return 0;
+}
+
+int32_t hb_put_add_cell(hb_put_t put, hb_cell_t * cell) {
+  return 0;
+}
+
+int32_t hb_delete_add_col(hb_increment_t incr,
+    unsigned char * family, size_t family_length,
+    unsigned char * qual, size_t qual_length) {
+  return 0;
+}
+
+int32_t hb_increment_add_value(hb_increment_t incr,
+    unsigned char * family, size_t family_length,
+    unsigned char * qual, size_t qual_length,
+    int64_t ammount) {
+  return 0;
+}
+
+int32_t hb_append_add_cell(hb_append_t put, hb_cell_t * cell) {
+  return 0;
+}
+
+int32_t hb_mutation_send(hb_client_t client,
+    hb_mutation_t mutation, hb_mutation_cb cb,
+    void * extra) {
+  if (cb) {
+    cb(0, client, mutation, NULL, extra);
+  }
+  return 0;
+}
+}   // extern "C"

Added: hbase/trunk/hbase-native-client/src/async/hbase_mutations.h
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/src/async/hbase_mutations.h?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/src/async/hbase_mutations.h (added)
+++ hbase/trunk/hbase-native-client/src/async/hbase_mutations.h Fri Jan  3 22:52:41 2014
@@ -0,0 +1,119 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef ASYNC_HBASE_MUTATIONS_H_
+#define ASYNC_HBASE_MUTATIONS_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "core/hbase_types.h"
+#include "async/hbase_result.h"
+
+// Creation methods
+
+/**
+ * Create a put.
+ * Ownership passes to the caller.
+ */
+HBASE_API int32_t hb_put_create(hb_put_t * put_ptr);
+
+/**
+ * Create a delete
+ * Ownership passes to the caller.
+ */
+HBASE_API int32_t hb_delete_create(hb_delete_t * delete_ptr);
+
+/**
+ * Create an increment
+ * Ownership passes to the caller.
+ */
+HBASE_API int32_t hb_increment_create(hb_increment_t * increment_ptr);
+
+/**
+ * Create an append
+ * Ownership passes to the caller.
+ */
+HBASE_API int32_t hb_append_create(hb_append_t * append_ptr);
+
+/**
+ * Destroy the mutation.
+ * All internal structures are cleaned up.  However any backing
+ * data structures passed in by the user are not cleaned up.
+ */
+HBASE_API int32_t hb_mutation_destroy(hb_mutation_t mutation);
+
+// Shared setters.
+HBASE_API int32_t hb_mutation_set_namespace(hb_mutation_t mutation,
+    char * name_space, size_t name_space_length);
+HBASE_API int32_t hb_mutation_set_table(hb_mutation_t mutation,
+    char * table, size_t table_length);
+HBASE_API int32_t hb_mutation_set_row(hb_mutation_t mutation,
+    unsigned char * rk, size_t row_length);
+HBASE_API int32_t hb_mutation_set_durability(hb_mutation_t mutation,
+    hb_durability_type durability);
+
+// Put Setters etc.
+HBASE_API int32_t hb_put_add_cell(hb_put_t put, hb_cell_t * cell);
+
+// Delete
+HBASE_API int32_t hb_delete_add_col(hb_increment_t incr,
+    unsigned char * family, size_t family_length,
+    unsigned char * qual, size_t qual_length);
+
+// Increment
+HBASE_API int32_t hb_increment_add_value(hb_increment_t incr,
+    unsigned char * family, size_t family_length,
+    unsigned char * qual, size_t qual_length,
+    int64_t ammount);
+
+// Append
+HBASE_API int32_t hb_append_add_cell(hb_append_t put, hb_cell_t * cell);
+
+// Now that the mutations are created and populated
+// The real meat of the client is below.
+
+/*
+ * mutation call back typedef
+ */
+typedef void (* hb_mutation_cb)(int32_t status,
+    hb_client_t client, hb_mutation_t mutation,
+    hb_result_t result, void * extra);
+
+/*
+ * Queue a single mutation.  This mutation will be
+ * sent out in the background and can be batched with
+ * other requests destined for the same server.
+ *
+ * The call back will be executed after the response
+ * is received from the RegionServer.  Even if the
+ * mutation was batched with other requests,
+ * the call back will be invoked for every mutation
+ * individually.
+ */
+HBASE_API int32_t hb_mutation_send(hb_client_t client,
+    hb_mutation_t mutation, hb_mutation_cb cb,
+    void * extra);
+
+#ifdef __cplusplus
+}  // extern "C"
+#endif  // __cplusplus
+
+#endif  // ASYNC_HBASE_MUTATIONS_H_

Added: hbase/trunk/hbase-native-client/src/async/hbase_result.cc
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/src/async/hbase_result.cc?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/src/async/hbase_result.cc (added)
+++ hbase/trunk/hbase-native-client/src/async/hbase_result.cc Fri Jan  3 22:52:41 2014
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "async/hbase_result.h"
+
+#include "core/hbase_types.h"
+
+int32_t hb_result_get_cells(hb_result_t result,
+    hb_cell_t ** cell_ptr, size_t * num_cells) {
+  return 0;
+}
+
+int32_t hb_result_get_table(hb_result_t result,
+    char ** table, size_t * table_length) {
+  return 0;
+}
+
+int32_t hb_result_get_namespace(hb_result_t result,
+    char ** name_space, size_t * name_space_length) {
+  return 0;
+}

Added: hbase/trunk/hbase-native-client/src/async/hbase_result.h
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/src/async/hbase_result.h?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/src/async/hbase_result.h (added)
+++ hbase/trunk/hbase-native-client/src/async/hbase_result.h Fri Jan  3 22:52:41 2014
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef ASYNC_HBASE_RESULT_H_
+#define ASYNC_HBASE_RESULT_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "core/hbase_macros.h"
+#include "core/hbase_types.h"
+
+HBASE_API int32_t hb_result_destroy(hb_result_t result);
+
+HBASE_API int32_t hb_result_get_cells(hb_result_t result,
+    hb_cell_t ** cell_ptr, size_t * num_cells);
+
+HBASE_API int32_t hb_result_get_table(hb_result_t result,
+    char ** table, size_t * table_length);
+HBASE_API int32_t hb_result_get_namespace(hb_result_t result,
+    char ** name_space, size_t * name_space_length);
+
+#ifdef __cplusplus
+}  // extern "C"
+#endif  // __cplusplus
+
+#endif  // ASYNC_HBASE_RESULT_H_

Added: hbase/trunk/hbase-native-client/src/async/hbase_scanner.cc
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/src/async/hbase_scanner.cc?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/src/async/hbase_scanner.cc (added)
+++ hbase/trunk/hbase-native-client/src/async/hbase_scanner.cc Fri Jan  3 22:52:41 2014
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+#include "async/hbase_scanner.h"
+
+#include <stdlib.h>
+
+#include "core/hbase_types.h"
+#include "core/scanner.h"
+
+int32_t hb_scanner_create(hb_scanner_t * scanner_ptr) {
+  (*scanner_ptr) = reinterpret_cast<hb_scanner_t>(new Scanner());
+  return (*scanner_ptr != NULL)?0:1;
+}
+
+HBASE_API int32_t hb_scanner_set_table(hb_scanner_t scanner,
+    char * table, size_t table_length) {
+  return 0;
+}
+
+HBASE_API int32_t hb_scanner_set_namespace(hb_scanner_t scanner,
+    char * name_space, size_t name_space_length) {
+  return 0;
+}
+
+int32_t hb_scanner_set_start_row(hb_scanner_t scanner,
+    unsigned char * start_row, size_t start_row_length) {
+  return 0;
+}
+
+int32_t hb_scanner_set_end_row(hb_scanner_t scanner,
+    unsigned char * end_row, size_t end_row_length) {
+  return 0;
+}
+
+int32_t hb_scanner_set_cache_size(hb_scanner_t scanner,
+    size_t cache_size) {
+  return 0;
+}
+
+int32_t hb_scanner_set_num_versions(hb_scanner_t scanner,
+    int8_t num_versions) {
+  return 0;
+}

Added: hbase/trunk/hbase-native-client/src/async/hbase_scanner.h
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/src/async/hbase_scanner.h?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/src/async/hbase_scanner.h (added)
+++ hbase/trunk/hbase-native-client/src/async/hbase_scanner.h Fri Jan  3 22:52:41 2014
@@ -0,0 +1,80 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef ASYNC_HBASE_SCANNER_H_
+#define ASYNC_HBASE_SCANNER_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "async/hbase_result.h"
+#include "core/hbase_types.h"
+
+HBASE_API int32_t hb_scanner_create(hb_scanner_t * scanner_ptr);
+
+HBASE_API int32_t hb_scanner_set_table(hb_scanner_t scanner,
+    char * table, size_t table_length);
+HBASE_API int32_t hb_scanner_set_namespace(hb_scanner_t scanner,
+    char * name_space, size_t name_space_length);
+
+HBASE_API int32_t hb_scanner_set_start_row(hb_scanner_t scanner,
+    unsigned char * start_row, size_t start_row_length);
+HBASE_API int32_t hb_scanner_set_end_row(hb_scanner_t scanner,
+    unsigned char * end_row, size_t end_row_length);
+
+HBASE_API int32_t hb_scanner_set_cache_size(hb_scanner_t scanner,
+    size_t cache_size);
+HBASE_API int32_t hb_scanner_set_batch_size(hb_scanner_t scanner,
+    size_t batch_size);
+HBASE_API int32_t hb_scanner_set_num_versions(hb_scanner_t scanner,
+    int8_t num_versions);
+
+/*
+ * Scanner call back typedef.
+ *
+ * This will be called when initinalization of the scanner
+ * is complete.  It will also be called when scanner next
+ * returns results.
+ */
+typedef void (* hb_scanner_cb)(int32_t status,
+                               hb_client_t client,
+                               hb_scanner_t scanner,
+                               hb_result_t results,
+                               size_t num_results,
+                               void * extra);
+/*
+ * Get the next results from the scanner
+ */
+HBASE_API int32_t hb_scanner_next(hb_client_t client,
+    hb_scanner_t scanner, hb_scanner_cb cb, void * extra);
+
+/*
+ * Close the scanner releasing any local and server side
+ * resources held. The call back is fired just before the
+ * scanner's memory is freed.
+ */
+HBASE_API int32_t hb_scanner_destroy(hb_client_t client,
+    hb_scanner_t scanner, hb_scanner_cb cb, void * extra);
+
+#ifdef __cplusplus
+}  // extern "C"
+#endif  // __cplusplus
+
+#endif  // ASYNC_HBASE_SCANNER_H_

Added: hbase/trunk/hbase-native-client/src/async/mutations-test.cc
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/src/async/mutations-test.cc?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/src/async/mutations-test.cc (added)
+++ hbase/trunk/hbase-native-client/src/async/mutations-test.cc Fri Jan  3 22:52:41 2014
@@ -0,0 +1,102 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <pthread.h>
+
+#include "gtest/gtest.h"
+#include "async/hbase_mutations.h"
+#include "async/hbase_client.h"
+
+pthread_cond_t cv;
+pthread_mutex_t mutex;
+
+bool sent = false;
+
+TEST(ClientTest, EasyTest) {
+    EXPECT_EQ(1, 1);
+}
+
+void mutate_cb(int32_t status,
+    hb_client_t client, hb_mutation_t mutation,
+    hb_result_t result, void * extra) {
+
+  // Test Stuff.
+  EXPECT_EQ(status, 0);
+  EXPECT_TRUE(client != NULL);
+  EXPECT_TRUE(mutation != NULL);
+
+  pthread_mutex_lock(&mutex);
+  sent = true;
+  pthread_cond_signal(&cv);
+  pthread_mutex_unlock(&mutex);
+}
+
+void wait_send() {
+  pthread_mutex_lock(&mutex);
+  while (!sent) {
+    pthread_cond_wait(&cv, &mutex);
+  }
+  pthread_mutex_unlock(&mutex);
+}
+
+TEST(MutationTest, TestPut) {
+  char tn[] = "T1";
+  hb_byte_t row[] = "ROW";
+  char fam[] = "D";
+  hb_byte_t qual[] = "QUAL";
+  hb_byte_t data[] = "Z";
+
+  hb_client_t client = NULL;
+  hb_put_t put = NULL;
+  hb_cell_t cell;
+
+  cell.family = fam;
+  cell.family_length = 1;
+
+  cell.qual = qual;
+  cell.qual_length = 4;
+
+  cell.value = data;
+  cell.value_length = 1;
+
+  int32_t status = -1;
+
+  status = hb_client_create(&client, NULL);
+  EXPECT_EQ(0, status);
+
+  hb_put_create(&put);
+  hb_mutation_set_table((hb_mutation_t) put, tn, 2);
+  hb_mutation_set_row((hb_mutation_t) put, row, 3);
+  hb_put_add_cell(put, &cell);
+
+  pthread_cond_init(&cv, NULL);
+  pthread_mutex_init(&mutex, NULL);
+
+  status = hb_mutation_send(client, (hb_mutation_t) put, &mutate_cb, NULL);
+  EXPECT_EQ(0, status);
+
+  // Now wait a while for things to send.
+  wait_send();
+  EXPECT_EQ(true, sent);
+
+  hb_mutation_destroy((hb_mutation_t *) put);
+  hb_client_destroy(client, NULL, NULL);
+
+  EXPECT_EQ(0, status);
+}

Added: hbase/trunk/hbase-native-client/src/core/CMakeLists.txt
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/src/core/CMakeLists.txt?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/src/core/CMakeLists.txt (added)
+++ hbase/trunk/hbase-native-client/src/core/CMakeLists.txt Fri Jan  3 22:52:41 2014
@@ -0,0 +1,26 @@
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+set( CORE_SRC
+  admin.cc
+  client.cc
+  connection.cc
+  get.cc
+  mutation.cc
+  put.cc
+  delete.cc
+  scanner.cc
+  hbase_connection_attr.cc
+)
+
+
+add_library(hcore OBJECT ${CORE_SRC})

Added: hbase/trunk/hbase-native-client/src/core/admin.cc
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/src/core/admin.cc?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/src/core/admin.cc (added)
+++ hbase/trunk/hbase-native-client/src/core/admin.cc Fri Jan  3 22:52:41 2014
@@ -0,0 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "core/admin.h"

Added: hbase/trunk/hbase-native-client/src/core/admin.h
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/src/core/admin.h?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/src/core/admin.h (added)
+++ hbase/trunk/hbase-native-client/src/core/admin.h Fri Jan  3 22:52:41 2014
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef CORE_ADMIN_H_
+#define CORE_ADMIN_H_
+
+class Admin {
+};
+#endif  // CORE_ADMIN_H_

Added: hbase/trunk/hbase-native-client/src/core/client.cc
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/src/core/client.cc?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/src/core/client.cc (added)
+++ hbase/trunk/hbase-native-client/src/core/client.cc Fri Jan  3 22:52:41 2014
@@ -0,0 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "core/client.h"

Added: hbase/trunk/hbase-native-client/src/core/client.h
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/src/core/client.h?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/src/core/client.h (added)
+++ hbase/trunk/hbase-native-client/src/core/client.h Fri Jan  3 22:52:41 2014
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef CORE_CLIENT_H_
+#define CORE_CLIENT_H_
+
+class Client {
+};
+#endif  // CORE_CLIENT_H_

Added: hbase/trunk/hbase-native-client/src/core/connection.cc
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/src/core/connection.cc?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/src/core/connection.cc (added)
+++ hbase/trunk/hbase-native-client/src/core/connection.cc Fri Jan  3 22:52:41 2014
@@ -0,0 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#include "core/connection.h"
+
+void Connection::set_zk_quorum(char * zk_q) {
+  this->zk_quorum = zk_q;
+}

Added: hbase/trunk/hbase-native-client/src/core/connection.h
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/src/core/connection.h?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/src/core/connection.h (added)
+++ hbase/trunk/hbase-native-client/src/core/connection.h Fri Jan  3 22:52:41 2014
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#ifndef CORE_CONNECTION_H_
+#define CORE_CONNECTION_H_
+
+class Connection {
+  char * zk_quorum;
+ public:
+  void set_zk_quorum(char * zk_q);
+};
+#endif  // CORE_CONNECTION_H_

Added: hbase/trunk/hbase-native-client/src/core/connection_attr.h
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/src/core/connection_attr.h?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/src/core/connection_attr.h (added)
+++ hbase/trunk/hbase-native-client/src/core/connection_attr.h Fri Jan  3 22:52:41 2014
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef CORE_CONNECTION_ATTR_H_
+#define CORE_CONNECTION_ATTR_H_
+
+#include "core/hbase_macros.h"
+#include "core/hbase_types.h"
+
+class ConnectionAttr {
+};
+
+#endif  // CORE_CONNECTION_ATTR_H_
+

Added: hbase/trunk/hbase-native-client/src/core/delete.cc
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/src/core/delete.cc?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/src/core/delete.cc (added)
+++ hbase/trunk/hbase-native-client/src/core/delete.cc Fri Jan  3 22:52:41 2014
@@ -0,0 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "core/delete.h"
+
+Delete::~Delete() {
+}

Added: hbase/trunk/hbase-native-client/src/core/delete.h
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/src/core/delete.h?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/src/core/delete.h (added)
+++ hbase/trunk/hbase-native-client/src/core/delete.h Fri Jan  3 22:52:41 2014
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef CORE_DELETE_H_
+#define CORE_DELETE_H_
+
+#include "core/mutation.h"
+
+class Delete: public Mutation {
+ public:
+  ~Delete();
+};
+#endif  // CORE_DELETE_H_

Added: hbase/trunk/hbase-native-client/src/core/get.cc
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/src/core/get.cc?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/src/core/get.cc (added)
+++ hbase/trunk/hbase-native-client/src/core/get.cc Fri Jan  3 22:52:41 2014
@@ -0,0 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "core/get.h"

Added: hbase/trunk/hbase-native-client/src/core/get.h
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/src/core/get.h?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/src/core/get.h (added)
+++ hbase/trunk/hbase-native-client/src/core/get.h Fri Jan  3 22:52:41 2014
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef CORE_GET_H_
+#define CORE_GET_H_
+
+class Get {
+};
+
+#endif  // CORE_GET_H_

Added: hbase/trunk/hbase-native-client/src/core/hbase_connection_attr.cc
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/src/core/hbase_connection_attr.cc?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/src/core/hbase_connection_attr.cc (added)
+++ hbase/trunk/hbase-native-client/src/core/hbase_connection_attr.cc Fri Jan  3 22:52:41 2014
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "core/hbase_connection_attr.h"
+
+#include "core/hbase_macros.h"
+#include "core/hbase_types.h"
+#include "core/connection_attr.h"
+
+extern "C" {
+int32_t hb_connection_attr_create(hb_connection_attr_t * attr_ptr) {
+  (*attr_ptr) = new ConnectionAttr();
+  return (attr_ptr == NULL)?-1:0;
+}
+
+int32_t hb_connection_attr_set_zk_quorum(hb_connection_t connection,
+    char * zk_quorum) {
+  return 0;
+}
+
+int32_t hb_connection_attr_set_zk_root(hb_connection_t connection,
+    char * zk_root) {
+  return 0;
+}
+}

Added: hbase/trunk/hbase-native-client/src/core/hbase_connection_attr.h
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/src/core/hbase_connection_attr.h?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/src/core/hbase_connection_attr.h (added)
+++ hbase/trunk/hbase-native-client/src/core/hbase_connection_attr.h Fri Jan  3 22:52:41 2014
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef CORE_HBASE_CONNECTION_ATTR_H_
+#define CORE_HBASE_CONNECTION_ATTR_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "core/hbase_macros.h"
+#include "core/hbase_types.h"
+
+#include <stdlib.h>
+
+HBASE_API int32_t hb_connection_attr_create(hb_connection_attr_t * attr_ptr);
+
+/**
+ * Set the zk quorum of a connection that will be created.
+ */
+HBASE_API int32_t hb_connection_attr_set_zk_quorum(hb_connection_t connection,
+    char * zk_quorum);
+
+/**
+ * Set the zk root of a connection that will be created.
+ */
+HBASE_API int32_t hb_connection_attr_set_zk_root(hb_connection_t connection,
+    char * zk_root);
+
+#ifdef __cplusplus
+}  // extern "C"
+#endif  // __cplusplus
+
+#endif  // CORE_HBASE_CONNECTION_ATTR_H_
+

Added: hbase/trunk/hbase-native-client/src/core/hbase_macros.h
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-native-client/src/core/hbase_macros.h?rev=1555272&view=auto
==============================================================================
--- hbase/trunk/hbase-native-client/src/core/hbase_macros.h (added)
+++ hbase/trunk/hbase-native-client/src/core/hbase_macros.h Fri Jan  3 22:52:41 2014
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef CORE_HBASE_MACROS_H_
+#define CORE_HBASE_MACROS_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * The following code block define API as the tag for exported
+ * functions. The library should be compiled with symbols visibility
+ * set to hidden by default and only the exported functions should be
+ * tagged as HBASE_API.
+ *
+ * When building the library on Windows, compile with compiler flag
+ * "-D_LIBHBASE_IMPLEMENTATION_", whereas when linking application with
+ * this library, this compiler flag should not be used.
+ */
+#if defined _WIN32 || defined __CYGWIN__
+  #ifdef _LIBHBASE_IMPLEMENTATION_
+      #define API __declspec(dllexport)
+  #else
+    #ifdef _LIBHBASE_TEST_
+      #define HBASE_API
+    #else
+      #define HBASE_API __declspec(dllimport)
+    #endif
+  #endif
+#else
+  #if __GNUC__ >= 4
+    #define HBASE_API __attribute__ ((visibility ("default")))
+  #else
+    #define HBASE_API
+  #endif
+#endif
+
+#ifdef __cplusplus
+}  // extern "C"
+#endif  // __cplusplus
+
+#endif  // CORE_HBASE_MACROS_H_
+



Mime
View raw message