12345678910111213141516171819202122232425262728293031323334353637383940openLwt.Syntaxletlog_src=Logs.Src.create~doc:"Message Middleware""sihl.middleware.message"moduleLogs=(valLogs.src_loglog_src:Logs.LOG)letkey:Message.tOpium_kernel.Hmap.key=Opium_kernel.Hmap.Key.create("message",Message.sexp_of_t);;letfind_optreq=Opium_kernel.Hmap.findkey(Opium_kernel.Request.envreq)letsetmessagereq=letenv=Opium_kernel.Request.envreqinletenv=Opium_kernel.Hmap.addkeymessageenvin{reqwithenv};;moduleMake(MessageService:Message.Sig.SERVICE)=structletm()=letfilterhandlerreq=letctx=Http.Request.to_ctxreqinletsession=matchMiddleware_session.find_optreqwith|Somesession->session|None->Logs.info(funm->m"Did you forget to apply the session middleware?");Logs.err(funm->m"No session found");failwith"No session found"inlet*result=MessageService.rotatectxsessioninmatchresultwith|Somemessage->letreq=setmessagereqinhandlerreq|None->handlerreqinOpium_kernel.Rock.Middleware.create~name:"message"~filter;;end