Dm.ExecutionManagerSourceThe event manager is in charge of the actual event of tasks (as defined by the scheduler), caching event states and invalidating them. It can delegate to worker processes via DelegationManager
type options = {delegation_mode : delegation_mode;completion_options : Protocol.Settings.Completion.t;enableDiagnostics : bool;}Execution state, includes the cache
we know if it worked but we do not have the state in this process
val handle_event :
Document.document ->
event ->
state ->
Types.sentence_id option
* (Types.sentence_id * Types.sentence_checking_result) option
* state option
* eventsEvents for the main loop
Execution happens in two steps. In particular the event one takes only one task at a time to ease checking for interruption
val build_tasks_for :
Document.document ->
Scheduler.schedule ->
state ->
Types.sentence_id ->
Vernacstate.t * prepared_task list * state * errored_sentenceval execute :
state ->
Document.document ->
(Vernacstate.t * events * bool) ->
prepared_task ->
(Types.sentence_id * Types.sentence_checking_result) list
* state
* Vernacstate.t
* events
* errored_sentenceval view_task :
prepared_task ->
[ `Local of Types.sentence_id
| `Remote of
Types.sentence_id
* Types.sentence_id
* Types.sentence_id
* Types.sentence_id ]Rocq toplevels for delegation without fork