@@ -51,32 +51,7 @@ private static async Task<int> Egress<TProvider, TOptions>(Action<IServiceCollec
5151 EgressArtifactResult result = new ( ) ;
5252 try
5353 {
54- StdInStream = Console . OpenStandardInput ( ) ;
55-
56- int dotnetMonitorPayloadProtocolVersion ;
57- long payloadLengthBuffer ;
58- byte [ ] payloadBuffer ;
59-
60- using ( BinaryReader reader = new BinaryReader ( StdInStream , Encoding . UTF8 , leaveOpen : true ) )
61- {
62- dotnetMonitorPayloadProtocolVersion = reader . ReadInt32 ( ) ;
63- if ( dotnetMonitorPayloadProtocolVersion != ExpectedPayloadProtocolVersion )
64- {
65- throw new EgressException ( string . Format ( CultureInfo . CurrentCulture , Strings . ErrorMessage_IncorrectPayloadVersion , dotnetMonitorPayloadProtocolVersion , ExpectedPayloadProtocolVersion ) ) ;
66- }
67-
68- payloadLengthBuffer = reader . ReadInt64 ( ) ;
69-
70- if ( payloadLengthBuffer < 0 )
71- {
72- throw new ArgumentOutOfRangeException ( nameof ( payloadLengthBuffer ) ) ;
73- }
74- }
75-
76- payloadBuffer = new byte [ payloadLengthBuffer ] ;
77- await ReadExactlyAsync ( payloadBuffer , token ) ;
78-
79- ExtensionEgressPayload configPayload = JsonSerializer . Deserialize < ExtensionEgressPayload > ( payloadBuffer ) ;
54+ ExtensionEgressPayload configPayload = await GetPayload ( token ) ;
8055
8156 ServiceCollection services = CreateServices < TOptions > ( configPayload , configureServices ) ;
8257
@@ -115,6 +90,38 @@ private static async Task<int> Egress<TProvider, TOptions>(Action<IServiceCollec
11590 return result . Succeeded ? 0 : 1 ;
11691 }
11792
93+ internal static async Task < ExtensionEgressPayload > GetPayload ( CancellationToken token )
94+ {
95+ StdInStream = Console . OpenStandardInput ( ) ;
96+
97+ int dotnetMonitorPayloadProtocolVersion ;
98+ long payloadLengthBuffer ;
99+ byte [ ] payloadBuffer ;
100+
101+ using ( BinaryReader reader = new BinaryReader ( StdInStream , Encoding . UTF8 , leaveOpen : true ) )
102+ {
103+ dotnetMonitorPayloadProtocolVersion = reader . ReadInt32 ( ) ;
104+ if ( dotnetMonitorPayloadProtocolVersion != ExpectedPayloadProtocolVersion )
105+ {
106+ throw new EgressException ( string . Format ( CultureInfo . CurrentCulture , Strings . ErrorMessage_IncorrectPayloadVersion , dotnetMonitorPayloadProtocolVersion , ExpectedPayloadProtocolVersion ) ) ;
107+ }
108+
109+ payloadLengthBuffer = reader . ReadInt64 ( ) ;
110+
111+ if ( payloadLengthBuffer < 0 )
112+ {
113+ throw new ArgumentOutOfRangeException ( nameof ( payloadLengthBuffer ) ) ;
114+ }
115+ }
116+
117+ payloadBuffer = new byte [ payloadLengthBuffer ] ;
118+ await ReadExactlyAsync ( payloadBuffer , token ) ;
119+
120+ ExtensionEgressPayload configPayload = JsonSerializer . Deserialize < ExtensionEgressPayload > ( payloadBuffer ) ;
121+
122+ return configPayload ;
123+ }
124+
118125 private static ServiceCollection CreateServices < TOptions > ( ExtensionEgressPayload payload , Action < IServiceCollection > configureServices )
119126 where TOptions : class , new ( )
120127 {
@@ -161,7 +168,7 @@ private static async Task GetStream(Stream outputStream, CancellationToken cance
161168 await StdInStream . CopyToAsync ( outputStream , DefaultBufferSize , cancellationToken ) ;
162169 }
163170
164- private static async Task ReadExactlyAsync ( Memory < byte > buffer , CancellationToken token )
171+ internal static async Task ReadExactlyAsync ( Memory < byte > buffer , CancellationToken token )
165172 {
166173#if NET7_0_OR_GREATER
167174 await StdInStream . ReadExactlyAsync ( buffer , token ) ;
0 commit comments