Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

3. Client Definitions #11

Closed
2 of 5 tasks
juanpedromoreno opened this issue Jun 20, 2017 · 1 comment
Closed
2 of 5 tasks

3. Client Definitions #11

juanpedromoreno opened this issue Jun 20, 2017 · 1 comment
Assignees
Milestone

Comments

@juanpedromoreno
Copy link
Member

juanpedromoreno commented Jun 20, 2017

Related to #9

  1. Clients should be generated outside of the protocol and server definitions module and based on the .protofiles generated by the Protocol definition in 1. Define Protocol Format Definitions #9
  2. A client has a direct correlation to a @service definition and its sole concern is communicating with the remote @service. A client may be generated as shown below:
@client[Greeter] trait GreeterClient

Combinators instrospected from the protocol definitions and made synthetic in the client trait via macro should expose operation as @free algebras with default implementations provided as implicit instances in the client's companion. These handlers as everything in Freestyle should be overridable and able to target any M[_] : AsyncContext capable monads. (Streaming capabilities TBD).
3. Clients should remain scala.js compatible (it'll be addressed in #21)
4. Clients synthetic handlers should impose implicit evidence of the remote endpoint configuration for the service.

@juanpedromoreno
Copy link
Member Author

The three remain items will be tackled as a part of #30

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants