2014-09-02 48 views
3

假設我有一個來源keypads :: Producer IO Keypad,它產生一個敏感數據流,例如一次性鍵盤。conduit:只讀源可能嗎?

現在,如果我的庫公開keypads,最終用戶可能連接到keypads兩個水槽,讓我們稱他們goodbad,其中bad請求的值,並讀取它,但隨後其返回上游通過leftover。稍後,good接收器可能會使用之前由bad讀取的相同鍵盤。最終用戶可能會忘記發生這種情況,例如,如果goodbad由外部庫提供。

有沒有什麼方法可以在管道中設計一個只讀源來丟棄剩餘數據?

(我讀過here,它是不可能禁用重用剩菜,但因爲我是新來的管道,也許有來設計我沒有看到建築以不同的方式。)

回答

1

我能想到的兩個選項:

  1. badmap id Conduit這將阻止剩菜的傳播。我想你的代碼看起來是這樣的:

    keypads $$ (CL.map id =$= bad) >> good 
    
  2. 下降到了Pipe層抽象的,並呼籲injectLeftoversbad,以確保所有的剩菜都消耗那裏,然後丟棄。

我猜(1)是你想要的方法。