-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Made things compile and added more tests
- Loading branch information
Stephan Møller
committed
Mar 14, 2024
1 parent
73033d2
commit afb1d19
Showing
8 changed files
with
200 additions
and
154 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
27 changes: 14 additions & 13 deletions
27
examples/Examples.SimpleDemos/Examples.SimpleDemos.csproj
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,19 +1,20 @@ | ||
<Project Sdk="Microsoft.NET.Sdk"> | ||
|
||
<PropertyGroup> | ||
<OutputType>Exe</OutputType> | ||
<TargetFramework>net6.0</TargetFramework> | ||
<ImplicitUsings>enable</ImplicitUsings> | ||
<Nullable>enable</Nullable> | ||
</PropertyGroup> | ||
<PropertyGroup> | ||
<OutputType>Exe</OutputType> | ||
<TargetFramework>net6.0</TargetFramework> | ||
<ImplicitUsings>enable</ImplicitUsings> | ||
<Nullable>enable</Nullable> | ||
</PropertyGroup> | ||
|
||
<ItemGroup> | ||
<PackageReference Include="Dapper" Version="2.0.123" /> | ||
<PackageReference Include="System.Data.SqlClient" Version="4.8.6" /> | ||
</ItemGroup> | ||
<ItemGroup> | ||
<PackageReference Include="Dapper" Version="2.0.123"/> | ||
<PackageReference Include="System.Data.SqlClient" Version="4.8.6"/> | ||
<PackageReference Include="System.Linq.Async" Version="6.0.1"/> | ||
</ItemGroup> | ||
|
||
<ItemGroup> | ||
<ProjectReference Include="..\..\src\Rowbot\Rowbot.csproj" /> | ||
</ItemGroup> | ||
<ItemGroup> | ||
<ProjectReference Include="..\..\src\Rowbot\Rowbot.csproj"/> | ||
</ItemGroup> | ||
|
||
</Project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
using System; | ||
using System.Collections.Generic; | ||
using System.Threading.Tasks; | ||
|
||
namespace Rowbot.Execution | ||
{ | ||
public sealed class RowbotAsyncEnumerableExecutor<TElement> : IDisposable | ||
{ | ||
private readonly AsyncSourceGuards _source; | ||
private readonly AsyncEnumerableTargetGuards<TElement> _target; | ||
|
||
public RowbotAsyncEnumerableExecutor(IAsyncRowSource source, IAsyncEnumerableRowTarget<TElement> target) | ||
{ | ||
_source = new AsyncSourceGuards(source); | ||
_target = new AsyncEnumerableTargetGuards<TElement>(target); | ||
} | ||
|
||
public Task ExecuteAsync(Func<IAsyncEnumerable<TElement>, Task> consumer) | ||
{ | ||
return consumer(ExecuteInternal()); | ||
} | ||
|
||
private async IAsyncEnumerable<TElement> ExecuteInternal() | ||
{ | ||
// Columns | ||
var columnNames = await _source.InitAndGetColumnsAsync(); | ||
await _target.InitAsync(columns: columnNames); | ||
|
||
// Rows | ||
var valuesBuffer = new object[columnNames.Length]; | ||
while (await _source.ReadRowAsync(valuesBuffer)) | ||
{ | ||
yield return await _target.WriteRowAsync(valuesBuffer); | ||
} | ||
|
||
await _source.CompleteAsync(); | ||
await _target.CompleteAsync(); | ||
|
||
Dispose(); | ||
} | ||
|
||
public void Dispose() | ||
{ | ||
#pragma warning disable S2486 // Generic exceptions should not be ignored | ||
#pragma warning disable S108 // Nested blocks of code should not be left empty | ||
try | ||
{ | ||
_source.Dispose(); | ||
} | ||
catch { } | ||
|
||
try | ||
{ | ||
_target.Dispose(); | ||
} | ||
catch { } | ||
#pragma warning restore S108 // Nested blocks of code should not be left empty | ||
#pragma warning restore S2486 // Generic exceptions should not be ignored | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.