Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Source file io.ml
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798openAsyncmoduleDeferred=structtype'at='aAsync_kernel.Deferred.tmoduleOr_error=structtypenonrec'at=('a,exn)resulttletreturnv=Async_kernel.Deferred.return(Okv)letfailexn=Async_kernel.Deferred.return(Errorexn)letcatchf=Async_kernel.Monitor.try_withf>>=function|Okv->Async_kernel.returnv|Errorexn->Async_kernel.return(Errorexn)let(>>=):'at->('a->'bt)->'bt=funvf->v>>=function|Okv->fv|Errorexn->Async_kernel.return(Errorexn)endlet(>>=)=Async_kernel.(>>=)let(>>|)=Async_kernel.(>>|)let(>>=?)vf=v>>=function|Okv->fv|Errorexn->return(Errorexn)letreturn=Async_kernel.returnletafterdelay=Async_kernel.after(Core_kernel.Time_ns.Span.of_secdelay)letcatchf=Async_kernel.Monitor.try_withfletasync=don't_wait_forendmoduleIvar=structtype'at='aAsync.Ivar.tletcreate()=Async.Ivar.create()letfilltv=Async.Ivar.filltvletwaitt=Async.Ivar.readtendmodulePipe=structopenAsync_kernelopenDeferredtype('a,'b)pipe=('a,'b)Pipe.pipetypewriter_phantom=Pipe.Writer.phantomtypereader_phantom=Pipe.Reader.phantomtype'awriter='aPipe.Writer.ttype'areader='aPipe.Reader.tletflushwriter=Pipe.downstream_flushedwriter>>=fun_->return()letreadreader=Pipe.readreader>>=function|`Eof->returnNone|`Okv->return(Somev)letwritewriterdata=(* Pipe.write writer data *)Pipe.write_without_pushbackwriterdata;return()letclosewriter=Pipe.closewriterletclose_readerreader=Pipe.close_readreaderletcreate_reader~f=Pipe.create_reader~close_on_exception:truefletcreate_writer~f=Pipe.create_writerflettransferreaderwriter=Pipe.transfer_idreaderwriterletcreate()=Pipe.create()letis_closedpipe=Pipe.is_closedpipeletclosedpipe=Pipe.closedpipeendmoduleNet=structletlookup~domainhost=letopenAsync_unix.UnixinAddr_info.get~host[Addr_info.AI_FAMILYdomain;Addr_info.AI_SOCKTYPESOCK_STREAM]>>=function|{Addr_info.ai_addr=ADDR_INET(addr,_);_}::_->Deferred.Or_error.returnaddr|_->Deferred.Or_error.fail(failwith("Failed to resolve host: "^host))letconnect~inet~host~port~scheme=letdomain:Async_unix.Unix.socket_domain=matchinetwith|`V4->PF_INET|`V6->PF_INET6inlookup~domainhost>>=?funaddr->letip_addr=Ipaddr_unix.of_inet_addraddrinletendp=matchschemewith|`Http->`TCP(ip_addr,port)|`Https->`OpenSSL(host,ip_addr,port)inConduit_async.connectendp>>=fun(ic,oc)->letreader=Reader.pipeicindon't_wait_for(Async_kernel.Pipe.closedreader>>=fun()->Reader.closeic>>=fun()->Writer.closeoc);letwriter=Writer.pipeocinDeferred.Or_error.return(reader,writer)end