首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MirageOS -Http-获取示例

MirageOS -Http-获取示例
EN

Stack Overflow用户
提问于 2016-02-17 12:16:37
回答 1查看 244关注 0票数 2

我正在尝试修改一些在海市蜃楼框架中可以找到的MirageOS http-fetch示例(https://github.com/mirage/mirage-skeleton),但是我理解为什么不能将在config.ml文件中执行的一些函数移到我的unikernel.ml文件中有一些问题。原始的config.ml文件如下(我只复制有趣的部分):

代码语言:javascript
复制
[...]
let client =
      foreign "Unikernel.Client" @@ console @-> resolver @-> conduit @-> job

let () =
  add_to_ocamlfind_libraries ["mirage-http"];
  add_to_opam_packages ["mirage-http"];
  let sv4 = stack default_console in
  let res_dns = resolver_dns sv4 in
  let conduit = conduit_direct sv4 in
  let job =  [ client $ default_console $ res_dns $ conduit ] in
  register "http-fetch" job

我想要做的是移动这两行:

代码语言:javascript
复制
  let res_dns = resolver_dns sv4 in
  let conduit = conduit_direct sv4 in

进入我的unikernel.ml启动方法。基本上,我只想把堆栈传递给我的模块,让它创建一个dns解析器和一个管道。我的起始功能如下:

代码语言:javascript
复制
  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_fetch参数时,我得到了这个错误:

代码语言:javascript
复制
Error: This expression has type Mirage.resolver Mirage.impl
       but an expression was expected of type Resolver_lwt.t

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-17 14:36:25

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35456484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档