Skip to content

Provide a consistent gRPC interface for client streaming requests with stdout/stderr #2450

Closed
@dankeboy36

Description

@dankeboy36

Describe the request

Please provide a consistent gRPC interface for client streaming requests with stdout/stderr.

Clients have to use two different styles of APIs:

  1. out_stream AND err_stream are optionally part of every response chunk:

    1. Compile (CompileResponse):
      message CompileResponse {
      // The output of the compilation process (stream)
      bytes out_stream = 1;
      // The error output of the compilation process (stream)
      bytes err_stream = 2;
    2. Upload using a programmer (UploadUsingProgrammerResponse):
      message UploadUsingProgrammerResponse {
      // The output of the upload process.
      bytes out_stream = 1;
      // The error output of the upload process.
      bytes err_stream = 2;
      }
    3. Burn bootload (BurnBootloaderResponse):
      message BurnBootloaderResponse {
      // The output of the burn bootloader process.
      bytes out_stream = 1;
      // The error output of the burn bootloader process.
      bytes err_stream = 2;
      }
  2. out_stream OR err_stream OR the result is part of the response message:

    1. Upload (UploadResponse):
      message UploadResponse {
      oneof message {
      // The output of the upload process.
      bytes out_stream = 1;
      // The error output of the upload process.
      bytes err_stream = 2;
      // The upload result
      UploadResult result = 3;
      }
      }

Providing the same dev experience for "similar" APIs would be highly appreciated downstream. Thank you!

Describe the current behavior

There is no consistent API for client streaming requests with stdout/stderr props.

Arduino CLI version

0.35.0-rc.7

Operating system

N/A

Operating system version

n/a

Additional context

No response

Issue checklist

  • I searched for previous requests in the issue tracker
  • I verified the feature was still missing when using the nightly build
  • My request contains all necessary details

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions