123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960(* Copyright (C) 2014, Thomas Leonard *)typeid=intletid_chunk_size=1024letnext_id_chunk=Atomic.make0letnext_id_key=Domain.DLS.new_key(fun()->Atomic.fetch_and_addnext_id_chunkid_chunk_size)letmint_id()=letnext_id_local=Domain.DLS.getnext_id_keyinletnext_id_local_succ=if((next_id_local+1)modid_chunk_size)=0then(* we're out of local IDs *)Atomic.fetch_and_addnext_id_chunkid_chunk_sizeelsenext_id_local+1inDomain.DLS.setnext_id_keynext_id_local_succ;next_id_localmoduleRE=Eio_runtime_eventsletadd_event=Runtime_events.User.writeletcreate_obj?labelidty=add_eventRE.create_obj(id,ty);Option.iter(funl->add_eventRE.name(id,l))labelletcreate_ccidty=add_eventRE.create_cc(id,ty)letcreate_fiber~ccid=add_eventRE.create_fiber(id,cc)letlog=add_eventRE.logletnameidx=add_eventRE.name(id,x)letenter_span=add_eventRE.enter_spanletexit_span=add_eventRE.exit_spanletfiber=add_eventRE.fiberletsuspend_domain=add_eventRE.suspend_domainlettry_get=add_eventRE.try_getletget=add_eventRE.getletput=add_eventRE.putletexit_fiber=add_eventRE.exit_fiberletexit_cc=add_eventRE.exit_ccleterroridex=add_eventRE.error(id,ex)letsuspend_fiberop=add_eventRE.suspend_fiberopletdomain_spawn~parent=add_eventRE.domain_spawnparentletwith_spanopfn=enter_spanop;matchfn()with|r->exit_span();r|exceptionex->letbt=Printexc.get_raw_backtrace()inexit_span();Printexc.raise_with_backtraceexbt