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

Stub Out Gateway and Language Server Akka Services #742

Closed
7 tasks done
iamrecursion opened this issue Dec 18, 2019 · 2 comments
Closed
7 tasks done

Stub Out Gateway and Language Server Akka Services #742

iamrecursion opened this issue Dec 18, 2019 · 2 comments
Assignees
Labels
-tooling Category: tooling p-high Should be completed in the next sprint

Comments

@iamrecursion
Copy link
Contributor

Summary

The design for the engine services specifies that our enso engine server is separated into two parts: the gateway and the language server. The gateway component is responsible for accepting incoming connections and managing the details of talking the language server protocol. The language server component wraps the runtime itself, and uses the APIs provided by the interpreter and the compiler to service the requests sent to the Enso Engine.

These services communicate using akka, and so the first port of call is to set them up as two akka services.

Value

We have a stub architecture for the services portion of the introspection and tooling work.

Specification

  • Implement a stub for the gateway akka service. This should be located in this repo in the engine/gateway folder, and should be added to build.sbt under the name gateway.
  • Rename the existing engine/language-server folder to engine/runner and update build.sbt appropriately.
  • Implement a stub for the language server akka service. This should be located in this repo in the engine/language-server folder, and should be added to build.sbt under the name language_server.
  • Make engine/runner depend on language-server and gateway.
  • Create an entry point in the engine/runner codebase called --lsp.
  • Make it so the above option spawns the gateway service and the language-server service, and continues running until the runner process is stopped. When the runner process is stopped, it should tear down the akka services properly.
  • Add tests for this very basic functionality.

Please note that it is very important to maintain the conceptual boundary between the gateway and language server services properly. Ensuring that we do this will mean that we can run the gateway service in a separate process in future should we need to.

Acceptance Criteria & Test Cases

  • The above tasks are complete.
  • The boundary between the akka services is well-defined.
@iamrecursion
Copy link
Contributor Author

What is the status of this @DmytroMitin?

@DmytroMitin
Copy link
Contributor

@iamrecursion iamrecursion transferred this issue from another repository Jun 23, 2020
@joenash joenash added -tooling Category: tooling Change: Non-Breaking p-high Should be completed in the next sprint labels Jun 23, 2020
@iamrecursion iamrecursion mentioned this issue Jun 24, 2020
26 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
-tooling Category: tooling p-high Should be completed in the next sprint
Projects
None yet
Development

No branches or pull requests

3 participants