An actor that will forward all received messages onto actors that have registered to receive messages.
Information necessary to create a javadoc or scaladoc URI for a particular type or type member.
We generate DocSigs for java and scala at the same time, since we don't know a priori whether the docs will be in scaladoc or javadoc format.
Holds messages until an Activate is received.
The inverse of SymbolToFqn
Simulate methods that were added in later versions of the scalac API, or to generate fake methods that we can use in both versions.
The Project actor simply forwards messages coming from the user to the respective subcomponent.
Provides a generic message encoding/dblocking I/O API for reading and writing to the wire.
Type safety around Scala type names, scalac uses raw Strings.
Resolves scalac scala.reflect.internal.Symbols.Symbol
to Java
bytecode FQNs (including descriptors for methods).
Resolves scalac scala.reflect.internal.Symbols.Symbol
to Java
bytecode FQNs (including descriptors for methods).
Note this does not work for
scala.tools.scalap.scalax.rules.scalasig.Symbol
which must be
handled separately (going from a Symbols.Symbol
to a
scalasig.Symbol
would involve invoking the Pickler
phase -
which we can't do - to generate a byte array that could be
reparsed by scalap).
See also DocFinding.javaFqnString
(which should be rewritten to
use this).
Goes through sealed families and gets the canonical path of File
and Path
instances.
Goes through sealed families and gets the canonical path of File
and Path
instances.
Not to be confused with "the other" Cannon ;-)
An actor that will forward all received messages onto actors that have registered to receive messages. Messages wrapped with
Persist
will be held and sent to all new subscribers (to cater for legacy EnsimeEvents that older clients expect to see on startup).To avoid memory leaks, non-restarting Actors should unregister when they stop. Additional register requests for the same actor will result in all Persist messages being sent again.
It feels crazy to be writing this because it seems like something that should be in a standard library:
1. the
EventStream
very nearly does what we want but doesn't retain information about the sender and uses method calls (nottell
). NOTE: although undocumented, subscribing to atrait
will subscribe to implementations.2. the
PubSub
requires named subscriptions and requires non-tell
boilerplate on both publisher and subscriber side (although has the advantage of better networked behaviour).3. neither Akka solution has the concept of the "Persist" message.