読者です 読者をやめる 読者になる 読者になる

テストステ論

高テス協会会長が, テストステロンに関する情報をお届けします.

(nim-fuse report) ブリッジ方式の検討

以下のようにすれば出来る. まずC側で受けてから, Nim側からexportされた関数に委譲するイメージ. その間で, ユニークなIDを使ってNim側で利用するファイルシステムオブジェクトを特定する.

簡単のため, fuse_operationsがopsX(struct T *t)しか持ってないとする.

まず, C言語で, これを実装したラッパーを作る. 以下のような感じ.

fuse_operations {
  opsX = opsX(struct T *t) { 
     id = get_use_data();
     nim_opsX(id, t);
  }
} c_bridge;

c_bridge_fuse_main(int id) {
  user_data = id
  fuse_main(c_bridge, user_data);
}
nim_fuse_main(fs: HiFuseFs) =
   id = uniqAlloc()
   fsMap[id] = fs
   c_bridge_fuse_main(id)

// Tをimportする
proc nim_opsX(id: int, t: T) =
   fs = fsMap[id]
   fs.opsX(t)