Skip to content

Commit b370daf

Browse files
authored
Merge pull request #14 from jacqueskang/feature-possible-to-leave-stream-open
possible to leave stream open after IpcReader/IpcWriter is disposed
2 parents 145e437 + 3b7879d commit b370daf

File tree

4 files changed

+17
-11
lines changed

4 files changed

+17
-11
lines changed

src/JKang.IpcServiceFramework.Client/IpcServiceClient.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,8 @@ private static IpcRequest GetRequest(Expression exp, MyInterceptor interceptor)
9393
private async Task<IpcResponse> GetResponseAsync(IpcRequest request)
9494
{
9595
using (var client = new NamedPipeClientStream(".", _pipeName, PipeDirection.InOut, PipeOptions.None))
96-
using (var writer = new IpcWriter(client, _serializer))
97-
using (var reader = new IpcReader(client, _serializer))
96+
using (var writer = new IpcWriter(client, _serializer, leaveOpen: true))
97+
using (var reader = new IpcReader(client, _serializer, leaveOpen: true))
9898
{
9999
await client.ConnectAsync();
100100

src/JKang.IpcServiceFramework.Core/IO/IpcReader.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.IO;
3+
using System.Text;
34

45
namespace JKang.IpcServiceFramework.IO
56
{
@@ -9,8 +10,12 @@ public class IpcReader : IDisposable
910
private readonly IIpcMessageSerializer _serializer;
1011

1112
public IpcReader(Stream stream, IIpcMessageSerializer serializer)
13+
: this(stream, serializer, leaveOpen: false)
14+
{ }
15+
16+
public IpcReader(Stream stream, IIpcMessageSerializer serializer, bool leaveOpen)
1217
{
13-
_reader = new BinaryReader(stream);
18+
_reader = new BinaryReader(stream, Encoding.UTF8, leaveOpen);
1419
_serializer = serializer;
1520
}
1621

src/JKang.IpcServiceFramework.Core/IO/IpcWriter.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
11
using System;
22
using System.IO;
3+
using System.Text;
34

45
namespace JKang.IpcServiceFramework.IO
56
{
6-
public class IpcWriter: IDisposable
7+
public class IpcWriter : IDisposable
78
{
89
private readonly BinaryWriter _writer;
910
private readonly IIpcMessageSerializer _serializer;
1011

1112
public IpcWriter(Stream stream, IIpcMessageSerializer serializer)
13+
: this(stream, serializer, leaveOpen: false)
14+
{ }
15+
16+
public IpcWriter(Stream stream, IIpcMessageSerializer serializer, bool leaveOpen)
1217
{
13-
_writer = new BinaryWriter(stream);
18+
_writer = new BinaryWriter(stream, Encoding.UTF8, leaveOpen);
1419
_serializer = serializer;
1520
}
1621

src/JKang.IpcServiceFramework.Server/IpcServiceHost.cs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ public void Run()
5757
private void StartServerThread(object obj)
5858
{
5959
using (var server = new NamedPipeServerStream(_pipeName, PipeDirection.InOut, _options.ThreadCount))
60-
using (var writer = new IpcWriter(server, _serializer))
61-
using (var reader = new IpcReader(server, _serializer))
60+
using (var writer = new IpcWriter(server, _serializer, leaveOpen: true))
61+
using (var reader = new IpcReader(server, _serializer, leaveOpen: true))
6262
{
6363
server.WaitForConnection();
6464

@@ -83,10 +83,6 @@ private void StartServerThread(object obj)
8383
{
8484
_logger?.LogError(ex, ex.Message);
8585
}
86-
finally
87-
{
88-
server.Close();
89-
}
9086
}
9187
}
9288

0 commit comments

Comments
 (0)