<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 -> {generate output} -> 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 <- 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's possible to create 3 processes: listener, user, sender.<br><br> +----> user ----+<br>
| |<br>-input -> listener +----------------->+---- sender -><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>