Skip to content
This repository was archived by the owner on Sep 21, 2019. It is now read-only.
This repository was archived by the owner on Sep 21, 2019. It is now read-only.

Make protocol version selection automatic based on handshake #355

@ches

Description

@ches

We have a g:ensime_server_v2 setting for setting up the client to talk to a v2 ENSIME server (undocumented, mostly of interest to developers until v2 becomes the default installation). As discussed in #354, this setting ought to go away now that build tool plugins (at least sbt-ensime as of now) can do the work of installing ENSIME and can control the version to install. Needing to also set this client setting and keep two settings consistent then is not ideal.

What seems like the best approach is to set up the client for the appropriate protocol version automatically based on what is reported to us by the running server in the ConnectionInfo message sent just after connection (n.b. this handshake may eventually change somewhat in the server, see #354 for some references).

This is going to mean some change to the current implementation where an EnsimeClient is created with a mixin for the protocol version—either an initial connection is made before the client is instantiated and then the connection is passed to the client, or the client makes the connection but protocol is then somehow mixed in dynamically after discovering the version (sounds kind of icky). Probably just need to take a stab at implementing this change and see what design looks best, especially in the context of better server lifecycle management that we've been discussing.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions