2014-09-02 20 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)是你想要的方法。