├── .gitignore ├── .travis.yml ├── CMakeLists.txt ├── LICENSE ├── README.md ├── demo ├── club-chat.cpp └── transport-speed-bench.cpp ├── docs ├── broadcast.gif ├── disconnect.gif └── fuse.gif ├── include ├── async │ └── alarm.h ├── binary │ ├── decoder.h │ ├── dynamic_encoder.h │ ├── encoded.h │ ├── encoder.h │ └── serialize │ │ ├── flat_map.h │ │ ├── flat_set.h │ │ ├── ip.h │ │ ├── list.h │ │ ├── map.h │ │ ├── optional.h │ │ ├── pair.h │ │ ├── set.h │ │ ├── string.h │ │ ├── uuid.h │ │ └── vector.h ├── club │ ├── debug │ │ ├── log.h │ │ ├── log_output.h │ │ ├── ostream_uuid.h │ │ └── string_tools.h │ ├── detail │ │ └── time_stamp.h │ ├── generic │ │ ├── cyclic_queue.h │ │ ├── move_exec.h │ │ ├── overload.h │ │ └── variant_tools.h │ ├── graph.h │ ├── hub.h │ ├── socket.h │ ├── transport │ │ ├── ack_set.h │ │ ├── error.h │ │ ├── in_message_full.h │ │ ├── in_message_part.h │ │ ├── message_type.h │ │ ├── out_message.h │ │ ├── packet.h │ │ ├── part_info.h │ │ ├── pending_message.h │ │ ├── punch_hole.h │ │ ├── quality_of_service.h │ │ ├── sequence_number.h │ │ └── transmit_queue.h │ └── uuid.h └── rendezvous │ ├── client.h │ └── constants.h ├── src ├── club │ ├── broadcast_routing_table.h │ ├── connection_graph.cpp │ ├── connection_graph.h │ ├── debug │ │ └── ASSERT.h │ ├── generic │ │ └── defer.h │ ├── get_external_port.h │ ├── hub.cpp │ ├── log.h │ ├── log_entry.h │ ├── message.h │ ├── message_id.h │ ├── node.h │ ├── protocol_versions.h │ ├── reliable_exchange.h │ ├── seen_messages.h │ ├── serialize │ │ ├── message_id.h │ │ └── net.h │ ├── stun_client.cpp │ ├── stun_client.h │ └── transport │ │ └── error.cpp └── rendezvous │ ├── handler.h │ ├── header.h │ ├── options.h │ ├── reflector.h │ ├── server.cpp │ └── server.h └── tests ├── async_loop.h ├── main.cpp ├── test-ackset.cpp ├── test-club.cpp ├── test-graph.cpp ├── test-part-info.cpp ├── test-rendezvous.cpp ├── test-stun.cpp ├── test-transmit-queue.cpp ├── test-transport.cpp ├── util └── socket.h └── when_all.h /.gitignore: -------------------------------------------------------------------------------- 1 | build/ 2 | tools/ 3 | Session.vim 4 | run.sh 5 | callgrind.* 6 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/.travis.yml -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/CMakeLists.txt -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/README.md -------------------------------------------------------------------------------- /demo/club-chat.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/demo/club-chat.cpp -------------------------------------------------------------------------------- /demo/transport-speed-bench.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/demo/transport-speed-bench.cpp -------------------------------------------------------------------------------- /docs/broadcast.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/docs/broadcast.gif -------------------------------------------------------------------------------- /docs/disconnect.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/docs/disconnect.gif -------------------------------------------------------------------------------- /docs/fuse.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/docs/fuse.gif -------------------------------------------------------------------------------- /include/async/alarm.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/async/alarm.h -------------------------------------------------------------------------------- /include/binary/decoder.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/binary/decoder.h -------------------------------------------------------------------------------- /include/binary/dynamic_encoder.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/binary/dynamic_encoder.h -------------------------------------------------------------------------------- /include/binary/encoded.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/binary/encoded.h -------------------------------------------------------------------------------- /include/binary/encoder.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/binary/encoder.h -------------------------------------------------------------------------------- /include/binary/serialize/flat_map.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/binary/serialize/flat_map.h -------------------------------------------------------------------------------- /include/binary/serialize/flat_set.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/binary/serialize/flat_set.h -------------------------------------------------------------------------------- /include/binary/serialize/ip.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/binary/serialize/ip.h -------------------------------------------------------------------------------- /include/binary/serialize/list.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/binary/serialize/list.h -------------------------------------------------------------------------------- /include/binary/serialize/map.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/binary/serialize/map.h -------------------------------------------------------------------------------- /include/binary/serialize/optional.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/binary/serialize/optional.h -------------------------------------------------------------------------------- /include/binary/serialize/pair.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/binary/serialize/pair.h -------------------------------------------------------------------------------- /include/binary/serialize/set.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/binary/serialize/set.h -------------------------------------------------------------------------------- /include/binary/serialize/string.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/binary/serialize/string.h -------------------------------------------------------------------------------- /include/binary/serialize/uuid.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/binary/serialize/uuid.h -------------------------------------------------------------------------------- /include/binary/serialize/vector.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/binary/serialize/vector.h -------------------------------------------------------------------------------- /include/club/debug/log.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/club/debug/log.h -------------------------------------------------------------------------------- /include/club/debug/log_output.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/club/debug/log_output.h -------------------------------------------------------------------------------- /include/club/debug/ostream_uuid.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/club/debug/ostream_uuid.h -------------------------------------------------------------------------------- /include/club/debug/string_tools.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/club/debug/string_tools.h -------------------------------------------------------------------------------- /include/club/detail/time_stamp.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/club/detail/time_stamp.h -------------------------------------------------------------------------------- /include/club/generic/cyclic_queue.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/club/generic/cyclic_queue.h -------------------------------------------------------------------------------- /include/club/generic/move_exec.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/club/generic/move_exec.h -------------------------------------------------------------------------------- /include/club/generic/overload.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/club/generic/overload.h -------------------------------------------------------------------------------- /include/club/generic/variant_tools.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/club/generic/variant_tools.h -------------------------------------------------------------------------------- /include/club/graph.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/club/graph.h -------------------------------------------------------------------------------- /include/club/hub.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/club/hub.h -------------------------------------------------------------------------------- /include/club/socket.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/club/socket.h -------------------------------------------------------------------------------- /include/club/transport/ack_set.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/club/transport/ack_set.h -------------------------------------------------------------------------------- /include/club/transport/error.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/club/transport/error.h -------------------------------------------------------------------------------- /include/club/transport/in_message_full.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/club/transport/in_message_full.h -------------------------------------------------------------------------------- /include/club/transport/in_message_part.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/club/transport/in_message_part.h -------------------------------------------------------------------------------- /include/club/transport/message_type.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/club/transport/message_type.h -------------------------------------------------------------------------------- /include/club/transport/out_message.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/club/transport/out_message.h -------------------------------------------------------------------------------- /include/club/transport/packet.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/club/transport/packet.h -------------------------------------------------------------------------------- /include/club/transport/part_info.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/club/transport/part_info.h -------------------------------------------------------------------------------- /include/club/transport/pending_message.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/club/transport/pending_message.h -------------------------------------------------------------------------------- /include/club/transport/punch_hole.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/club/transport/punch_hole.h -------------------------------------------------------------------------------- /include/club/transport/quality_of_service.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/club/transport/quality_of_service.h -------------------------------------------------------------------------------- /include/club/transport/sequence_number.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/club/transport/sequence_number.h -------------------------------------------------------------------------------- /include/club/transport/transmit_queue.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/club/transport/transmit_queue.h -------------------------------------------------------------------------------- /include/club/uuid.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/club/uuid.h -------------------------------------------------------------------------------- /include/rendezvous/client.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/rendezvous/client.h -------------------------------------------------------------------------------- /include/rendezvous/constants.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/include/rendezvous/constants.h -------------------------------------------------------------------------------- /src/club/broadcast_routing_table.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/src/club/broadcast_routing_table.h -------------------------------------------------------------------------------- /src/club/connection_graph.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/src/club/connection_graph.cpp -------------------------------------------------------------------------------- /src/club/connection_graph.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/src/club/connection_graph.h -------------------------------------------------------------------------------- /src/club/debug/ASSERT.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/src/club/debug/ASSERT.h -------------------------------------------------------------------------------- /src/club/generic/defer.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/src/club/generic/defer.h -------------------------------------------------------------------------------- /src/club/get_external_port.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/src/club/get_external_port.h -------------------------------------------------------------------------------- /src/club/hub.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/src/club/hub.cpp -------------------------------------------------------------------------------- /src/club/log.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/src/club/log.h -------------------------------------------------------------------------------- /src/club/log_entry.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/src/club/log_entry.h -------------------------------------------------------------------------------- /src/club/message.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/src/club/message.h -------------------------------------------------------------------------------- /src/club/message_id.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/src/club/message_id.h -------------------------------------------------------------------------------- /src/club/node.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/src/club/node.h -------------------------------------------------------------------------------- /src/club/protocol_versions.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/src/club/protocol_versions.h -------------------------------------------------------------------------------- /src/club/reliable_exchange.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/src/club/reliable_exchange.h -------------------------------------------------------------------------------- /src/club/seen_messages.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/src/club/seen_messages.h -------------------------------------------------------------------------------- /src/club/serialize/message_id.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/src/club/serialize/message_id.h -------------------------------------------------------------------------------- /src/club/serialize/net.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/src/club/serialize/net.h -------------------------------------------------------------------------------- /src/club/stun_client.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/src/club/stun_client.cpp -------------------------------------------------------------------------------- /src/club/stun_client.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/src/club/stun_client.h -------------------------------------------------------------------------------- /src/club/transport/error.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/src/club/transport/error.cpp -------------------------------------------------------------------------------- /src/rendezvous/handler.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/src/rendezvous/handler.h -------------------------------------------------------------------------------- /src/rendezvous/header.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/src/rendezvous/header.h -------------------------------------------------------------------------------- /src/rendezvous/options.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/src/rendezvous/options.h -------------------------------------------------------------------------------- /src/rendezvous/reflector.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/src/rendezvous/reflector.h -------------------------------------------------------------------------------- /src/rendezvous/server.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/src/rendezvous/server.cpp -------------------------------------------------------------------------------- /src/rendezvous/server.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/src/rendezvous/server.h -------------------------------------------------------------------------------- /tests/async_loop.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/tests/async_loop.h -------------------------------------------------------------------------------- /tests/main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/tests/main.cpp -------------------------------------------------------------------------------- /tests/test-ackset.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/tests/test-ackset.cpp -------------------------------------------------------------------------------- /tests/test-club.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/tests/test-club.cpp -------------------------------------------------------------------------------- /tests/test-graph.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/tests/test-graph.cpp -------------------------------------------------------------------------------- /tests/test-part-info.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/tests/test-part-info.cpp -------------------------------------------------------------------------------- /tests/test-rendezvous.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/tests/test-rendezvous.cpp -------------------------------------------------------------------------------- /tests/test-stun.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/tests/test-stun.cpp -------------------------------------------------------------------------------- /tests/test-transmit-queue.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/tests/test-transmit-queue.cpp -------------------------------------------------------------------------------- /tests/test-transport.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/tests/test-transport.cpp -------------------------------------------------------------------------------- /tests/util/socket.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/tests/util/socket.h -------------------------------------------------------------------------------- /tests/when_all.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inetic/libclub/HEAD/tests/when_all.h --------------------------------------------------------------------------------