@@ -43,6 +43,13 @@ public interface ITransportConfig
4343 /// </summary>
4444 public sealed class StdioTransportConfig : ITransportConfig
4545 {
46+ private readonly HostLogger _logger ;
47+
48+ public StdioTransportConfig ( HostLogger logger )
49+ {
50+ _logger = logger ;
51+ }
52+
4653 public string EndpointDetails => "<stdio>" ;
4754
4855 public string SessionFileTransportName => "Stdio" ;
@@ -51,6 +58,7 @@ public sealed class StdioTransportConfig : ITransportConfig
5158
5259 public Task < ( Stream inStream , Stream outStream ) > ConnectStreamsAsync ( )
5360 {
61+ _logger . Log ( PsesLogLevel . Diagnostic , "Connecting stdio streams" ) ;
5462 return Task . FromResult ( ( Console . OpenStandardInput ( ) , Console . OpenStandardOutput ( ) ) ) ;
5563 }
5664 }
@@ -64,29 +72,32 @@ public sealed class DuplexNamedPipeTransportConfig : ITransportConfig
6472 /// Create a duplex named pipe transport config with an automatically generated pipe name.
6573 /// </summary>
6674 /// <returns>A new duplex named pipe transport configuration.</returns>
67- public static DuplexNamedPipeTransportConfig Create ( )
75+ public static DuplexNamedPipeTransportConfig Create ( HostLogger logger )
6876 {
69- return new DuplexNamedPipeTransportConfig ( NamedPipeUtils . GenerateValidNamedPipeName ( ) ) ;
77+ return new DuplexNamedPipeTransportConfig ( logger , NamedPipeUtils . GenerateValidNamedPipeName ( ) ) ;
7078 }
7179
7280 /// <summary>
7381 /// Create a duplex named pipe transport config with the given pipe name.
7482 /// </summary>
7583 /// <returns>A new duplex named pipe transport configuration.</returns>
76- public static DuplexNamedPipeTransportConfig Create ( string pipeName )
84+ public static DuplexNamedPipeTransportConfig Create ( HostLogger logger , string pipeName )
7785 {
7886 if ( pipeName == null )
7987 {
80- return DuplexNamedPipeTransportConfig . Create ( ) ;
88+ return DuplexNamedPipeTransportConfig . Create ( logger ) ;
8189 }
8290
83- return new DuplexNamedPipeTransportConfig ( pipeName ) ;
91+ return new DuplexNamedPipeTransportConfig ( logger , pipeName ) ;
8492 }
8593
94+ private readonly HostLogger _logger ;
95+
8696 private readonly string _pipeName ;
8797
88- private DuplexNamedPipeTransportConfig ( string pipeName )
98+ private DuplexNamedPipeTransportConfig ( HostLogger logger , string pipeName )
8999 {
100+ _logger = logger ;
90101 _pipeName = pipeName ;
91102 SessionFileEntries = new Dictionary < string , object > { { "PipeName" , NamedPipeUtils . GetNamedPipePath ( pipeName ) } } ;
92103 }
@@ -99,8 +110,11 @@ private DuplexNamedPipeTransportConfig(string pipeName)
99110
100111 public async Task < ( Stream inStream , Stream outStream ) > ConnectStreamsAsync ( )
101112 {
113+ _logger . Log ( PsesLogLevel . Diagnostic , "Creating named pipe" ) ;
102114 NamedPipeServerStream namedPipe = NamedPipeUtils . CreateNamedPipe ( _pipeName , PipeDirection . InOut ) ;
115+ _logger . Log ( PsesLogLevel . Diagnostic , "Waiting for named pipe connection" ) ;
103116 await namedPipe . WaitForConnectionAsync ( ) . ConfigureAwait ( false ) ;
117+ _logger . Log ( PsesLogLevel . Diagnostic , "Named pipe connected" ) ;
104118 return ( namedPipe , namedPipe ) ;
105119 }
106120 }
@@ -117,42 +131,44 @@ public sealed class SimplexNamedPipeTransportConfig : ITransportConfig
117131 /// Create a pair of simplex named pipes using generated names.
118132 /// </summary>
119133 /// <returns>A new simplex named pipe transport config.</returns>
120- public static SimplexNamedPipeTransportConfig Create ( )
134+ public static SimplexNamedPipeTransportConfig Create ( HostLogger logger )
121135 {
122- return SimplexNamedPipeTransportConfig . Create ( NamedPipeUtils . GenerateValidNamedPipeName ( new [ ] { InPipePrefix , OutPipePrefix } ) ) ;
136+ return SimplexNamedPipeTransportConfig . Create ( logger , NamedPipeUtils . GenerateValidNamedPipeName ( new [ ] { InPipePrefix , OutPipePrefix } ) ) ;
123137 }
124138
125139 /// <summary>
126140 /// Create a pair of simplex named pipes using the given name as a base.
127141 /// </summary>
128142 /// <returns>A new simplex named pipe transport config.</returns>
129- public static SimplexNamedPipeTransportConfig Create ( string pipeNameBase )
143+ public static SimplexNamedPipeTransportConfig Create ( HostLogger logger , string pipeNameBase )
130144 {
131145 if ( pipeNameBase == null )
132146 {
133- return SimplexNamedPipeTransportConfig . Create ( ) ;
147+ return SimplexNamedPipeTransportConfig . Create ( logger ) ;
134148 }
135149
136150 string inPipeName = $ "{ InPipePrefix } _{ pipeNameBase } ";
137151 string outPipeName = $ "{ OutPipePrefix } _{ pipeNameBase } ";
138152
139- return SimplexNamedPipeTransportConfig . Create ( inPipeName , outPipeName ) ;
153+ return SimplexNamedPipeTransportConfig . Create ( logger , inPipeName , outPipeName ) ;
140154 }
141155
142156 /// <summary>
143157 /// Create a pair of simplex named pipes using the given names.
144158 /// </summary>
145159 /// <returns>A new simplex named pipe transport config.</returns>
146- public static SimplexNamedPipeTransportConfig Create ( string inPipeName , string outPipeName )
160+ public static SimplexNamedPipeTransportConfig Create ( HostLogger logger , string inPipeName , string outPipeName )
147161 {
148- return new SimplexNamedPipeTransportConfig ( inPipeName , outPipeName ) ;
162+ return new SimplexNamedPipeTransportConfig ( logger , inPipeName , outPipeName ) ;
149163 }
150164
165+ private readonly HostLogger _logger ;
151166 private readonly string _inPipeName ;
152167 private readonly string _outPipeName ;
153168
154- private SimplexNamedPipeTransportConfig ( string inPipeName , string outPipeName )
169+ private SimplexNamedPipeTransportConfig ( HostLogger logger , string inPipeName , string outPipeName )
155170 {
171+ _logger = logger ;
156172 _inPipeName = inPipeName ;
157173 _outPipeName = outPipeName ;
158174
@@ -171,14 +187,18 @@ private SimplexNamedPipeTransportConfig(string inPipeName, string outPipeName)
171187
172188 public async Task < ( Stream inStream , Stream outStream ) > ConnectStreamsAsync ( )
173189 {
190+ _logger . Log ( PsesLogLevel . Diagnostic , "Starting in pipe connection" ) ;
174191 NamedPipeServerStream inPipe = NamedPipeUtils . CreateNamedPipe ( _inPipeName , PipeDirection . InOut ) ;
175192 Task inPipeConnected = inPipe . WaitForConnectionAsync ( ) ;
176193
194+ _logger . Log ( PsesLogLevel . Diagnostic , "Starting out pipe connection" ) ;
177195 NamedPipeServerStream outPipe = NamedPipeUtils . CreateNamedPipe ( _outPipeName , PipeDirection . Out ) ;
178196 Task outPipeConnected = outPipe . WaitForConnectionAsync ( ) ;
179197
198+ _logger . Log ( PsesLogLevel . Diagnostic , "Wating for pipe connections" ) ;
180199 await Task . WhenAll ( inPipeConnected , outPipeConnected ) . ConfigureAwait ( false ) ;
181200
201+ _logger . Log ( PsesLogLevel . Diagnostic , "Simplex named pipe transport connected" ) ;
182202 return ( inPipe , outPipe ) ;
183203 }
184204 }
0 commit comments