├── .github └── workflows │ └── build.yml ├── .gitignore ├── LICENSE.md ├── README.md ├── doc ├── zerio-overview.png ├── zerio-receiving-path.png └── zerio-sending-path.png ├── execute-tests.bat └── src ├── Abc.Zerio.Client ├── Abc.Zerio.Client.csproj ├── App.config ├── Benchmark.cs ├── BenchmarkResult.cs └── Program.cs ├── Abc.Zerio.Server ├── Abc.Zerio.Server.csproj ├── App.config └── Program.cs ├── Abc.Zerio.Tests ├── Abc.Zerio.Tests.csproj ├── Core │ ├── CompletionPollingWaitStrategyFactoryTests.cs │ ├── CompletionTrackerTests.cs │ ├── MessageFramerTests.cs │ ├── ReceiveCompletionProcessorTests.cs │ └── TestCompletionQueue.cs └── UnmanagedRioBufferTests.cs ├── Abc.Zerio.sln ├── Abc.Zerio ├── Abc.Zerio.csproj ├── Core │ ├── AcquiredSendRequestEntry.cs │ ├── BusySpinCompletionPollingWaitStrategy.cs │ ├── ClientMessageReceivedDelegate.cs │ ├── CompletionPollingWaitStrategyFactory.cs │ ├── CompletionPollingWaitStrategyType.cs │ ├── CompletionQueues.cs │ ├── CompletionTracker.cs │ ├── HybridWaitStrategy.cs │ ├── ICompletionPollingWaitStrategy.cs │ ├── IFeedClient.cs │ ├── IFeedServer.cs │ ├── IRioBufferSegmentDescriptorContainer.cs │ ├── IRioCompletionQueue.cs │ ├── ISession.cs │ ├── ISessionManager.cs │ ├── InternalZerioConfiguration.cs │ ├── MessageFramer.cs │ ├── ReceiveCompletionProcessor.cs │ ├── RequestEngineWaitStrategyType.cs │ ├── RioBufferSegment.cs │ ├── RioCompletionQueue.cs │ ├── RioRequestQueue.cs │ ├── SendCompletionProcessor.cs │ ├── SendRequestEntry.cs │ ├── SendRequestEntryType.cs │ ├── SendRequestProcessingEngine.cs │ ├── SendRequestProcessor.cs │ ├── SendingRequestConflater.cs │ ├── ServerMessageReceivedDelegate.cs │ ├── Session.cs │ ├── SessionManager.cs │ ├── SessionSendingBatch.cs │ ├── SpinWaitCompletionPollingWaitStrategy.cs │ └── UnmanagedRioBuffer.cs ├── Interop │ ├── CompletionQueueHandle.cs │ ├── Kernel32.cs │ ├── NativeTypes.cs │ └── WinSock.cs ├── Properties │ └── AssemblyInfo.cs ├── Tcp │ ├── TcpFeedClient.cs │ ├── TcpFeedServer.cs │ ├── TcpFrameReceiver.cs │ └── TcpFrameSender.cs ├── ZerioClient.cs ├── ZerioClientConfiguration.cs ├── ZerioConfiguration.cs ├── ZerioServer.cs └── ZerioServerConfiguration.cs ├── Directory.Build.props └── Directory.Build.targets /.github/workflows/build.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/.github/workflows/build.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/.gitignore -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/LICENSE.md -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/README.md -------------------------------------------------------------------------------- /doc/zerio-overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/doc/zerio-overview.png -------------------------------------------------------------------------------- /doc/zerio-receiving-path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/doc/zerio-receiving-path.png -------------------------------------------------------------------------------- /doc/zerio-sending-path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/doc/zerio-sending-path.png -------------------------------------------------------------------------------- /execute-tests.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/execute-tests.bat -------------------------------------------------------------------------------- /src/Abc.Zerio.Client/Abc.Zerio.Client.csproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio.Client/Abc.Zerio.Client.csproj -------------------------------------------------------------------------------- /src/Abc.Zerio.Client/App.config: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio.Client/App.config -------------------------------------------------------------------------------- /src/Abc.Zerio.Client/Benchmark.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio.Client/Benchmark.cs -------------------------------------------------------------------------------- /src/Abc.Zerio.Client/BenchmarkResult.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio.Client/BenchmarkResult.cs -------------------------------------------------------------------------------- /src/Abc.Zerio.Client/Program.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio.Client/Program.cs -------------------------------------------------------------------------------- /src/Abc.Zerio.Server/Abc.Zerio.Server.csproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio.Server/Abc.Zerio.Server.csproj -------------------------------------------------------------------------------- /src/Abc.Zerio.Server/App.config: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio.Server/App.config -------------------------------------------------------------------------------- /src/Abc.Zerio.Server/Program.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio.Server/Program.cs -------------------------------------------------------------------------------- /src/Abc.Zerio.Tests/Abc.Zerio.Tests.csproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio.Tests/Abc.Zerio.Tests.csproj -------------------------------------------------------------------------------- /src/Abc.Zerio.Tests/Core/CompletionPollingWaitStrategyFactoryTests.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio.Tests/Core/CompletionPollingWaitStrategyFactoryTests.cs -------------------------------------------------------------------------------- /src/Abc.Zerio.Tests/Core/CompletionTrackerTests.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio.Tests/Core/CompletionTrackerTests.cs -------------------------------------------------------------------------------- /src/Abc.Zerio.Tests/Core/MessageFramerTests.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio.Tests/Core/MessageFramerTests.cs -------------------------------------------------------------------------------- /src/Abc.Zerio.Tests/Core/ReceiveCompletionProcessorTests.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio.Tests/Core/ReceiveCompletionProcessorTests.cs -------------------------------------------------------------------------------- /src/Abc.Zerio.Tests/Core/TestCompletionQueue.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio.Tests/Core/TestCompletionQueue.cs -------------------------------------------------------------------------------- /src/Abc.Zerio.Tests/UnmanagedRioBufferTests.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio.Tests/UnmanagedRioBufferTests.cs -------------------------------------------------------------------------------- /src/Abc.Zerio.sln: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio.sln -------------------------------------------------------------------------------- /src/Abc.Zerio/Abc.Zerio.csproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Abc.Zerio.csproj -------------------------------------------------------------------------------- /src/Abc.Zerio/Core/AcquiredSendRequestEntry.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Core/AcquiredSendRequestEntry.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Core/BusySpinCompletionPollingWaitStrategy.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Core/BusySpinCompletionPollingWaitStrategy.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Core/ClientMessageReceivedDelegate.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Core/ClientMessageReceivedDelegate.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Core/CompletionPollingWaitStrategyFactory.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Core/CompletionPollingWaitStrategyFactory.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Core/CompletionPollingWaitStrategyType.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Core/CompletionPollingWaitStrategyType.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Core/CompletionQueues.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Core/CompletionQueues.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Core/CompletionTracker.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Core/CompletionTracker.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Core/HybridWaitStrategy.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Core/HybridWaitStrategy.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Core/ICompletionPollingWaitStrategy.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Core/ICompletionPollingWaitStrategy.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Core/IFeedClient.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Core/IFeedClient.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Core/IFeedServer.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Core/IFeedServer.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Core/IRioBufferSegmentDescriptorContainer.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Core/IRioBufferSegmentDescriptorContainer.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Core/IRioCompletionQueue.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Core/IRioCompletionQueue.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Core/ISession.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Core/ISession.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Core/ISessionManager.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Core/ISessionManager.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Core/InternalZerioConfiguration.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Core/InternalZerioConfiguration.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Core/MessageFramer.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Core/MessageFramer.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Core/ReceiveCompletionProcessor.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Core/ReceiveCompletionProcessor.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Core/RequestEngineWaitStrategyType.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Core/RequestEngineWaitStrategyType.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Core/RioBufferSegment.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Core/RioBufferSegment.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Core/RioCompletionQueue.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Core/RioCompletionQueue.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Core/RioRequestQueue.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Core/RioRequestQueue.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Core/SendCompletionProcessor.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Core/SendCompletionProcessor.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Core/SendRequestEntry.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Core/SendRequestEntry.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Core/SendRequestEntryType.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Core/SendRequestEntryType.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Core/SendRequestProcessingEngine.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Core/SendRequestProcessingEngine.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Core/SendRequestProcessor.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Core/SendRequestProcessor.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Core/SendingRequestConflater.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Core/SendingRequestConflater.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Core/ServerMessageReceivedDelegate.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Core/ServerMessageReceivedDelegate.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Core/Session.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Core/Session.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Core/SessionManager.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Core/SessionManager.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Core/SessionSendingBatch.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Core/SessionSendingBatch.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Core/SpinWaitCompletionPollingWaitStrategy.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Core/SpinWaitCompletionPollingWaitStrategy.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Core/UnmanagedRioBuffer.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Core/UnmanagedRioBuffer.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Interop/CompletionQueueHandle.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Interop/CompletionQueueHandle.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Interop/Kernel32.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Interop/Kernel32.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Interop/NativeTypes.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Interop/NativeTypes.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Interop/WinSock.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Interop/WinSock.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Properties/AssemblyInfo.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Tcp/TcpFeedClient.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Tcp/TcpFeedClient.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Tcp/TcpFeedServer.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Tcp/TcpFeedServer.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Tcp/TcpFrameReceiver.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Tcp/TcpFrameReceiver.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/Tcp/TcpFrameSender.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/Tcp/TcpFrameSender.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/ZerioClient.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/ZerioClient.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/ZerioClientConfiguration.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/ZerioClientConfiguration.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/ZerioConfiguration.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/ZerioConfiguration.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/ZerioServer.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/ZerioServer.cs -------------------------------------------------------------------------------- /src/Abc.Zerio/ZerioServerConfiguration.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Abc.Zerio/ZerioServerConfiguration.cs -------------------------------------------------------------------------------- /src/Directory.Build.props: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abc-Arbitrage/Zerio/HEAD/src/Directory.Build.props -------------------------------------------------------------------------------- /src/Directory.Build.targets: -------------------------------------------------------------------------------- 1 | 2 | --------------------------------------------------------------------------------