-
Linux: ubuntu14 64bit g++4.8.1 tested
-
MacOSX: LLVM version 6.1.0 tested
programmer can write operations for exit
can use valgrind to check memory leak
-
use epoll on Linux
-
use kqueue on MacOSX
only 10 lines can finish a complete server
make && make install
#include <handy/handy.h>
using namespace handy;
int main(int argc, const char* argv[]) {
EventBase base;
Signal::signal(SIGINT, [&]{ base.exit(); });
TcpServerPtr svr = TcpServer::startServer(&base, "", 2099);
exitif(svr == NULL, "start tcp server failed");
svr->onConnRead([](const TcpConnPtr& con) {
con->send(con->getInput());
});
base.loop();
}
processing I/O asynchronously and Request synchronously can greatly simplify the coding of business processing
example can be found examples/hsha.cc
asynchronously handle the openssl connection. if you have installed openssl, then make will automatically download handy-ssl. ssl support files are in handy-ssl because of license.
examples can be found in directory protobuf
- handy--------handy library
- examples----
- ssl------------openssl support and examples
- protobuf-----protobuf support and examples
- test-----------handy test case
$ git clone https://github.com/yedf/handy
$ cd handy && mkdir build && cd build
$ cmake -DBUILD_HANDY_SHARED_LIBRARY=ON -DBUILD_HANDY_EXAMPLES=ON -DCMAKE_INSTALL_PREFIX=/tmp/handy ..
$ make -j4
$ make install
$ ls /tmp/handy
bin include lib64
$ ls /tmp/handy/bin/
10m-cli 10m-svr codec-cli codec-svr daemon echo hsha http-hello idle-close reconnect safe-close stat timer udp-cli udp-hsha udp-svr write-on-empty
$ ls /tmp/handy/lib64/
libhandy_s.a libhandy.so
- add handy as a git submodule to say a folder called vendor
- in your CMakeLists.txt
add_subdirectory("vendor/handy" EXCLUDE_FROM_ALL)
add_executable(${PROJECT_NAME} main.cpp)
target_include_directories(${PROJECT_NAME} PUBLIC
"vendor/handy"
)
target_link_libraries(${PROJECT_NAME} PUBLIC
handy_s
)
Use of this source code is governed by a BSD-style license that can be found in the License file.