Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ocaml MirageOS-httpfetch示例_Ocaml_Unikernel_Mirage - Fatal编程技术网

Ocaml MirageOS-httpfetch示例

Ocaml MirageOS-httpfetch示例,ocaml,unikernel,mirage,Ocaml,Unikernel,Mirage,我试图对mirage框架中的MirageOS http fetch示例()进行一些修改,但在理解为什么无法将config.ml文件中执行的某些函数移到unikernel.ml文件中时遇到了一些问题。原始config.ml文件如下(我只复制有趣的部分): 我想做的是移动这两条线: let res_dns = resolver_dns sv4 in let conduit = conduit_direct sv4 in 进入我的unikernel.ml启动方法。基本上,我只想将堆栈传递给我

我试图对mirage框架中的MirageOS http fetch示例()进行一些修改,但在理解为什么无法将config.ml文件中执行的某些函数移到unikernel.ml文件中时遇到了一些问题。原始config.ml文件如下(我只复制有趣的部分):

我想做的是移动这两条线:

  let res_dns = resolver_dns sv4 in
  let conduit = conduit_direct sv4 in
进入我的unikernel.ml启动方法。基本上,我只想将堆栈传递给我的模块,让它创建一个dns解析器和一个管道。我的启动功能如下:

  let start c s =
    C.log_s c (sprintf "Resolving in 1s using DNS server %s" ns) >>= fun () ->
    OS.Time.sleep 1.0 >>= fun () ->
    let res_dns = resolver_dns s in
        let conduit = conduit_direct s in 
            http_fetch c res_dns conduit >>= fun (data) ->
            Lwt.return(dump_to_db data);
现在,我在提交http_获取参数时遇到以下错误:

Error: This expression has type Mirage.resolver Mirage.impl
       but an expression was expected of type Resolver_lwt.t

我在这里问的主要是一个概念性的问题,因为我显然遗漏了一些东西。我不是OCaml/MirageOS方面的专家,但这种有争议的类型不匹配行为很难理解,因为我只是从不同的文件调用同一个函数。

config.ml
用于生成
main.ml
。如果需要,可以从那里复制生成的代码。

config.ml和unikernel.ml的编译方式完全不同(甚至不在同一点上)。为什么要将一些代码从一个复制到另一个?我主要是在做实验。我真正的问题是我遇到了这个问题,我正试图遵循直接在unikernel中创建解析器和管道的建议。感谢您为我指明了正确的方向,通过查看main.ml中的代码,我成功地将解析器和管道的实例化移到了unikernel.ml中。不幸的是,它没有解决我在上面的评论中提到的DHCP问题(路由。没有路由到目的地地址):(。
Error: This expression has type Mirage.resolver Mirage.impl
       but an expression was expected of type Resolver_lwt.t