HBASE-9977 Define C interface of HBase Client Asynchronous APIs
git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1555272 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
063243c880
commit
886e8e4816
|
@ -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
|
|
@ -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>)
|
|
@ -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.
|
|
@ -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
|
|
@ -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"
|
|
@ -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"
|
|
@ -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
|
|
@ -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
|
||||
)
|
|
@ -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
|
||||
)
|
|
@ -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)
|
|
@ -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);
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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_
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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_
|
||||
|
||||
|
|
@ -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"
|
|
@ -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_
|
||||
|
|
@ -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_
|
|
@ -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;
|
||||
}
|
|
@ -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_
|
|
@ -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"
|
|
@ -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_
|
|
@ -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;
|
||||
}
|
|
@ -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_
|
|
@ -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;
|
||||
}
|
|
@ -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_
|
|
@ -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);
|
||||
}
|
|
@ -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})
|
|
@ -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"
|
|
@ -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_
|
|
@ -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"
|
|
@ -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_
|
|
@ -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;
|
||||
}
|
|
@ -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_
|
|
@ -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_
|
||||
|
|
@ -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() {
|
||||
}
|
|
@ -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_
|
|
@ -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"
|
|
@ -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_
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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_
|
||||
|
|
@ -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_
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
/*
|
||||
* 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_TYPES_H_
|
||||
#define CORE_HBASE_TYPES_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
|
||||
typedef unsigned char hb_byte_t;
|
||||
|
||||
/*
|
||||
* Base kv type.
|
||||
*/
|
||||
typedef struct {
|
||||
hb_byte_t* row;
|
||||
size_t row_length;
|
||||
|
||||
char * family;
|
||||
size_t family_length;
|
||||
|
||||
hb_byte_t* qual;
|
||||
size_t qual_length;
|
||||
|
||||
hb_byte_t* value;
|
||||
size_t value_length;
|
||||
|
||||
uint64_t timestamp;
|
||||
} hb_cell_t;
|
||||
|
||||
typedef enum {
|
||||
DELETE_ONE_VERSION,
|
||||
DELETE_MULTIPLE_VERSIONS,
|
||||
DELETE_FAMILY,
|
||||
DELETE_FAMILY_VERSION
|
||||
} hb_delete_type;
|
||||
|
||||
typedef enum {
|
||||
USE_DEFAULT,
|
||||
SKIP_WAL,
|
||||
ASYNC_WAL,
|
||||
SYNC_WAL,
|
||||
HSYNC_WAL
|
||||
} hb_durability_type;
|
||||
|
||||
typedef void* hb_admin_t;
|
||||
typedef void* hb_client_t;
|
||||
typedef void* hb_connection_attr_t;
|
||||
typedef void* hb_connection_t;
|
||||
typedef void* hb_get_t;
|
||||
typedef void* hb_mutation_t;
|
||||
typedef void* hb_put_t;
|
||||
typedef void* hb_delete_t;
|
||||
typedef void* hb_increment_t;
|
||||
typedef void* hb_append_t;
|
||||
typedef void* hb_result_t;
|
||||
typedef void* hb_scanner_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif // __cplusplus
|
||||
|
||||
#endif // CORE_HBASE_TYPES_H_
|
|
@ -0,0 +1,42 @@
|
|||
/*
|
||||
* 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/mutation.h"
|
||||
|
||||
void Mutation::set_namespace(char * name_space, size_t name_space_length) {
|
||||
this->name_space = name_space;
|
||||
this->name_space_length = name_space_length;
|
||||
}
|
||||
|
||||
void Mutation::set_table(char * table, size_t table_length) {
|
||||
this->table = table;
|
||||
this->table_length = table_length;
|
||||
}
|
||||
|
||||
void Mutation::set_row(unsigned char * row, size_t row_length) {
|
||||
this->row = row;
|
||||
this->row_length = row_length;
|
||||
}
|
||||
|
||||
void Mutation::set_durability(hb_durability_type durability) {
|
||||
this->durability = durability;
|
||||
}
|
||||
|
||||
Mutation::~Mutation() {
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
/*
|
||||
* 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_MUTATION_H_
|
||||
#define CORE_MUTATION_H_
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "core/hbase_types.h"
|
||||
|
||||
class Mutation {
|
||||
char * name_space;
|
||||
size_t name_space_length;
|
||||
|
||||
char * table;
|
||||
size_t table_length;
|
||||
|
||||
unsigned char * row;
|
||||
size_t row_length;
|
||||
|
||||
hb_durability_type durability;
|
||||
public:
|
||||
void set_namespace(char * name_space, size_t name_space_length);
|
||||
void set_table(char * table, size_t table_length);
|
||||
void set_row(unsigned char * row, size_t row_length);
|
||||
void set_durability(hb_durability_type durability);
|
||||
|
||||
virtual ~Mutation();
|
||||
};
|
||||
#endif // CORE_MUTATION_H_
|
||||
|
||||
|
|
@ -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/put.h"
|
||||
|
||||
Put::~Put() {
|
||||
}
|
|
@ -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_PUT_H_
|
||||
#define CORE_PUT_H_
|
||||
|
||||
#include "core/mutation.h"
|
||||
|
||||
class Put: public Mutation {
|
||||
public:
|
||||
~Put();
|
||||
};
|
||||
#endif // CORE_PUT_H_
|
|
@ -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/scanner.h"
|
|
@ -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_SCANNER_H_
|
||||
#define CORE_SCANNER_H_
|
||||
|
||||
class Scanner {
|
||||
};
|
||||
#endif // CORE_SCANNER_H_
|
|
@ -0,0 +1,19 @@
|
|||
# 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( SYNC_SRC
|
||||
hbase_connection.cc
|
||||
hbase_admin.cc
|
||||
)
|
||||
|
||||
|
||||
add_library(hsync OBJECT ${SYNC_SRC})
|
|
@ -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.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "sync/hbase_admin.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "core/admin.h"
|
||||
|
||||
int32_t hb_admin_create(hb_admin_t** admin_ptr) {
|
||||
(*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) {
|
||||
Admin * adm = reinterpret_cast<Admin *>(admin);
|
||||
delete adm;
|
||||
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,
|
||||
bool * exists) {
|
||||
*exists = true;
|
||||
return 0;
|
||||
}
|
|
@ -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.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef SYNC_HBASE_ADMIN_H_
|
||||
#define SYNC_HBASE_ADMIN_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "core/hbase_macros.h"
|
||||
#include "core/hbase_types.h"
|
||||
#include "sync/hbase_connection.h"
|
||||
|
||||
|
||||
/**
|
||||
* 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);
|
||||
|
||||
/*
|
||||
* 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, bool * exists);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif // __cplusplus
|
||||
|
||||
#endif // SYNC_HBASE_ADMIN_H_
|
|
@ -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 "sync/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"
|
|
@ -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 SYNC_HBASE_CONNECTION_H_
|
||||
#define SYNC_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 // SYNC_HBASE_CONNECTION_H_
|
||||
|
Loading…
Reference in New Issue