Skip to content

Commit dfae274

Browse files
authored
Merge pull request #406 from Cysharp/hotfix/GenerateRawStreamingResult
Fix accessibility of MarshallingAsyncStreamReaderWriter
2 parents 94379b7 + 69feeb2 commit dfae274

5 files changed

Lines changed: 79 additions & 15 deletions

File tree

src/MagicOnion.Client.Unity/Assets/Scripts/MagicOnion/MagicOnion.Client/MarshallingAsyncStreamReaderWriter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
namespace MagicOnion
1111
{
12-
internal class MarshallingAsyncStreamReader<T> : IAsyncStreamReader<T>, IDisposable
12+
public class MarshallingAsyncStreamReader<T> : IAsyncStreamReader<T>, IDisposable
1313
{
1414
readonly IAsyncStreamReader<byte[]> inner;
1515
readonly MessagePackSerializerOptions options;
@@ -41,7 +41,7 @@ public void Dispose()
4141
}
4242
}
4343

44-
internal class MarshallingClientStreamWriter<T> : IClientStreamWriter<T>
44+
public class MarshallingClientStreamWriter<T> : IClientStreamWriter<T>
4545
{
4646
readonly IClientStreamWriter<byte[]> inner;
4747
readonly MessagePackSerializerOptions options;

src/MagicOnion.Client/MarshallingAsyncStreamReaderWriter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
namespace MagicOnion
1111
{
12-
internal class MarshallingAsyncStreamReader<T> : IAsyncStreamReader<T>, IDisposable
12+
public class MarshallingAsyncStreamReader<T> : IAsyncStreamReader<T>, IDisposable
1313
{
1414
readonly IAsyncStreamReader<byte[]> inner;
1515
readonly MessagePackSerializerOptions options;
@@ -41,7 +41,7 @@ public void Dispose()
4141
}
4242
}
4343

44-
internal class MarshallingClientStreamWriter<T> : IClientStreamWriter<T>
44+
public class MarshallingClientStreamWriter<T> : IClientStreamWriter<T>
4545
{
4646
readonly IClientStreamWriter<byte[]> inner;
4747
readonly MessagePackSerializerOptions options;
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
using System.IO;
2+
using System.Linq;
3+
using System.Threading;
4+
using System.Threading.Tasks;
5+
using FluentAssertions;
6+
using Microsoft.CodeAnalysis;
7+
using Xunit;
8+
using Xunit.Abstractions;
9+
10+
namespace MagicOnion.Generator.Tests
11+
{
12+
public class GenerateRawStreamingTest
13+
{
14+
private readonly ITestOutputHelper _testOutputHelper;
15+
16+
public GenerateRawStreamingTest(ITestOutputHelper testOutputHelper)
17+
{
18+
_testOutputHelper = testOutputHelper;
19+
}
20+
21+
[Fact]
22+
public async Task StreamingResult()
23+
{
24+
using var tempWorkspace = TemporaryProjectWorkarea.Create();
25+
tempWorkspace.AddFileToProject("IMyService.cs", @"
26+
using System;
27+
using MessagePack;
28+
using MagicOnion;
29+
using System.Threading.Tasks;
30+
31+
namespace TempProject
32+
{
33+
public interface IMyService : IService<IMyService>
34+
{
35+
Task<ClientStreamingResult<string, string>> ClientStreamingAsync();
36+
Task<ServerStreamingResult<string>> ServerStreamingAsync();
37+
Task<DuplexStreamingResult<string, string>> DuplexStreamingAsync();
38+
}
39+
}
40+
");
41+
42+
var compiler = new MagicOnionCompiler(_testOutputHelper.WriteLine, CancellationToken.None);
43+
await compiler.GenerateFileAsync(
44+
tempWorkspace.CsProjectPath,
45+
Path.Combine(tempWorkspace.OutputDirectory, "Generated.cs"),
46+
true,
47+
"TempProject.Generated",
48+
"",
49+
"MessagePack.Formatters"
50+
);
51+
52+
var compilation = tempWorkspace.GetOutputCompilation().Compilation;
53+
compilation.GetDiagnostics().Where(x => x.Severity == DiagnosticSeverity.Error).Should().BeEmpty();
54+
}
55+
}
56+
}

tests/MagicOnion.Generator.Tests/MagicOnion.Generator.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
</ItemGroup>
1717

1818
<ItemGroup>
19+
<ProjectReference Include="..\..\src\MagicOnion.Client\MagicOnion.Client.csproj" />
1920
<ProjectReference Include="..\..\src\MagicOnion.GeneratorCore\MagicOnion.GeneratorCore.csproj" />
2021
</ItemGroup>
2122

tests/MagicOnion.Generator.Tests/TemporaryProjectWorkarea.cs

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -73,17 +73,24 @@ public OutputCompilation GetOutputCompilation()
7373
Directory.EnumerateFiles(ProjectDirectory, "*.cs", SearchOption.AllDirectories)
7474
.Concat(Directory.EnumerateFiles(OutputDirectory, "*.cs", SearchOption.AllDirectories))
7575
.Select(x => CSharpSyntaxTree.ParseText(File.ReadAllText(x), CSharpParseOptions.Default, x)))
76-
.AddReferences(MetadataReference.CreateFromFile(Path.Combine(refAsmDir, "System.Private.CoreLib.dll")))
77-
.AddReferences(MetadataReference.CreateFromFile(Path.Combine(refAsmDir, "System.Runtime.Extensions.dll")))
78-
.AddReferences(MetadataReference.CreateFromFile(Path.Combine(refAsmDir, "System.Collections.dll")))
79-
.AddReferences(MetadataReference.CreateFromFile(Path.Combine(refAsmDir, "System.Linq.dll")))
80-
.AddReferences(MetadataReference.CreateFromFile(Path.Combine(refAsmDir, "System.Console.dll")))
81-
.AddReferences(MetadataReference.CreateFromFile(Path.Combine(refAsmDir, "System.Runtime.dll")))
82-
.AddReferences(MetadataReference.CreateFromFile(Path.Combine(refAsmDir, "System.Memory.dll")))
83-
.AddReferences(MetadataReference.CreateFromFile(Path.Combine(refAsmDir, "netstandard.dll")))
84-
.AddReferences(MetadataReference.CreateFromFile(typeof(object).Assembly.Location))
85-
//.AddReferences(MetadataReference.CreateFromFile(typeof(MessagePack.MessagePackObjectAttribute).Assembly.Location))
86-
//.AddReferences(MetadataReference.CreateFromFile(typeof(IMessagePackFormatter<>).Assembly.Location))
76+
.AddReferences(
77+
MetadataReference.CreateFromFile(Path.Combine(refAsmDir, "System.Private.CoreLib.dll")),
78+
MetadataReference.CreateFromFile(Path.Combine(refAsmDir, "System.Runtime.Extensions.dll")),
79+
MetadataReference.CreateFromFile(Path.Combine(refAsmDir, "System.Collections.dll")),
80+
MetadataReference.CreateFromFile(Path.Combine(refAsmDir, "System.Linq.dll")),
81+
MetadataReference.CreateFromFile(Path.Combine(refAsmDir, "System.Console.dll")),
82+
MetadataReference.CreateFromFile(Path.Combine(refAsmDir, "System.Runtime.dll")),
83+
MetadataReference.CreateFromFile(Path.Combine(refAsmDir, "System.Memory.dll")),
84+
MetadataReference.CreateFromFile(Path.Combine(refAsmDir, "netstandard.dll")),
85+
MetadataReference.CreateFromFile(typeof(object).Assembly.Location),
86+
87+
MetadataReference.CreateFromFile(typeof(Grpc.Core.AsyncUnaryCall<>).Assembly.Location), // Grpc.Core.Api
88+
MetadataReference.CreateFromFile(typeof(MagicOnion.Client.MagicOnionClient).Assembly.Location), // MagicOnion.Client
89+
MetadataReference.CreateFromFile(typeof(MagicOnion.MagicOnionMarshallers).Assembly.Location), // MagicOnion.Shared
90+
MetadataReference.CreateFromFile(typeof(MagicOnion.IService<>).Assembly.Location), // MagicOnion.Abstractions
91+
MetadataReference.CreateFromFile(typeof(MessagePack.IFormatterResolver).Assembly.Location), // MessagePack
92+
MetadataReference.CreateFromFile(typeof(MessagePack.MessagePackObjectAttribute).Assembly.Location) // MessagePack.Annotations
93+
)
8794
.WithOptions(new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary));
8895

8996
return new OutputCompilation(compilation);

0 commit comments

Comments
 (0)