@@ -266,15 +266,19 @@ func (s *ArduinoCoreServerImpl) LoadSketch(ctx context.Context, req *rpc.LoadSke
266266
267267// Compile FIXMEDOC
268268func (s * ArduinoCoreServerImpl ) Compile (req * rpc.CompileRequest , stream rpc.ArduinoCoreService_CompileServer ) error {
269+ outStream , outCtx := utils .FeedStreamTo (func (data []byte ) { stream .Send (& rpc.CompileResponse {OutStream : data }) })
270+ errStream , errCtx := utils .FeedStreamTo (func (data []byte ) { stream .Send (& rpc.CompileResponse {ErrStream : data }) })
269271 resp , err := compile .Compile (
270- stream .Context (), req ,
271- utils .FeedStreamTo (func (data []byte ) { stream .Send (& rpc.CompileResponse {OutStream : data }) }),
272- utils .FeedStreamTo (func (data []byte ) { stream .Send (& rpc.CompileResponse {ErrStream : data }) }),
272+ stream .Context (), req , outStream , errStream ,
273273 func (p * rpc.TaskProgress ) { stream .Send (& rpc.CompileResponse {Progress : p }) },
274274 false ) // Set debug to false
275+ outStream .Close ()
276+ errStream .Close ()
275277 if err != nil {
276278 return convertErrorToRPCStatus (err )
277279 }
280+ <- outCtx .Done ()
281+ <- errCtx .Done ()
278282 return stream .Send (resp )
279283}
280284
@@ -345,27 +349,31 @@ func (s *ArduinoCoreServerImpl) PlatformList(ctx context.Context, req *rpc.Platf
345349
346350// Upload FIXMEDOC
347351func (s * ArduinoCoreServerImpl ) Upload (req * rpc.UploadRequest , stream rpc.ArduinoCoreService_UploadServer ) error {
348- resp , err := upload . Upload (
349- stream .Context (), req ,
350- utils . FeedStreamTo ( func ( data [] byte ) { stream . Send ( & rpc. UploadResponse { OutStream : data }) }),
351- utils . FeedStreamTo ( func ( data [] byte ) { stream . Send ( & rpc. UploadResponse { ErrStream : data }) }),
352- )
352+ outStream , outCtx := utils . FeedStreamTo ( func ( data [] byte ) { stream . Send ( & rpc. UploadResponse { OutStream : data }) })
353+ errStream , errCtx := utils . FeedStreamTo ( func ( data [] byte ) { stream .Send ( & rpc. UploadResponse { ErrStream : data }) })
354+ resp , err := upload . Upload ( stream . Context (), req , outStream , errStream )
355+ outStream . Close ()
356+ errStream . Close ( )
353357 if err != nil {
354358 return convertErrorToRPCStatus (err )
355359 }
360+ <- outCtx .Done ()
361+ <- errCtx .Done ()
356362 return stream .Send (resp )
357363}
358364
359365// UploadUsingProgrammer FIXMEDOC
360366func (s * ArduinoCoreServerImpl ) UploadUsingProgrammer (req * rpc.UploadUsingProgrammerRequest , stream rpc.ArduinoCoreService_UploadUsingProgrammerServer ) error {
361- resp , err := upload . UsingProgrammer (
362- stream .Context (), req ,
363- utils . FeedStreamTo ( func ( data [] byte ) { stream . Send ( & rpc. UploadUsingProgrammerResponse { OutStream : data }) }),
364- utils . FeedStreamTo ( func ( data [] byte ) { stream . Send ( & rpc. UploadUsingProgrammerResponse { ErrStream : data }) }),
365- )
367+ outStream , outCtx := utils . FeedStreamTo ( func ( data [] byte ) { stream . Send ( & rpc. UploadUsingProgrammerResponse { OutStream : data }) })
368+ errStream , errCtx := utils . FeedStreamTo ( func ( data [] byte ) { stream .Send ( & rpc. UploadUsingProgrammerResponse { ErrStream : data }) })
369+ resp , err := upload . UsingProgrammer ( stream . Context (), req , outStream , errStream )
370+ outStream . Close ()
371+ errStream . Close ( )
366372 if err != nil {
367373 return convertErrorToRPCStatus (err )
368374 }
375+ <- outCtx .Done ()
376+ <- errCtx .Done ()
369377 return stream .Send (resp )
370378}
371379
@@ -377,14 +385,16 @@ func (s *ArduinoCoreServerImpl) SupportedUserFields(ctx context.Context, req *rp
377385
378386// BurnBootloader FIXMEDOC
379387func (s * ArduinoCoreServerImpl ) BurnBootloader (req * rpc.BurnBootloaderRequest , stream rpc.ArduinoCoreService_BurnBootloaderServer ) error {
380- resp , err := upload . BurnBootloader (
381- stream .Context (), req ,
382- utils . FeedStreamTo ( func ( data [] byte ) { stream . Send ( & rpc. BurnBootloaderResponse { OutStream : data }) }),
383- utils . FeedStreamTo ( func ( data [] byte ) { stream . Send ( & rpc. BurnBootloaderResponse { ErrStream : data }) }),
384- )
388+ outStream , outCtx := utils . FeedStreamTo ( func ( data [] byte ) { stream . Send ( & rpc. BurnBootloaderResponse { OutStream : data }) })
389+ errStream , errCtx := utils . FeedStreamTo ( func ( data [] byte ) { stream .Send ( & rpc. BurnBootloaderResponse { ErrStream : data }) })
390+ resp , err := upload . BurnBootloader ( stream . Context (), req , outStream , errStream )
391+ outStream . Close ()
392+ errStream . Close ( )
385393 if err != nil {
386394 return convertErrorToRPCStatus (err )
387395 }
396+ <- outCtx .Done ()
397+ <- errCtx .Done ()
388398 return stream .Send (resp )
389399}
390400
0 commit comments