33 Commits

Author SHA1 Message Date
Michael Fabian 'Xaymar' Dirks d6e6ec96c4 windows: Rewrite onto IOCompletionPorts
IOCompletionPorts are the modern way to handle asynchronous IO without affected the system too much. Synchronization, work allocation and spreading, etc is all handled by the OS for us, which reduces the work we have to do in order to be NUMA aware. While this is far from perfect, it should perform better than a naive threaded approach.

ToDo:
- Add documentation generation
- Add Github Actions integration
- Write tests for everything.
- Update 'benchmark' sample to work again.
- Figure out a useful way to deal with connect/disconnect/error events.
- Figure out the broken pipe error, caused by an additional connected event where none should have been.
2020-06-22 00:43:06 +02:00
Michael Fabian 'Xaymar' Dirks f9acd6984a windows: Improve stability by enforce no-copy 2020-01-23 04:01:44 +01:00
Michael Fabian 'Xaymar' Dirks fb2732a570 event: Improve formatting and stability 2020-01-23 02:36:28 +01:00
Michael Fabian 'Xaymar' Dirks 55d7d90209 windows: Fix accidental rename 2020-01-23 02:35:36 +01:00
Michael Fabian 'Xaymar' Dirks 08713db947 cmake: Fix remaining compile issues 2020-01-23 02:16:21 +01:00
Michael Fabian 'Xaymar' Dirks acd4d4b356 cmake: Further refactoring and formatting 2020-01-23 01:51:15 +01:00
Michael Fabian 'Xaymar' Dirks 3dd8e1e102 cmake: Refactor CMakeLists 2020-01-23 01:14:38 +01:00
Michael Fabian 'Xaymar' Dirks b038d2c680 cmake: Remove CppCheck support in favor of clang-tidy 2019-07-04 20:32:26 +02:00
Michael Fabian 'Xaymar' Dirks a3b4ff4983 threadpool: Simple threadpool implemenation
Relies on standard C++ functionality to work. It might be worth it to consider pthread or boost in the future for this.
2019-04-11 17:00:40 +02:00
Michael Fabian 'Xaymar' Dirks 4bdcf51c54 windows/datapath: Windows implementation 2019-04-11 01:44:10 +02:00
Michael Fabian 'Xaymar' Dirks 1c0747bf98 event: Improve event code 2019-04-11 01:42:56 +02:00
Michael Fabian 'Xaymar' Dirks 6cc5076333 error: Add unsupported operation error code 2019-04-11 01:41:45 +02:00
Michael Fabian 'Xaymar' Dirks 99e47d59f7 samples/benchmark: Basic benchmark sample 2019-01-08 07:58:10 +01:00
Michael Fabian 'Xaymar' Dirks 8571beb2dc windows/server: Fix crash when disconnecting sockets 2019-01-08 07:57:40 +01:00
Michael Fabian 'Xaymar' Dirks a178f4118a readme: Add missing 0 to timings 2019-01-08 03:42:58 +01:00
Michael Fabian 'Xaymar' Dirks 8a4df2cc3a samples/single-process-ipc: Add single process IPC sample
A basic sample to show the layout required to do any IPC work for both client and server. It does not have a multi-process architecture and instead relies on threading, but this already shows the speed that should be expected when using DataPath.
2019-01-08 03:06:08 +01:00
Michael Fabian 'Xaymar' Dirks 9b9504d925 windows/waitable: Allow a timeout of 0 2019-01-08 03:01:54 +01:00
Michael Fabian 'Xaymar' Dirks 80ee995dbd windows/utility: Set event in def_io_completion_routine 2019-01-08 03:01:19 +01:00
Michael Fabian 'Xaymar' Dirks 6029b37796 windows/socket: Assign io completion routine and test event first 2019-01-08 03:01:03 +01:00
Michael Fabian 'Xaymar' Dirks 28aaf02788 server: Fix several crashes with variable iteration 2019-01-08 03:00:29 +01:00
Michael Fabian 'Xaymar' Dirks 2af167bec3 waitable: Do not return Failure when timing out. 2019-01-07 00:27:37 +01:00
Michael Fabian 'Xaymar' Dirks 6626a5441b socket: Remove datapath::error from on_close 2019-01-07 00:25:03 +01:00
Michael Fabian 'Xaymar' Dirks 18c772fafb server: Asynchronous Accept events
This detaches accept from the task workflow.
2019-01-07 00:24:42 +01:00
Michael Fabian 'Xaymar' Dirks 98654b68f1 waitable: Fix asserts 2019-01-07 00:23:40 +01:00
Michael Fabian 'Xaymar' Dirks c6de678c36 event: Fix template 2019-01-07 00:23:40 +01:00
Michael Fabian 'Xaymar' Dirks 808af66bb0 task: Add header information to data 2019-01-07 00:23:40 +01:00
Michael Fabian 'Xaymar' Dirks 5facc71844 windows/utility: Add default io completion routine 2019-01-07 00:23:40 +01:00
Michael Fabian 'Xaymar' Dirks 8417fdfd67 datapath.hpp: Assign default max client to be 0 (infinite) 2019-01-06 11:25:48 +01:00
Michael Fabian 'Xaymar' Dirks 20da2b943a datapath.hpp: Only include necessary headers and formatting 2019-01-06 11:18:44 +01:00
Michael Fabian 'Xaymar' Dirks 1f5096f3a5 License: Fix extra space before name 2019-01-06 11:17:01 +01:00
Michael Fabian 'Xaymar' Dirks b7c20ecd20 Initial README 2019-01-06 11:13:02 +01:00
Michael Fabian 'Xaymar' Dirks 92e5a327b2 Initial Code 2019-01-06 11:12:50 +01:00
Michael Fabian 'Xaymar' Dirks 009868afe6 Initial Commit 2019-01-06 11:10:29 +01:00