Skip to content

Transport Agnostic RPC #249

@CMCDragonkai

Description

@CMCDragonkai

We have reviewed the gRPC API, and worked with it extensively. It's time to work out a better RPC layer for PK. There are several problems to to consider here:

We have 2 main proto files:

  1. proto/schemas/Client.proto
  2. proto/schemas/Agent.proto

And a Test.proto as well, this will need to be used to generate the marshaling code.

Additional context

Tasks

  1. - Review the proto3 guide, naming standard with reference to the proto files, look for ways to abstract or clean up the data
    • Creating .proto definition subdomains. #279
    • - Version the Client.proto and Agent.proto with version names and test out multiple-version services, and find out what the client does when the version wanted is not available
    • - Test out grpc reflection for versioning if necessary
    • - Update all the primitive types, and any usage of 64 bit int should have the string hint
    • - Add some benchmarks to the grpc, and check if MAX_CONCURRENT_CONNECTIONS is used
    • - Clean up types Wrapper methods in GRPCClientClient to get parameter types of the wrapped GRPC call #200 or gRPC abstractions based on new grpc libraries
    • - Consider how to shutdown the grpc server and terminate all client connections as well
  2. - Figure out CQRS, pagination and streaming
    • - Clean up js-pagination client and server side utilities
    • - Pagination on unary calls, and streaming calls that can be initialised with a pagination parameters (which would enable some sort of CQRS and event sourcing concepts)
  3. - Review in reference to authentication and sessions
  4. - Check the HTTP API and web gateway compatibility
  5. - Deal with the fact that the new grpc-js 1.4.1 version has some incompatibility: TypeError: http2Server.on is not a function.

Metadata

Metadata

Assignees

Labels

designRequires designepicBig issue with multiple subissuesr&d:polykey:core activity 1Secret Vault Sharing and Secret History Managementr&d:polykey:core activity 3Peer to Peer Federated Hierarchy

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions