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_sentencetype execution_result_ = {updates : (Types.sentence_id * Types.sentence_checking_result) list;vs : Vernacstate.t;events : events;exec_error : errored_sentence;}type execution_result = | Done of execution_result_| WillDo of internal Sel.Promise.t
* internal Sel.Promise.state ->
execution_result_val execute :
state ->
Document.document ->
Vernacstate.t ->
prepared_task ->
state * execution_resultval 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