This feature allows services to declare dependencies to products of other files if they need them. A possible use case is that a java file foo.java contains an import statement to the file bar.java. Then the type checking of foo.java probably depends on the type checking of the imported file bar.java. In a case like this, instead of producing a product, the service replies back to the broker and declares a new dependency. If bar.java isn't available to the broker yet, the broker then notifies the IDE to send the contents of bar.java. Then the services start producing products for bar.java. As soon as the type checking for bar.java is done, the broker can notify the type checking service again, that the type checking for foo.java can be started.
To track the dependencies of different files, the broker manages an graph that contains only the cross file dependencies. On every new product, the broker performs lookup on this graph to find potential products that can be build now.
Preliminary work for this feature is done in the filedeps branch.
This feature allows services to declare dependencies to products of other files if they need them. A possible use case is that a java file
foo.java
contains an import statement to the filebar.java
. Then the type checking offoo.java
probably depends on the type checking of the imported filebar.java
. In a case like this, instead of producing a product, the service replies back to the broker and declares a new dependency. Ifbar.java
isn't available to the broker yet, the broker then notifies the IDE to send the contents ofbar.java
. Then the services start producing products forbar.java
. As soon as the type checking forbar.java
is done, the broker can notify the type checking service again, that the type checking forfoo.java
can be started.To track the dependencies of different files, the broker manages an graph that contains only the cross file dependencies. On every new product, the broker performs lookup on this graph to find potential products that can be build now.
Preliminary work for this feature is done in the
filedeps
branch.