├── .github └── workflows │ └── ci.yml ├── .gitignore ├── .sshyncignore ├── .syntastic_c_config ├── CMakeLists.txt ├── Cargo.lock ├── Cargo.toml ├── LICENSE ├── PelikanREADME.md ├── README.cmake ├── README.md ├── benchmarks ├── CMakeLists.txt ├── bench_storage.c ├── bench_storage.h ├── config │ └── examples │ │ ├── trace_replay_seg.conf │ │ └── trace_replay_slab.conf ├── notUsed │ ├── reader.c │ ├── reader.h │ ├── reader_mt.h │ ├── reader_pl.h │ ├── trace_conv │ │ ├── __init__.py │ │ └── trace_conv.py │ └── trace_replay.c ├── scripts │ └── log_all ├── shared.c ├── storage_LHD │ ├── CMakeLists.txt │ └── storage_LHD.c ├── storage_cuckoo │ ├── CMakeLists.txt │ └── storage_cuckoo.c ├── storage_seg │ ├── CMakeLists.txt │ └── storage_seg.c ├── storage_slab │ ├── CMakeLists.txt │ └── storage_slab.c ├── thrpt_bench.c └── trace_replay │ ├── reader.c │ ├── reader.h │ └── trace_replay.c ├── ci ├── .gitignore ├── before-install.sh ├── cargo.sh ├── install-check.sh ├── install-fluxcapacitor.sh ├── local-clean-build-and-test.sh ├── local-testing-with-docker.sh └── run.sh ├── cmake ├── CMakeCargo.cmake ├── CargoLink.cmake ├── CargoTest.cmake ├── FindCHECK.cmake ├── FindITTNOTIFY.cmake ├── FindLIBPMEM.cmake └── config.h.in ├── config ├── cdb.conf ├── ds.conf ├── pingserver-tls.toml ├── pingserver.conf ├── pingserver.toml ├── resp-cli.conf ├── segcache.conf ├── slimcache.conf ├── test.conf └── twemcache.conf ├── deps ├── .gitignore ├── README.md └── ccommon │ ├── .github │ ├── ISSUE_TEMPLATE.md │ └── PULL_REQUEST_TEMPLATE.md │ ├── .gitignore │ ├── .travis.yml │ ├── CMakeLists.txt │ ├── HEADER │ ├── LICENSE │ ├── NOTICE │ ├── README.md │ ├── ccommon.pc.in │ ├── ci │ ├── before-install.sh │ ├── cargo.sh │ ├── install-check.sh │ ├── install-fluxcapacitor.sh │ ├── local-run.sh │ └── run.sh │ ├── cmake │ ├── CMakeCargo.cmake │ ├── CargoLink.cmake │ ├── CargoTest.cmake │ ├── FindCHECK.cmake │ ├── FindITTNOTIFY.cmake │ └── FindRust.cmake │ ├── config.h.in │ ├── docs │ ├── .gitignore │ ├── CONFIG.ini │ ├── _static │ │ └── img │ │ │ ├── data_access_speed.jpeg │ │ │ └── white_pelican.jpg │ ├── coding_style.rst │ ├── conf.py │ ├── index.rst │ ├── modules │ │ ├── cc_log.rst │ │ ├── cc_metric.rst │ │ ├── cc_option.rst │ │ └── cc_ring_array.rst │ └── overview.rst │ ├── include │ ├── buffer │ │ ├── cc_buf.h │ │ └── cc_dbuf.h │ ├── cc_array.h │ ├── cc_bstring.h │ ├── cc_debug.h │ ├── cc_define.h │ ├── cc_event.h │ ├── cc_itt.h │ ├── cc_log.h │ ├── cc_metric.h │ ├── cc_mm.h │ ├── cc_option.h │ ├── cc_pool.h │ ├── cc_print.h │ ├── cc_queue.h │ ├── cc_rbuf.h │ ├── cc_ring_array.h │ ├── cc_signal.h │ ├── cc_stats_log.h │ ├── cc_stream.h │ ├── cc_util.h │ ├── channel │ │ ├── cc_channel.h │ │ ├── cc_pipe.h │ │ └── cc_tcp.h │ ├── hash │ │ ├── cc_murmur3.h │ │ └── xxhash.h │ ├── rust │ │ └── cc_log_rs.h │ ├── stream │ │ └── cc_sockio.h │ └── time │ │ ├── cc_timer.h │ │ └── cc_wheel.h │ ├── notes │ ├── buffer.txt │ ├── coding_style.txt │ ├── config.txt │ ├── config_make.txt │ ├── event_handling.txt │ ├── func_pointer.txt │ ├── io.txt │ ├── logging.txt │ ├── modules.txt │ ├── naming.txt │ ├── resource_hygiene.txt │ ├── starvation.txt │ ├── test-suite.txt │ └── thread_safe.txt │ ├── rust │ ├── .gitignore │ ├── CMakeLists.txt │ ├── ccommon-array │ │ ├── CMakeLists.txt │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── ccommon-backend │ │ ├── CMakeLists.txt │ │ ├── Cargo.toml │ │ ├── src │ │ │ ├── c_export.rs │ │ │ ├── compat.rs │ │ │ ├── lib.rs │ │ │ └── option │ │ │ │ ├── default.rs │ │ │ │ ├── parse.rs │ │ │ │ └── print.rs │ │ └── tests │ │ │ └── parse.rs │ ├── ccommon-buffer │ │ ├── CMakeLists.txt │ │ ├── Cargo.toml │ │ └── src │ │ │ ├── buf │ │ │ └── mod.rs │ │ │ ├── dbuf │ │ │ └── mod.rs │ │ │ └── lib.rs │ ├── ccommon-channel │ │ ├── CMakeLists.txt │ │ ├── Cargo.toml │ │ └── src │ │ │ ├── lib.rs │ │ │ ├── pipe │ │ │ └── mod.rs │ │ │ └── tcp │ │ │ └── mod.rs │ ├── ccommon-derive │ │ ├── CMakeLists.txt │ │ ├── Cargo.toml │ │ └── src │ │ │ ├── attrs.rs │ │ │ └── lib.rs │ ├── ccommon-log │ │ ├── CMakeLists.txt │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── ccommon-rs │ │ ├── CMakeLists.txt │ │ ├── Cargo.toml │ │ ├── build.rs │ │ ├── src │ │ │ ├── bstring.rs │ │ │ ├── buf.rs │ │ │ ├── ccbox.rs │ │ │ ├── error.rs │ │ │ ├── lib.rs │ │ │ ├── log │ │ │ │ ├── debug.rs │ │ │ │ ├── mod.rs │ │ │ │ └── shim.rs │ │ │ ├── metric │ │ │ │ ├── counter.rs │ │ │ │ ├── fpn.rs │ │ │ │ ├── gauge.rs │ │ │ │ └── mod.rs │ │ │ ├── option │ │ │ │ ├── boolean.rs │ │ │ │ ├── fpn.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── string.rs │ │ │ │ └── uint.rs │ │ │ └── ptrs.rs │ │ └── tests │ │ │ ├── derive_metrics.rs │ │ │ ├── derive_options.rs │ │ │ └── log.rs │ ├── ccommon-stats │ │ ├── CMakeLists.txt │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── ccommon-stream │ │ ├── CMakeLists.txt │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ └── ccommon-sys │ │ ├── CMakeLists.txt │ │ ├── Cargo.toml │ │ ├── build.rs │ │ ├── src │ │ ├── lib.rs │ │ └── metric.rs │ │ └── wrapper.h │ ├── src │ ├── CMakeLists.txt │ ├── buffer │ │ ├── CMakeLists.txt │ │ ├── cc_buf.c │ │ └── cc_dbuf.c │ ├── cc_array.c │ ├── cc_bstring.c │ ├── cc_debug.c │ ├── cc_log.c │ ├── cc_mm.c │ ├── cc_option.c │ ├── cc_print.c │ ├── cc_rbuf.c │ ├── cc_ring_array.c │ ├── cc_signal.c │ ├── channel │ │ ├── CMakeLists.txt │ │ ├── cc_pipe.c │ │ └── cc_tcp.c │ ├── event │ │ ├── CMakeLists.txt │ │ ├── cc_epoll.c │ │ ├── cc_kqueue.c │ │ ├── cc_shared.c │ │ └── cc_shared.h │ ├── hash │ │ ├── CMakeLists.txt │ │ └── cc_murmur3.c │ ├── stats │ │ ├── CMakeLists.txt │ │ ├── cc_metric.c │ │ └── cc_stats_log.c │ ├── stream │ │ ├── CMakeLists.txt │ │ └── cc_sockio.c │ └── time │ │ ├── CMakeLists.txt │ │ ├── cc_timer_darwin.c │ │ ├── cc_timer_linux.c │ │ └── cc_wheel.c │ ├── test-coverage.sh │ └── test │ ├── CMakeLists.txt │ ├── array │ ├── CMakeLists.txt │ └── check_array.c │ ├── bstring │ ├── CMakeLists.txt │ └── check_bstring.c │ ├── buffer │ ├── CMakeLists.txt │ └── check_buf.c │ ├── channel │ ├── CMakeLists.txt │ ├── pipe │ │ ├── CMakeLists.txt │ │ └── check_pipe.c │ └── tcp │ │ ├── CMakeLists.txt │ │ └── check_tcp.c │ ├── event │ ├── CMakeLists.txt │ └── check_event.c │ ├── log │ ├── CMakeLists.txt │ └── check_log.c │ ├── metric │ ├── CMakeLists.txt │ └── check_metric.c │ ├── option │ ├── CMakeLists.txt │ └── check_option.c │ ├── pool │ ├── CMakeLists.txt │ └── check_pool.c │ ├── rbuf │ ├── CMakeLists.txt │ └── check_rbuf.c │ ├── ring_array │ ├── CMakeLists.txt │ └── check_ring_array.c │ └── time │ ├── CMakeLists.txt │ ├── timer │ ├── CMakeLists.txt │ └── check_timer.c │ └── wheel │ ├── CMakeLists.txt │ └── check_wheel.c ├── docs ├── .gitignore ├── CONFIG.ini ├── OWNERS ├── _static │ └── img │ │ └── white_pelican.jpg ├── anatomy.rst ├── coding_style.rst ├── conf.py ├── history.rst ├── index.rst ├── manifesto.rst ├── notes │ ├── batching.txt │ └── extend_cuckoo.txt ├── overview.rst ├── problems.rst └── use_cases.rst ├── genConf.sh ├── packages ├── docker │ ├── Dockerfile │ └── README.md └── homebrew │ └── README.md ├── scripts ├── capacity │ ├── README.md │ └── calculator.py └── load_testing │ ├── README.md │ ├── client_config.py │ ├── generate.sh │ ├── runtest.sh │ └── server_config.py ├── src ├── .gitignore ├── CMakeLists.txt ├── client │ ├── CMakeLists.txt │ ├── README.md │ ├── network │ │ ├── CMakeLists.txt │ │ ├── cli_network.c │ │ └── cli_network.h │ ├── pingclient-rs │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ └── resp_cli │ │ ├── CMakeLists.txt │ │ ├── cli.c │ │ ├── cli.h │ │ ├── main.c │ │ ├── setting.c │ │ └── setting.h ├── core │ ├── CMakeLists.txt │ ├── admin │ │ ├── CMakeLists.txt │ │ ├── admin.c │ │ └── admin.h │ ├── context.h │ ├── core.c │ ├── core.h │ └── data │ │ ├── CMakeLists.txt │ │ ├── server.c │ │ ├── server.h │ │ ├── shared.h │ │ ├── worker.c │ │ └── worker.h ├── data_structure │ ├── CMakeLists.txt │ ├── bitmap │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── bitset.c │ │ └── bitset.h │ ├── sarray │ │ ├── CMakeLists.txt │ │ ├── sarray.c │ │ └── sarray.h │ ├── shared.h │ ├── smap │ │ ├── CMakeLists.txt │ │ ├── smap.c │ │ └── smap.h │ └── ziplist │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── ziplist.c │ │ └── ziplist.h ├── datapool │ ├── CMakeLists.txt │ ├── datapool.h │ ├── datapool_pmem.c │ └── datapool_shm.c ├── hotkey │ ├── CMakeLists.txt │ ├── constant.h │ ├── hotkey.c │ ├── hotkey.h │ ├── kc_map.c │ ├── kc_map.h │ ├── key_window.c │ └── key_window.h ├── protocol │ ├── CMakeLists.txt │ ├── admin │ │ ├── CMakeLists.txt │ │ ├── admin_include.h │ │ ├── compose.c │ │ ├── compose.h │ │ ├── format.c │ │ ├── format.h │ │ ├── parse.c │ │ ├── parse.h │ │ ├── process.h │ │ ├── request.c │ │ ├── request.h │ │ ├── response.c │ │ └── response.h │ └── data │ │ ├── CMakeLists.txt │ │ ├── memcache │ │ ├── CMakeLists.txt │ │ ├── compose.c │ │ ├── compose.h │ │ ├── constant.h │ │ ├── klog.c │ │ ├── klog.h │ │ ├── parse.c │ │ ├── parse.h │ │ ├── process.h │ │ ├── request.c │ │ ├── request.h │ │ ├── response.c │ │ └── response.h │ │ ├── memcache_include.h │ │ ├── ping │ │ ├── CMakeLists.txt │ │ ├── compose.c │ │ ├── compose.h │ │ ├── parse.c │ │ ├── parse.h │ │ ├── request.h │ │ └── response.h │ │ ├── ping_include.h │ │ ├── resp │ │ ├── CMakeLists.txt │ │ ├── attribute.c │ │ ├── attribute.h │ │ ├── attribute.md │ │ ├── cmd.h │ │ ├── cmd_bitmap.h │ │ ├── cmd_hash.h │ │ ├── cmd_list.h │ │ ├── cmd_misc.h │ │ ├── cmd_sarray.h │ │ ├── cmd_smap.h │ │ ├── cmd_zset.h │ │ ├── compose.c │ │ ├── compose.h │ │ ├── parse.c │ │ ├── parse.h │ │ ├── process.h │ │ ├── request.c │ │ ├── request.h │ │ ├── response.c │ │ ├── response.h │ │ ├── token.c │ │ └── token.h │ │ └── resp_include.h ├── rust-util │ ├── CMakeLists.txt │ ├── httpencode │ │ ├── CMakeLists.txt │ │ ├── Cargo.toml │ │ ├── benches │ │ │ └── compose.rs │ │ └── src │ │ │ ├── error.rs │ │ │ ├── http.rs │ │ │ ├── lib.rs │ │ │ ├── request.rs │ │ │ ├── response.rs │ │ │ ├── tests.rs │ │ │ ├── traits.rs │ │ │ └── util.rs │ ├── pelikan-sys │ │ ├── CMakeLists.txt │ │ ├── Cargo.toml │ │ ├── build.rs │ │ └── src │ │ │ ├── lib.rs │ │ │ ├── storage │ │ │ ├── mod.rs │ │ │ └── slab.rs │ │ │ └── time.rs │ └── pelikan │ │ ├── CMakeLists.txt │ │ ├── Cargo.toml │ │ └── src │ │ ├── core │ │ ├── admin.rs │ │ └── mod.rs │ │ ├── lib.rs │ │ ├── protocol │ │ ├── admin.rs │ │ ├── memcache.rs │ │ ├── mod.rs │ │ └── ping.rs │ │ └── storage │ │ ├── mod.rs │ │ └── slab.rs ├── rust │ └── config │ │ ├── Cargo.toml │ │ └── src │ │ ├── admin.rs │ │ ├── array.rs │ │ ├── buf.rs │ │ ├── dbuf.rs │ │ ├── debug.rs │ │ ├── lib.rs │ │ ├── pingserver.rs │ │ ├── server.rs │ │ ├── sockio.rs │ │ ├── stats_log.rs │ │ ├── tcp.rs │ │ ├── time.rs │ │ ├── tls.rs │ │ └── worker.rs ├── rustcore │ ├── CMakeLists.txt │ ├── Cargo.toml │ └── src │ │ ├── admin.rs │ │ ├── errors.rs │ │ ├── lib.rs │ │ ├── listener │ │ ├── mod.rs │ │ └── tcp.rs │ │ ├── signal.rs │ │ ├── traits.rs │ │ ├── util.rs │ │ └── worker │ │ ├── default.rs │ │ ├── metrics.rs │ │ ├── mod.rs │ │ └── wrapper.rs ├── server │ ├── CMakeLists.txt │ ├── cdb │ │ ├── CMakeLists.txt │ │ ├── admin │ │ │ ├── CMakeLists.txt │ │ │ ├── process.c │ │ │ └── process.h │ │ ├── data │ │ │ ├── CMakeLists.txt │ │ │ ├── process.c │ │ │ └── process.h │ │ ├── main.c │ │ ├── setting.c │ │ ├── setting.h │ │ ├── stats.c │ │ └── stats.h │ ├── pingserver-rs │ │ ├── CMakeLists.txt │ │ ├── Cargo.toml │ │ ├── benches │ │ │ └── benchmark.rs │ │ ├── src │ │ │ ├── admin.rs │ │ │ ├── common.rs │ │ │ ├── event_loop.rs │ │ │ ├── lib.rs │ │ │ ├── main.rs │ │ │ ├── metrics.rs │ │ │ ├── server.rs │ │ │ ├── session.rs │ │ │ └── worker.rs │ │ └── tests │ │ │ └── integration.rs │ ├── pingserver │ │ ├── CMakeLists.txt │ │ ├── admin │ │ │ ├── CMakeLists.txt │ │ │ ├── process.c │ │ │ └── process.h │ │ ├── data │ │ │ ├── CMakeLists.txt │ │ │ ├── process.c │ │ │ └── process.h │ │ ├── main.c │ │ ├── setting.c │ │ ├── setting.h │ │ ├── stats.c │ │ └── stats.h │ ├── rds │ │ ├── CMakeLists.txt │ │ ├── README │ │ ├── admin │ │ │ ├── CMakeLists.txt │ │ │ ├── process.c │ │ │ └── process.h │ │ ├── data │ │ │ ├── CMakeLists.txt │ │ │ ├── cmd_list.c │ │ │ ├── cmd_list.h │ │ │ ├── cmd_misc.c │ │ │ ├── cmd_misc.h │ │ │ ├── cmd_sarray.c │ │ │ ├── cmd_sarray.h │ │ │ ├── cmd_smap.c │ │ │ ├── cmd_smap.h │ │ │ ├── process.c │ │ │ ├── process.h │ │ │ └── shared.h │ │ ├── main.c │ │ ├── setting.c │ │ ├── setting.h │ │ ├── stats.c │ │ └── stats.h │ ├── segcache │ │ ├── CMakeLists.txt │ │ ├── admin │ │ │ ├── CMakeLists.txt │ │ │ ├── process.c │ │ │ └── process.h │ │ ├── data │ │ │ ├── CMakeLists.txt │ │ │ ├── process.c │ │ │ └── process.h │ │ ├── main.c │ │ ├── setting.c │ │ ├── setting.h │ │ ├── stats.c │ │ └── stats.h │ ├── slimcache │ │ ├── CMakeLists.txt │ │ ├── admin │ │ │ ├── CMakeLists.txt │ │ │ ├── process.c │ │ │ └── process.h │ │ ├── data │ │ │ ├── CMakeLists.txt │ │ │ ├── process.c │ │ │ └── process.h │ │ ├── main.c │ │ ├── setting.c │ │ ├── setting.h │ │ ├── stats.c │ │ └── stats.h │ ├── slimrds │ │ ├── CMakeLists.txt │ │ ├── README │ │ ├── admin │ │ │ ├── CMakeLists.txt │ │ │ ├── process.c │ │ │ └── process.h │ │ ├── data │ │ │ ├── CMakeLists.txt │ │ │ ├── cmd_bitmap.c │ │ │ ├── cmd_bitmap.h │ │ │ ├── cmd_misc.c │ │ │ ├── cmd_misc.h │ │ │ ├── process.c │ │ │ └── process.h │ │ ├── main.c │ │ ├── setting.c │ │ ├── setting.h │ │ ├── stats.c │ │ └── stats.h │ ├── twemcache-http │ │ ├── CMakeLists.txt │ │ ├── Cargo.toml │ │ ├── build.rs │ │ ├── memcached │ │ │ ├── process.c │ │ │ └── process.h │ │ └── src │ │ │ ├── admin.rs │ │ │ ├── http.rs │ │ │ ├── main.rs │ │ │ ├── memcached.rs │ │ │ ├── metrics.rs │ │ │ ├── options.rs │ │ │ └── worker.rs │ └── twemcache │ │ ├── CMakeLists.txt │ │ ├── admin │ │ ├── CMakeLists.txt │ │ ├── process.c │ │ └── process.h │ │ ├── data │ │ ├── CMakeLists.txt │ │ ├── process.c │ │ └── process.h │ │ ├── main.c │ │ ├── setting.c │ │ ├── setting.h │ │ ├── stats.c │ │ └── stats.h ├── storage │ ├── CMakeLists.txt │ ├── LHD │ │ ├── CMakeLists.txt │ │ ├── LHD.h │ │ ├── constant.h │ │ ├── hashtable.c │ │ ├── hashtable.h │ │ ├── hyperbolic.h │ │ ├── item.c │ │ ├── item.h │ │ ├── slab.c │ │ ├── slab.h │ │ └── slabclass.h │ ├── cdb │ │ ├── .gitignore │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── cdb_rs.h │ │ ├── cdb_rs │ │ │ ├── CMakeLists.txt │ │ │ ├── Cargo.toml │ │ │ ├── build.rs │ │ │ ├── src │ │ │ │ ├── cdb │ │ │ │ │ ├── backend.rs │ │ │ │ │ ├── errors.rs │ │ │ │ │ ├── ffi │ │ │ │ │ │ ├── gen.rs │ │ │ │ │ │ └── mod.rs │ │ │ │ │ ├── input.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ └── storage.rs │ │ │ │ └── lib.rs │ │ │ └── wrapper.h │ │ ├── cdbgen │ │ │ ├── Cargo.toml │ │ │ └── src │ │ │ │ ├── gen │ │ │ │ └── mod.rs │ │ │ │ ├── lib.rs │ │ │ │ └── main.rs │ │ └── scripts │ │ │ ├── build-cargo-config.sh │ │ │ └── mkcdb.sh │ ├── cuckoo │ │ ├── CMakeLists.txt │ │ ├── cuckoo.c │ │ ├── cuckoo.h │ │ └── item.h │ ├── seg │ │ ├── CMakeLists.txt │ │ ├── background.c │ │ ├── background.h │ │ ├── checker.h │ │ ├── constant.h │ │ ├── hashtable.c │ │ ├── hashtable.h │ │ ├── helper.c │ │ ├── item.c │ │ ├── item.h │ │ ├── seg.c │ │ ├── seg.h │ │ ├── segevict.c │ │ ├── segevict.h │ │ ├── segmerge.c │ │ ├── temp.c │ │ ├── ttlbucket.c │ │ ├── ttlbucket.h │ │ └── xxhash.h │ └── slab │ │ ├── CMakeLists.txt │ │ ├── hashtable.c │ │ ├── hashtable.h │ │ ├── item.c │ │ ├── item.h │ │ ├── slab.c │ │ ├── slab.h │ │ └── slabclass.h ├── time │ ├── CMakeLists.txt │ ├── time.c │ └── time.h └── util │ ├── CMakeLists.txt │ ├── procinfo.c │ ├── procinfo.h │ ├── util.c │ └── util.h ├── test-coverage.sh └── test ├── .gitignore ├── CMakeLists.txt ├── data_structure ├── CMakeLists.txt ├── bitmap │ ├── CMakeLists.txt │ └── check_bitmap.c ├── sarray │ ├── CMakeLists.txt │ └── check_sarray.c ├── smap │ ├── CMakeLists.txt │ └── check_smap.c └── ziplist │ ├── CMakeLists.txt │ └── check_ziplist.c ├── datapool ├── CMakeLists.txt └── check_datapool.c ├── hotkey ├── CMakeLists.txt ├── kc_map │ ├── CMakeLists.txt │ └── check_kc_map.c └── key_window │ ├── CMakeLists.txt │ └── check_key_window.c ├── integration ├── CMakeLists.txt ├── __init__.py ├── base.py ├── client.py ├── loader.py ├── server.py ├── test_twemcache.py └── twemcache │ ├── seq-0 │ └── seq-1 ├── protocol ├── CMakeLists.txt ├── admin │ ├── CMakeLists.txt │ └── check_admin.c └── data │ ├── CMakeLists.txt │ ├── memcache │ ├── CMakeLists.txt │ └── check_memcache.c │ └── resp │ ├── CMakeLists.txt │ └── check_resp.c ├── server ├── CMakeLists.txt └── twemcache-http │ ├── CMakeLists.txt │ ├── Cargo.toml │ └── src │ ├── lib.rs │ └── main.rs ├── storage ├── CMakeLists.txt ├── cuckoo │ ├── CMakeLists.txt │ └── check_cuckoo.c ├── cuckoo_pmem │ ├── CMakeLists.txt │ └── check_cuckoo_pmem.c ├── seg │ ├── CMakeLists.txt │ └── check_seg.c ├── slab │ ├── CMakeLists.txt │ └── check_slab.c └── slab_pmem │ ├── CMakeLists.txt │ └── check_slab_pmem.c └── time ├── CMakeLists.txt └── check_time.c /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files 2 | *.lo 3 | *.o 4 | /_bin 5 | /_site 6 | 7 | # Compiled Dynamic libraries 8 | *.so 9 | 10 | # Compiled Static libraries 11 | *.la 12 | *.a 13 | 14 | # Compiled misc 15 | *.dep 16 | *.gcda 17 | *.gcno 18 | *.gcov 19 | 20 | # Packages 21 | *.tar.gz 22 | *.tar.bz2 23 | 24 | # Logs 25 | *.log 26 | 27 | # Temporary 28 | /_build 29 | *.swp 30 | *.~ 31 | *.project 32 | *.cproject 33 | 34 | # cscope 35 | cscope.out 36 | 37 | # CLion 38 | /.idea 39 | lcov 40 | 41 | # python compiled files 42 | *.pyc 43 | 44 | cdb.rs 45 | *.cdb 46 | compile_commands.json 47 | 48 | *.cmd 49 | /core 50 | CMAKE_BINARY_DIR 51 | 52 | # CMake generates a .cargo/config which is specific to the local 53 | # setup. We don't want to include it within the repo 54 | .cargo 55 | 56 | # Cargo build directory 57 | /target 58 | benchmarks/config 59 | *.svg 60 | -------------------------------------------------------------------------------- /.sshyncignore: -------------------------------------------------------------------------------- 1 | .git 2 | cmake-* 3 | -------------------------------------------------------------------------------- /.syntastic_c_config: -------------------------------------------------------------------------------- 1 | -Ideps/ccommon/include 2 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | 2 | [workspace] 3 | members = [ 4 | "deps/ccommon/rust/ccommon-array", 5 | "deps/ccommon/rust/ccommon-backend", 6 | "deps/ccommon/rust/ccommon-buffer", 7 | "deps/ccommon/rust/ccommon-channel", 8 | "deps/ccommon/rust/ccommon-derive", 9 | "deps/ccommon/rust/ccommon-log", 10 | "deps/ccommon/rust/ccommon-rs", 11 | "deps/ccommon/rust/ccommon-stats", 12 | "deps/ccommon/rust/ccommon-stream", 13 | "deps/ccommon/rust/ccommon-sys", 14 | "src/client/pingclient-rs", 15 | "src/rust/config", 16 | "src/rust-util/httpencode", 17 | "src/rust-util/pelikan", 18 | "src/rust-util/pelikan-sys", 19 | "src/rustcore", 20 | "src/server/pingserver-rs", 21 | "src/server/twemcache-http", 22 | "src/storage/cdb/cdbgen", 23 | "src/storage/cdb/cdb_rs", 24 | "test/server/twemcache-http" 25 | ] 26 | 27 | [profile.release] 28 | opt-level = 3 29 | debug = true 30 | rpath = false 31 | lto = true 32 | debug-assertions = false 33 | codegen-units = 1 34 | 35 | [profile.dev] 36 | debug = true 37 | opt-level = 0 38 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2013-2018 Twitter, Inc 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /README.cmake: -------------------------------------------------------------------------------- 1 | # all source code dependencies are under deps/, please read the README there for more information. 2 | # current dependencies include Check for testing, and some of the usuals on UNIX-like systems: 3 | # glibc, pthread and systems libraries. 4 | 5 | # to turn on/off various compile-time switches, use -D option with cmake 6 | # Example: 7 | # cmake -DHAVE_LOGGING=OFF 8 | 9 | # To provide an alternative location of Check (C unit test framework used by this project), which is 10 | # probably necessary if it is not installed under /usr/local, provide CHECK_ROOT_DIR to cmake 11 | # Example: 12 | # cmake -DCHECK_ROOT_DIR=/opt/twitter .. 13 | 14 | # cmake recommends out-of-source build, so we do it in a new directory: 15 | mkdir _build 16 | cd _build 17 | cmake .. 18 | make -j 19 | make test 20 | 21 | # executables can be found at $(builddir)/_bin/* 22 | -------------------------------------------------------------------------------- /benchmarks/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_subdirectory(storage_cuckoo) 2 | add_subdirectory(storage_slab) 3 | add_subdirectory(storage_seg) 4 | add_subdirectory(storage_LHD) 5 | 6 | 7 | set(SOURCE bench_storage.c shared.c) 8 | 9 | set(MODULES_SLAB 10 | bench_storage_slab 11 | slab) 12 | 13 | set(MODULES_CUCKOO 14 | bench_storage_cuckoo 15 | cuckoo) 16 | 17 | set(MODULES_SEG 18 | bench_storage_seg 19 | seg) 20 | 21 | set(MODULES_LHD 22 | bench_storage_LHD 23 | LHD) 24 | 25 | 26 | set(LIBS 27 | time 28 | ccommon-static 29 | ${CMAKE_THREAD_LIBS_INIT}) 30 | 31 | add_executable(bench_slab ${SOURCE}) 32 | target_link_libraries(bench_slab ${MODULES_SLAB} ${LIBS}) 33 | 34 | add_executable(bench_cuckoo ${SOURCE}) 35 | target_link_libraries(bench_cuckoo ${MODULES_CUCKOO} ${LIBS}) 36 | 37 | add_executable(bench_seg ${SOURCE}) 38 | target_link_libraries(bench_seg ${MODULES_SEG} ${LIBS}) 39 | 40 | 41 | set(SOURCE_TRACE_REPLAY trace_replay/trace_replay.c trace_replay/reader.c shared.c) 42 | add_executable(trace_replay_slab ${SOURCE_TRACE_REPLAY}) 43 | target_link_libraries(trace_replay_slab ${MODULES_SLAB} ${LIBS}) 44 | 45 | add_executable(trace_replay_seg ${SOURCE_TRACE_REPLAY}) 46 | target_link_libraries(trace_replay_seg ${MODULES_SEG} ${LIBS}) 47 | 48 | add_executable(trace_replay_LHD ${SOURCE_TRACE_REPLAY}) 49 | target_link_libraries(trace_replay_LHD ${MODULES_LHD} ${LIBS}) 50 | -------------------------------------------------------------------------------- /benchmarks/config/examples/trace_replay_seg.conf: -------------------------------------------------------------------------------- 1 | debug_logging: yes 2 | debug_log_level: 4 3 | # debug_log_file: debug 4 | 5 | trace_path: /path/tracefile.sbin 6 | default_ttl_list: 86400:0.65,1296000:0.27,43200:0.07 7 | heap_mem: 1048576000 8 | hash_power: 26 9 | seg_evict_opt: 2 10 | n_thread:1 11 | seg_n_thread:1 12 | 13 | # datapool_path: /dev/dax1.0 14 | # datapool_name: pmem0 15 | 16 | -------------------------------------------------------------------------------- /benchmarks/config/examples/trace_replay_slab.conf: -------------------------------------------------------------------------------- 1 | debug_logging: yes 2 | debug_log_level: 4 3 | # debug_log_file: debug 4 | 5 | trace_path: /path/tracefile.sbin 6 | default_ttl_list: 86400:0.65,1296000:0.27,43200:0.07 7 | 8 | slab_mem: 1048576000 9 | slab_hash_power:26 10 | slab_evict_opt:1 11 | 12 | # slab_datapool: /dev/dax1.0 13 | # slab_datapool_name: pmem0 14 | 15 | 16 | -------------------------------------------------------------------------------- /benchmarks/notUsed/trace_conv/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thesys-lab/Segcache/0abdfeed3031b5cf441f07d35ad2aeb3d870789d/benchmarks/notUsed/trace_conv/__init__.py -------------------------------------------------------------------------------- /benchmarks/storage_LHD/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(bench_storage_LHD storage_LHD.c) 2 | 3 | target_link_libraries(bench_storage_LHD) -------------------------------------------------------------------------------- /benchmarks/storage_cuckoo/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(bench_storage_cuckoo storage_cuckoo.c) 2 | 3 | target_link_libraries(bench_storage_cuckoo) 4 | -------------------------------------------------------------------------------- /benchmarks/storage_seg/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(bench_storage_seg storage_seg.c) 2 | 3 | target_link_libraries(bench_storage_seg) 4 | -------------------------------------------------------------------------------- /benchmarks/storage_slab/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(bench_storage_slab storage_slab.c) 2 | 3 | target_link_libraries(bench_storage_slab) -------------------------------------------------------------------------------- /ci/.gitignore: -------------------------------------------------------------------------------- 1 | CMAKE_BINARY_DIR 2 | -------------------------------------------------------------------------------- /ci/before-install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -euo pipefail 4 | IFS=$'\n\t' 5 | 6 | die() { echo "fatal: $*" >&2; exit 1; } 7 | 8 | TEMP="$(mktemp -d -t TEMP.XXXXXXX)" || die "failed to make tmpdir" 9 | cleanup() { [[ -n "${TEMP:-}" ]] && rm -rf "${TEMP}"; } 10 | trap cleanup EXIT 11 | 12 | realpath() { python -c "from __future__ import print_function; import os,sys; print(os.path.realpath(sys.argv[1]))" "$1"; } 13 | 14 | TOPLEVEL="$(cd "$(dirname "$(realpath "$0" >/dev/null || exit 1)")" && git rev-parse --show-toplevel)" || die 'failed to find TOPLEVEL' 15 | 16 | 17 | if [[ -n "${RUST_ENABLED:-}" ]]; then 18 | curl https://sh.rustup.rs -sSf | sh -s -- -y 19 | fi 20 | -------------------------------------------------------------------------------- /ci/cargo.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cargo build 4 | cargo test 5 | cargo build --release 6 | cargo test --release 7 | 8 | cargo test --bin pelikan_pingserver_rs --test integration 9 | -------------------------------------------------------------------------------- /ci/local-clean-build-and-test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -euo pipefail 4 | IFS=$'\n\t' 5 | 6 | die() { echo "fatal: $*" >&2; exit 1; } 7 | 8 | TEMP="$(mktemp -d -t TEMP.XXXXXXX)" || die "failed to make tmpdir" 9 | cleanup() { [[ -n "${TEMP:-}" ]] && rm -rf "${TEMP}"; } 10 | trap cleanup EXIT 11 | 12 | 13 | if [[ -n "$(git status --porcelain)" ]]; then 14 | die "dirty working copy state, please commit changes before running this script" 15 | fi 16 | 17 | git archive --format=tar --prefix=pelikan/ HEAD .|tar -C "$TEMP" -xf- 18 | cd "$TEMP/pelikan" 19 | 20 | bash ./ci/run.sh 21 | -------------------------------------------------------------------------------- /ci/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -uo pipefail 4 | IFS=$'\n\t' 5 | 6 | die() { echo "fatal: $*" >&2; exit 1; } 7 | 8 | TEMP="$(mktemp -d -t TEMP.XXXXXXX)" || die "failed to make tmpdir" 9 | cleanup() { [[ -n "${TEMP:-}" ]] && rm -rf "${TEMP}"; } 10 | trap cleanup EXIT 11 | 12 | export PATH=$HOME/.cargo/bin:$PATH 13 | 14 | # TODO: run cmake3 on centos hosts 15 | cmake_cmd=( 16 | cmake 17 | -DBUILD_AND_INSTALL_CHECK=yes 18 | -DCARGO_CI=yes 19 | ) 20 | 21 | # Ensure that rust test failures have the full backtrace 22 | export RUST_BACKTRACE=full 23 | # Make ctest display the output from failing tests 24 | export CTEST_OUTPUT_ON_FAILURE=1 25 | 26 | # build CDB in CI or else stuff breaks 27 | if [[ -n "${RUST_ENABLED:-}" ]]; then 28 | cmake_cmd+=( -DTARGET_CDB=yes -DHAVE_RUST=yes -DRUST_VERBOSE_BUILD=yes ) 29 | fi 30 | 31 | mkdir -p _build && ( cd _build && "${cmake_cmd[@]}" .. && make && make test ) || die 'make failed' 32 | 33 | egrep -r ":F:|:E:" . |grep -v 'Binary file' || true 34 | 35 | ( cd test/integration && python test_twemcache.py ) || die 'twemcache tests failed' 36 | 37 | -------------------------------------------------------------------------------- /cmake/FindLIBPMEM.cmake: -------------------------------------------------------------------------------- 1 | # Find the libpmem library. 2 | # Output variables: 3 | # LIBPMEM_INCLUDE_DIRS : e.g., /usr/include/. 4 | # LIBPMEM_LIBRARIES : Library path of libpmem 5 | # LIBPMEM_FOUND : True if found. 6 | 7 | ##_____________________________________________________________________________ 8 | ## Check for the header files 9 | 10 | find_path (LIBPMEM_INCLUDE_DIRS 11 | NAMES libpmem.h 12 | PATH_SUFFIXES include 13 | ) 14 | 15 | ##_____________________________________________________________________________ 16 | ## Check for the library 17 | 18 | find_library (LIBPMEM_LIBRARIES pmem 19 | PATH_SUFFIXES lib64 lib 20 | ) 21 | 22 | ##_____________________________________________________________________________ 23 | ## Actions taken when all components have been found 24 | 25 | find_package_handle_standard_args (LIBPMEM DEFAULT_MSG LIBPMEM_LIBRARIES LIBPMEM_INCLUDE_DIRS) 26 | 27 | if (LIBPMEM_FOUND) 28 | message (STATUS "Found components for LIBPMEM") 29 | message (STATUS "LIBPMEM_INCLUDE_DIRS = ${LIBPMEM_INCLUDE_DIRS}") 30 | message (STATUS "LIBPMEM_LIBRARIES = ${LIBPMEM_LIBRARIES}") 31 | else () 32 | message(FATAL_ERROR "Could not find LIBPMEM, download and install from https://github.com/pmem/pmdk/releases") 33 | endif () 34 | -------------------------------------------------------------------------------- /cmake/config.h.in: -------------------------------------------------------------------------------- 1 | #define VERSION_MAJOR @pelikan_VERSION_MAJOR@ 2 | #define VERSION_MINOR @pelikan_VERSION_MINOR@ 3 | #define VERSION_PATCH @pelikan_VERSION_PATCH@ 4 | 5 | #define VERSION_STRING "@pelikan_VERSION_MAJOR@.@pelikan_VERSION_MINOR@.@pelikan_VERSION_PATCH@" 6 | 7 | #define OS_PLATFORM @OS_PLATFORM@ 8 | 9 | #cmakedefine HAVE_ASSERT_LOG 10 | 11 | #cmakedefine HAVE_ASSERT_PANIC 12 | 13 | #cmakedefine HAVE_BACKTRACE 14 | 15 | #cmakedefine HAVE_LOGGING 16 | 17 | #cmakedefine HAVE_STATS 18 | 19 | #cmakedefine HAVE_ITT_INSTRUMENTATION 20 | 21 | #cmakedefine TARGET_SLIMCACHE 22 | 23 | #cmakedefine TARGET_TWEMCACHE 24 | 25 | #cmakedefine TARGET_REDIS 26 | -------------------------------------------------------------------------------- /config/cdb.conf: -------------------------------------------------------------------------------- 1 | # if slab profile is specified, then the profile wil be explicitly set 2 | # otherwise, slab profile will be generated by using growth factor, slab size, 3 | # and item min/max size 4 | # For example, you can specify all item sizes allowed with slab_profile: 5 | # slab_profile: 1024 2048 4096 8192 16384 32768 65536 131072 262144 524288 6 | 7 | debug_log_level: 4 8 | debug_log_file: cdb.log 9 | debug_log_nbuf: 1048576 10 | 11 | klog_file: cdb.cmd 12 | klog_backup: cdb.cmd.old 13 | klog_sample: 100 14 | klog_max: 1073741824 15 | 16 | # by default load file in the cwd named 'db.cdb' 17 | cdb_file_path: db.cdb 18 | -------------------------------------------------------------------------------- /config/ds.conf: -------------------------------------------------------------------------------- 1 | debug_log_level: 6 2 | 3 | server_host: localhost 4 | -------------------------------------------------------------------------------- /config/pingserver-tls.toml: -------------------------------------------------------------------------------- 1 | daemonize = false 2 | 3 | # NOTE: not currently implemented 4 | [admin] 5 | 6 | [server] 7 | # interfaces listening on 8 | host = "0.0.0.0" 9 | # port listening on 10 | port = "12321" 11 | # epoll timeout in milliseconds 12 | timeout = 100 13 | # epoll max events returned 14 | nevent = 1024 15 | 16 | [worker] 17 | # epoll timeout in milliseconds 18 | timeout = 100 19 | # epoll max events returned 20 | nevent = 1024 21 | 22 | # NOTE: not currently implemented 23 | [time] 24 | 25 | # NOTE: not currently implemented 26 | [buf] 27 | 28 | # NOTE: not currently implemented 29 | [debug] 30 | 31 | # NOTE: not currently implemented 32 | [sockio] 33 | 34 | # NOTE: not currently implemented 35 | [tcp] 36 | 37 | [tls] 38 | # certificate chain used to validate client certificate 39 | certificate_chain = "client.chain" 40 | # server certificate 41 | certificate = "server.crt" 42 | # server private key 43 | private_key = "server.key" 44 | -------------------------------------------------------------------------------- /config/pingserver.conf: -------------------------------------------------------------------------------- 1 | debug_log_level: 4 2 | debug_log_file: pingserver.log 3 | debug_log_nbuf: 1048576 4 | -------------------------------------------------------------------------------- /config/pingserver.toml: -------------------------------------------------------------------------------- 1 | daemonize = false 2 | 3 | # NOTE: not currently implemented 4 | [admin] 5 | 6 | [server] 7 | # interfaces listening on 8 | host = "0.0.0.0" 9 | # port listening on 10 | port = "12321" 11 | # epoll timeout in milliseconds 12 | timeout = 100 13 | # epoll max events returned 14 | nevent = 1024 15 | 16 | [worker] 17 | # epoll timeout in milliseconds 18 | timeout = 100 19 | # epoll max events returned 20 | nevent = 1024 21 | 22 | # NOTE: not currently implemented 23 | [time] 24 | 25 | # NOTE: not currently implemented 26 | [buf] 27 | 28 | # NOTE: not currently implemented 29 | [debug] 30 | 31 | # NOTE: not currently implemented 32 | [sockio] 33 | 34 | # NOTE: not currently implemented 35 | [tcp] 36 | -------------------------------------------------------------------------------- /config/resp-cli.conf: -------------------------------------------------------------------------------- 1 | debug_log_level: 2 2 | debug_log_file: resp-cli.log 3 | -------------------------------------------------------------------------------- /config/segcache.conf: -------------------------------------------------------------------------------- 1 | 2 | debug_log_level: 4 3 | 4 | 5 | time_type: 2 6 | 7 | seg_mem: 1048576000 8 | seg_hash_power: 24 9 | seg_evict_opt: 1 10 | # seg_datapool_path: /dev/dax1.0 11 | # seg_datapool_name: pmem 12 | 13 | 14 | -------------------------------------------------------------------------------- /config/slimcache.conf: -------------------------------------------------------------------------------- 1 | daemonize: no 2 | pid_filename: slimcache.pid 3 | 4 | debug_log_level: 4 5 | debug_log_file: slimcache.log 6 | debug_log_nbuf: 1048576 7 | 8 | klog_file: slimcache.cmd 9 | klog_backup: twemcache.cmd.old 10 | klog_sample: 100 11 | klog_max: 1073741824 12 | 13 | buf_init_size: 8192 14 | 15 | cuckoo_item_size: 64 16 | cuckoo_nitem: 1048576 17 | -------------------------------------------------------------------------------- /config/test.conf: -------------------------------------------------------------------------------- 1 | debug_log_level: 6 2 | -------------------------------------------------------------------------------- /config/twemcache.conf: -------------------------------------------------------------------------------- 1 | # if slab profile is specified, then the profile wil be explicitly set 2 | # otherwise, slab profile will be generated by using growth factor, slab size, 3 | # and item min/max size 4 | # For example, you can specify all item sizes allowed with slab_profile: 5 | # slab_profile: 1024 2048 4096 8192 16384 32768 65536 131072 262144 524288 6 | 7 | debug_log_level: 4 8 | debug_log_file: twemcache.log 9 | debug_log_nbuf: 1048576 10 | 11 | klog_file: twemcache.cmd 12 | klog_backup: twemcache.cmd.old 13 | klog_sample: 100 14 | klog_max: 1073741824 15 | 16 | slab_mem: 4294967296 17 | slab_hash_power: 22 18 | slab_evict_opt: 1 19 | 20 | time_type: 2 21 | -------------------------------------------------------------------------------- /deps/.gitignore: -------------------------------------------------------------------------------- 1 | check/ 2 | -------------------------------------------------------------------------------- /deps/ccommon/.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | One line summary of the issue here. 2 | 3 | ### Expected behavior 4 | 5 | As concisely as possible, describe the expected behavior. 6 | 7 | ### Actual behavior 8 | 9 | As concisely as possible, describe the observed behavior. 10 | 11 | ### Steps to reproduce the behavior 12 | 13 | Please list all relevant steps to reproduce the observed behavior. -------------------------------------------------------------------------------- /deps/ccommon/.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | Problem 2 | 3 | Explain the context and why you're making that change. What is the 4 | problem you're trying to solve? In some cases there is not a problem 5 | and this can be thought of being the motivation for your change. 6 | 7 | Solution 8 | 9 | Describe the modifications you've done. 10 | 11 | Result 12 | 13 | What will change as a result of your pull request? Note that sometimes 14 | this section is unnecessary because it is self-explanatory based on 15 | the solution. 16 | -------------------------------------------------------------------------------- /deps/ccommon/.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files 2 | *.lo 3 | *.o 4 | 5 | # Compiled Dynamic libraries 6 | *.so 7 | 8 | # Compiled Static libraries 9 | *.la 10 | *.a 11 | 12 | # Compiled misc 13 | *.dep 14 | *.gcda 15 | *.gcno 16 | *.gcov 17 | 18 | # Packages 19 | *.tar.gz 20 | *.tar.bz2 21 | 22 | # Logs 23 | *.log 24 | 25 | # Automatically generated files 26 | COPYING 27 | INSTALL 28 | include/config.h 29 | 30 | # Temporary 31 | *.swp 32 | *.~ 33 | *.project 34 | *.cproject 35 | 36 | # Cmake 37 | _build 38 | 39 | # Tags 40 | tags 41 | .tags 42 | 43 | # cscope 44 | cscope.* 45 | lcov 46 | 47 | CMAKE_BINARY_DIR 48 | 49 | # Generated Rust Bindings 50 | bindings.rs 51 | 52 | # Cargo lock file 53 | Cargo.lock 54 | 55 | # Cargo build path 56 | target 57 | -------------------------------------------------------------------------------- /deps/ccommon/HEADER: -------------------------------------------------------------------------------- 1 | /* 2 | * ccommon - a cache common library. 3 | * Copyright (C) 2013-2015 Twitter, Inc. 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | -------------------------------------------------------------------------------- /deps/ccommon/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2013-2018 Twitter, Inc 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /deps/ccommon/NOTICE: -------------------------------------------------------------------------------- 1 | /* The use of Check is limited to testing. Source files depending on 2 | * Check are under the `test' directory. 3 | * This package does not ship with any source code contained in Check, 4 | * except the following license statement. 5 | * 6 | * Check: a unit test framework for C 7 | * Copyright (C) 2001, 2002, Arien Malec 8 | * 9 | * This library is free software; you can redistribute it and/or 10 | * modify it under the terms of the GNU Lesser General Public 11 | * License as published by the Free Software Foundation; either 12 | * version 2.1 of the License, or (at your option) any later version. 13 | * 14 | * This library is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17 | * Lesser General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Lesser General Public 20 | * License along with this library; if not, write to the 21 | * Free Software Foundation, Inc., 59 Temple Place - Suite 330, 22 | * Boston, MA 02111-1307, USA. 23 | */ 24 | 25 | We use the CMakeRust project (https://github.com/Devolutions/CMakeRust) under 26 | the Apache 2.0 License. 27 | -------------------------------------------------------------------------------- /deps/ccommon/ccommon.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@prefix@ 2 | exec_prefix=@exec_prefix@ 3 | libdir=@libdir@ 4 | includedir=@includedir@ 5 | 6 | Name: @PACKAGE_NAME@ 7 | Description: cache common library in C 8 | URL: @PACKAGE_URL@ 9 | Version: @PACKAGE_VERSION@ 10 | Libs: -L${libdir} -lccommon-@CCOMMON_RELEASE_VERSION@ 11 | Cflags: -I${includedir}/ccommon-@CCOMMON_RELEASE_VERSION@ -I${libdir}/ccommon-@CCOMMON_RELEASE_VERSION@/include 12 | -------------------------------------------------------------------------------- /deps/ccommon/ci/before-install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -euo pipefail 4 | IFS=$'\n\t' 5 | 6 | die() { echo "fatal: $*" >&2; exit 1; } 7 | 8 | TEMP="$(mktemp -d -t TEMP.XXXXXXX)" || die "failed to make tmpdir" 9 | cleanup() { [[ -n "${TEMP:-}" ]] && rm -rf "${TEMP}"; } 10 | trap cleanup EXIT 11 | 12 | TOPLEVEL="$(git -C "$(cd "$(dirname "$0")" >/dev/null || exit 1; pwd)" rev-parse --show-toplevel)" || die 'failed to find TOPLEVEL' 13 | 14 | if [[ -n "${RUST_ENABLED:-}" ]]; then 15 | curl https://sh.rustup.rs -sSf | sh -s -- -y 16 | fi 17 | -------------------------------------------------------------------------------- /deps/ccommon/ci/cargo.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -uo pipefail 4 | IFS=$'\n\t' 5 | 6 | # Cargo currently does not allow nested workspaces. Since this repo is vendored 7 | # into github.com/twitter/pelikan which is itself a workspace, we cannot commit 8 | # a workspace manifest for this repository. Cargo tracking issue: 9 | # https://github.com/rust-lang/cargo/issues/5042 10 | 11 | # As a workaround, we can construct a workspace manifest before running the 12 | # build. This allows the crates within this repo to share build artifacts. 13 | 14 | ### 15 | # Create workspace manifest 16 | ### 17 | 18 | cat > Cargo.toml <
> Cargo.toml 26 | done 27 | 28 | cat >> Cargo.toml <