Skip to content

Commit c789f61

Browse files
authored
Merge pull request #20 from jacqueskang/issue-17-byte-array
support byte array in interface
2 parents 038932f + 3f2d710 commit c789f61

File tree

5 files changed

+22
-8
lines changed

5 files changed

+22
-8
lines changed

src/IpcServiceSample.ConsoleClient/Program.cs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using IpcServiceSample.ServiceContracts;
22
using JKang.IpcServiceFramework;
33
using System;
4+
using System.Text;
45
using System.Threading.Tasks;
56

67
namespace IpcServiceSample.ConsoleClient
@@ -20,13 +21,13 @@ private static async Task MainAsync(string[] args)
2021

2122
// test 1: call IPC service method with primitive types
2223
float result1 = await client.InvokeAsync(x => x.AddFloat(1.23f, 4.56f));
23-
Console.WriteLine($"sum of 2 floating number is: {result1}");
24+
Console.WriteLine($"[TEST 1] sum of 2 floating number is: {result1}");
2425

2526
// test 2: call IPC service method with complex types
2627
ComplexNumber result2 = await client.InvokeAsync(x => x.AddComplexNumber(
2728
new ComplexNumber(0.1f, 0.3f),
2829
new ComplexNumber(0.2f, 0.6f)));
29-
Console.WriteLine($"sum of 2 complexe number is: {result2.A}+{result2.B}i");
30+
Console.WriteLine($"[TEST 2] sum of 2 complexe number is: {result2.A}+{result2.B}i");
3031

3132
// test 3: call IPC service method with an array of complex types
3233
ComplexNumber result3 = await client.InvokeAsync(x => x.AddComplexNumbers(new[]
@@ -35,19 +36,25 @@ private static async Task MainAsync(string[] args)
3536
new ComplexNumber(0.2f, 0.1f),
3637
new ComplexNumber(0.3f, 0.5f),
3738
}));
38-
Console.WriteLine($"sum of 3 complexe number is: {result3.A}+{result3.B}i");
39+
Console.WriteLine($"[TEST 3] sum of 3 complexe number is: {result3.A}+{result3.B}i");
3940

4041
// test 4: call IPC service method without parameter or return
4142
await client.InvokeAsync(x => x.DoNothing());
42-
Console.WriteLine($"invoked DoNothing()");
43+
Console.WriteLine($"[TEST 4] invoked DoNothing()");
4344

4445
// test 5: call IPC service method with enum parameter
4546
string text = await client.InvokeAsync(x => x.ConvertText("hEllO woRd!", TextStyle.Upper));
46-
Console.WriteLine(text);
47+
Console.WriteLine($"[TEST 5] {text}");
4748

4849
// test 6: call IPC service method returning GUID
4950
Guid generatedId = await client.InvokeAsync(x => x.GenerateId());
50-
Console.WriteLine($"generated ID is: {generatedId}");
51+
Console.WriteLine($"[TEST 6] generated ID is: {generatedId}");
52+
53+
// test 7: call IPC service method with byte array
54+
byte[] input = Encoding.UTF8.GetBytes("Test");
55+
byte[] reversed = await client.InvokeAsync(x => x.ReverseBytes(input));
56+
Console.WriteLine($"[TEST 7] reversed bytes are: {Convert.ToBase64String(reversed)}");
57+
5158
}
5259
catch (Exception ex)
5360
{

src/IpcServiceSample.ConsoleServer/ComputingService.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections.Generic;
33
using System.Globalization;
4+
using System.Linq;
45
using IpcServiceSample.ServiceContracts;
56
using Microsoft.Extensions.Logging;
67

@@ -58,5 +59,10 @@ public Guid GenerateId()
5859
{
5960
return Guid.NewGuid();
6061
}
62+
63+
public byte[] ReverseBytes(byte[] input)
64+
{
65+
return input.Reverse().ToArray();
66+
}
6167
}
6268
}

src/IpcServiceSample.ServiceContracts/IComputingService.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ public interface IComputingService
1111
void DoNothing();
1212
string ConvertText(string text, TextStyle style);
1313
Guid GenerateId();
14+
byte[] ReverseBytes(byte[] input);
1415
}
1516

1617
public class ComplexNumber

src/JKang.IpcServiceFramework.Core/Services/DefaultIpcMessageSerializer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ public class DefaultIpcMessageSerializer : IIpcMessageSerializer
77
{
88
private static readonly JsonSerializerSettings _settings = new JsonSerializerSettings
99
{
10-
TypeNameHandling = TypeNameHandling.Objects
10+
TypeNameHandling = TypeNameHandling.None
1111
};
1212

1313
public IpcRequest DeserializeRequest(byte[] binary)

src/JKang.IpcServiceFramework.Server/IpcServiceHost.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ private IpcResponse GetReponse(IpcRequest request, IServiceScope scope)
9191
var @interface = Type.GetType(request.InterfaceName);
9292
if (@interface == null)
9393
{
94-
return IpcResponse.Fail($"Interface '{@interface}' not found.");
94+
return IpcResponse.Fail($"Interface '{request.InterfaceName}' not found.");
9595
}
9696

9797
object service = scope.ServiceProvider.GetService(@interface);

0 commit comments

Comments
 (0)