<div dir="ltr"><br clear="all">Hello.<br><br>I have next problem: I have a network client that connects to server, listens for messages and generate responces. So the control flow can be represended as:<br><br>server -- input -&gt; {generate output} -&gt; output<br>
<br>Output can be generated using default implementation or can overriden by user. <br><br>The main difficulty appeares when I need to add a user program on the top of this logic,<br>i.e. from user-side I want to have dsl:smth like<br>
<br>withClient $ do<br>   x &lt;- send message<br>   waitFor x<br>   timeout 5000000<br>   forever $ sendRandomMessage<br><br>i.e. an ability to send messages, waiting for some event (message to come), waiting for<br>timeout.<br>
<br>The question is how to define such logic without a big overhead. I see a solution using conduit, it&#39;s possible to create 3 processes: listener, user, sender.<br><br>                         +----&gt; user ----+<br>
                         |                    |<br>-input -&gt; listener +-----------------&gt;+---- sender -&gt;<br><br>and use TQueue or TChan to send messages between them, however there can be another possible solutions, that uses less resources, or another design. <br>
<br><br>-- <br>Alexander<br>
</div>