├── .github ├── FUNDING.yml └── workflows │ └── build.yml ├── .gitignore ├── .lutignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── Samples ├── Directory.Build.props ├── TcpChat │ ├── ChatApi │ │ ├── ChatApi.csproj │ │ ├── ChatConnection.cs │ │ ├── IPipelineSocket.cs │ │ ├── Internals │ │ │ └── MessageSerialization.cs │ │ ├── Messages │ │ │ ├── AckResponseMessage.cs │ │ │ ├── BroadcastMessage.cs │ │ │ ├── ChatMessage.cs │ │ │ ├── IMessage.cs │ │ │ ├── KeepaliveMessage.cs │ │ │ ├── NakResponseMessage.cs │ │ │ └── SetNicknameRequestMessage.cs │ │ ├── PipelineSocket.cs │ │ └── SocketEx.cs │ ├── ChatClient │ │ ├── App.xaml │ │ ├── App.xaml.cs │ │ ├── AssemblyInfo.cs │ │ ├── ChatClient.csproj │ │ ├── MainWindow.xaml │ │ └── MainWindow.xaml.cs │ ├── ChatServer │ │ ├── ChatServer.csproj │ │ ├── ClientChatConnection.cs │ │ ├── ConnectionCollection.cs │ │ ├── ConsoleEx.cs │ │ └── Program.cs │ └── README.md └── TcpEcho │ ├── EchoClient │ ├── EchoClient.csproj │ └── Program.cs │ ├── EchoServer │ ├── EchoServer.csproj │ └── Program.cs │ └── Helpers │ ├── ConsoleEx.cs │ ├── GracefulCloseSocket.cs │ ├── Helpers.csproj │ └── NativeMethods.txt ├── StructuredConcurrency.lutconfig ├── StructuredConcurrency.sln ├── TODO.md ├── src ├── Directory.Build.props ├── Directory.Build.targets ├── Nito.StructuredConcurrency │ ├── Advanced │ │ ├── TaskGroupCore.cs │ │ └── TaskGroupFactory.cs │ ├── Internals │ │ ├── DelegateExtensions.cs │ │ ├── DisposeUtility.cs │ │ ├── DynamicTaskWhenAll.cs │ │ ├── InterlockedEx.cs │ │ ├── RaceResult.cs │ │ └── TaskGroupExtensions.cs │ ├── Nito.StructuredConcurrency.csproj │ ├── RaceTaskGroup.cs │ ├── RunTaskGroup.cs │ ├── TaskExtensions.cs │ └── TaskGroup.cs ├── icon.png └── project.props └── tests ├── Directory.Build.props └── UnitTests ├── HappyEyeballs.cs ├── TaskGroupUnitTests.cs ├── UnitTests.csproj └── Usage.cs /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: [StephenCleary] 2 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/.github/workflows/build.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/.gitignore -------------------------------------------------------------------------------- /.lutignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/.lutignore -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/CHANGELOG.md -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/README.md -------------------------------------------------------------------------------- /Samples/Directory.Build.props: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/Samples/Directory.Build.props -------------------------------------------------------------------------------- /Samples/TcpChat/ChatApi/ChatApi.csproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/Samples/TcpChat/ChatApi/ChatApi.csproj -------------------------------------------------------------------------------- /Samples/TcpChat/ChatApi/ChatConnection.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/Samples/TcpChat/ChatApi/ChatConnection.cs -------------------------------------------------------------------------------- /Samples/TcpChat/ChatApi/IPipelineSocket.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/Samples/TcpChat/ChatApi/IPipelineSocket.cs -------------------------------------------------------------------------------- /Samples/TcpChat/ChatApi/Internals/MessageSerialization.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/Samples/TcpChat/ChatApi/Internals/MessageSerialization.cs -------------------------------------------------------------------------------- /Samples/TcpChat/ChatApi/Messages/AckResponseMessage.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/Samples/TcpChat/ChatApi/Messages/AckResponseMessage.cs -------------------------------------------------------------------------------- /Samples/TcpChat/ChatApi/Messages/BroadcastMessage.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/Samples/TcpChat/ChatApi/Messages/BroadcastMessage.cs -------------------------------------------------------------------------------- /Samples/TcpChat/ChatApi/Messages/ChatMessage.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/Samples/TcpChat/ChatApi/Messages/ChatMessage.cs -------------------------------------------------------------------------------- /Samples/TcpChat/ChatApi/Messages/IMessage.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/Samples/TcpChat/ChatApi/Messages/IMessage.cs -------------------------------------------------------------------------------- /Samples/TcpChat/ChatApi/Messages/KeepaliveMessage.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/Samples/TcpChat/ChatApi/Messages/KeepaliveMessage.cs -------------------------------------------------------------------------------- /Samples/TcpChat/ChatApi/Messages/NakResponseMessage.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/Samples/TcpChat/ChatApi/Messages/NakResponseMessage.cs -------------------------------------------------------------------------------- /Samples/TcpChat/ChatApi/Messages/SetNicknameRequestMessage.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/Samples/TcpChat/ChatApi/Messages/SetNicknameRequestMessage.cs -------------------------------------------------------------------------------- /Samples/TcpChat/ChatApi/PipelineSocket.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/Samples/TcpChat/ChatApi/PipelineSocket.cs -------------------------------------------------------------------------------- /Samples/TcpChat/ChatApi/SocketEx.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/Samples/TcpChat/ChatApi/SocketEx.cs -------------------------------------------------------------------------------- /Samples/TcpChat/ChatClient/App.xaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/Samples/TcpChat/ChatClient/App.xaml -------------------------------------------------------------------------------- /Samples/TcpChat/ChatClient/App.xaml.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/Samples/TcpChat/ChatClient/App.xaml.cs -------------------------------------------------------------------------------- /Samples/TcpChat/ChatClient/AssemblyInfo.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/Samples/TcpChat/ChatClient/AssemblyInfo.cs -------------------------------------------------------------------------------- /Samples/TcpChat/ChatClient/ChatClient.csproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/Samples/TcpChat/ChatClient/ChatClient.csproj -------------------------------------------------------------------------------- /Samples/TcpChat/ChatClient/MainWindow.xaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/Samples/TcpChat/ChatClient/MainWindow.xaml -------------------------------------------------------------------------------- /Samples/TcpChat/ChatClient/MainWindow.xaml.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/Samples/TcpChat/ChatClient/MainWindow.xaml.cs -------------------------------------------------------------------------------- /Samples/TcpChat/ChatServer/ChatServer.csproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/Samples/TcpChat/ChatServer/ChatServer.csproj -------------------------------------------------------------------------------- /Samples/TcpChat/ChatServer/ClientChatConnection.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/Samples/TcpChat/ChatServer/ClientChatConnection.cs -------------------------------------------------------------------------------- /Samples/TcpChat/ChatServer/ConnectionCollection.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/Samples/TcpChat/ChatServer/ConnectionCollection.cs -------------------------------------------------------------------------------- /Samples/TcpChat/ChatServer/ConsoleEx.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/Samples/TcpChat/ChatServer/ConsoleEx.cs -------------------------------------------------------------------------------- /Samples/TcpChat/ChatServer/Program.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/Samples/TcpChat/ChatServer/Program.cs -------------------------------------------------------------------------------- /Samples/TcpChat/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/Samples/TcpChat/README.md -------------------------------------------------------------------------------- /Samples/TcpEcho/EchoClient/EchoClient.csproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/Samples/TcpEcho/EchoClient/EchoClient.csproj -------------------------------------------------------------------------------- /Samples/TcpEcho/EchoClient/Program.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/Samples/TcpEcho/EchoClient/Program.cs -------------------------------------------------------------------------------- /Samples/TcpEcho/EchoServer/EchoServer.csproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/Samples/TcpEcho/EchoServer/EchoServer.csproj -------------------------------------------------------------------------------- /Samples/TcpEcho/EchoServer/Program.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/Samples/TcpEcho/EchoServer/Program.cs -------------------------------------------------------------------------------- /Samples/TcpEcho/Helpers/ConsoleEx.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/Samples/TcpEcho/Helpers/ConsoleEx.cs -------------------------------------------------------------------------------- /Samples/TcpEcho/Helpers/GracefulCloseSocket.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/Samples/TcpEcho/Helpers/GracefulCloseSocket.cs -------------------------------------------------------------------------------- /Samples/TcpEcho/Helpers/Helpers.csproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/Samples/TcpEcho/Helpers/Helpers.csproj -------------------------------------------------------------------------------- /Samples/TcpEcho/Helpers/NativeMethods.txt: -------------------------------------------------------------------------------- 1 | CancelIoEx 2 | GetStdHandle 3 | STD_HANDLE -------------------------------------------------------------------------------- /StructuredConcurrency.lutconfig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/StructuredConcurrency.lutconfig -------------------------------------------------------------------------------- /StructuredConcurrency.sln: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/StructuredConcurrency.sln -------------------------------------------------------------------------------- /TODO.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/TODO.md -------------------------------------------------------------------------------- /src/Directory.Build.props: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/src/Directory.Build.props -------------------------------------------------------------------------------- /src/Directory.Build.targets: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/src/Directory.Build.targets -------------------------------------------------------------------------------- /src/Nito.StructuredConcurrency/Advanced/TaskGroupCore.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/src/Nito.StructuredConcurrency/Advanced/TaskGroupCore.cs -------------------------------------------------------------------------------- /src/Nito.StructuredConcurrency/Advanced/TaskGroupFactory.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/src/Nito.StructuredConcurrency/Advanced/TaskGroupFactory.cs -------------------------------------------------------------------------------- /src/Nito.StructuredConcurrency/Internals/DelegateExtensions.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/src/Nito.StructuredConcurrency/Internals/DelegateExtensions.cs -------------------------------------------------------------------------------- /src/Nito.StructuredConcurrency/Internals/DisposeUtility.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/src/Nito.StructuredConcurrency/Internals/DisposeUtility.cs -------------------------------------------------------------------------------- /src/Nito.StructuredConcurrency/Internals/DynamicTaskWhenAll.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/src/Nito.StructuredConcurrency/Internals/DynamicTaskWhenAll.cs -------------------------------------------------------------------------------- /src/Nito.StructuredConcurrency/Internals/InterlockedEx.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/src/Nito.StructuredConcurrency/Internals/InterlockedEx.cs -------------------------------------------------------------------------------- /src/Nito.StructuredConcurrency/Internals/RaceResult.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/src/Nito.StructuredConcurrency/Internals/RaceResult.cs -------------------------------------------------------------------------------- /src/Nito.StructuredConcurrency/Internals/TaskGroupExtensions.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/src/Nito.StructuredConcurrency/Internals/TaskGroupExtensions.cs -------------------------------------------------------------------------------- /src/Nito.StructuredConcurrency/Nito.StructuredConcurrency.csproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/src/Nito.StructuredConcurrency/Nito.StructuredConcurrency.csproj -------------------------------------------------------------------------------- /src/Nito.StructuredConcurrency/RaceTaskGroup.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/src/Nito.StructuredConcurrency/RaceTaskGroup.cs -------------------------------------------------------------------------------- /src/Nito.StructuredConcurrency/RunTaskGroup.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/src/Nito.StructuredConcurrency/RunTaskGroup.cs -------------------------------------------------------------------------------- /src/Nito.StructuredConcurrency/TaskExtensions.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/src/Nito.StructuredConcurrency/TaskExtensions.cs -------------------------------------------------------------------------------- /src/Nito.StructuredConcurrency/TaskGroup.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/src/Nito.StructuredConcurrency/TaskGroup.cs -------------------------------------------------------------------------------- /src/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/src/icon.png -------------------------------------------------------------------------------- /src/project.props: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/src/project.props -------------------------------------------------------------------------------- /tests/Directory.Build.props: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/tests/Directory.Build.props -------------------------------------------------------------------------------- /tests/UnitTests/HappyEyeballs.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/tests/UnitTests/HappyEyeballs.cs -------------------------------------------------------------------------------- /tests/UnitTests/TaskGroupUnitTests.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/tests/UnitTests/TaskGroupUnitTests.cs -------------------------------------------------------------------------------- /tests/UnitTests/UnitTests.csproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/tests/UnitTests/UnitTests.csproj -------------------------------------------------------------------------------- /tests/UnitTests/Usage.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenCleary/StructuredConcurrency/HEAD/tests/UnitTests/Usage.cs --------------------------------------------------------------------------------