[Haskell-cafe] question about interruptable state runner

Alexander V Vershilov alexander.vershilov at gmail.com
Thu Jun 9 23:04:41 CEST 2011


Hello.

Thu, Jun 09, 2011 at 01:40:51PM -0500, Antoine Latter wrote
> On Thu, Jun 9, 2011 at 3:14 PM, Alexander V Vershilov
> <alexander.vershilov at gmail.com> wrote:
> > Hello.
> >
> > I'm writing a small tcp server with that can handle connections and
> > answer by rules writen in a small script that can be interpreted by server.
> > For this purpose I've written an interpreter that has type
> >
> >  ErrorT MyError (StateT ScriptState IO)
> >
> > so I can call "native" IO function in that script, and define new one.
> >  I can run this script with runState (runErrorT (...)) oldState.
> >
> > But there is one problem: in script i should be able to call functions that
> > will stop script interpretation and wait for some server event. To continue
> > interpretation.
> >
> 
> What do you mean by 'server event'? How do you plan on representing
> these events?
> 

I'm using term server event for next thing when server get some message from
client it generate 'server event' i.e. some action or save this event in event 
queue. And then forces this queue to act.

So simplified workflow looks like:
  client                 server                             interpretator
1 *sends some messages -> save parsed messages in queue 
2 *send 'END' message  -> forces functions F(message) from 
                          queue
3                        *some F is to call interpretator  -> run script
4                                                          <-  *call server 
                         <- send messages to client           callback
                         goto step 2                       <- *finish script

* - stand for event initiator. Here everything can be done in a straitforward way.

What I want to do and do know a good way for:
client        server          -> run script
                                ...
                             <- call 'wait' command
          <-> *goto 1
...
send 'END' -> continue script ->

Sorry if I do not answer on your question directly.
  
--
Best regards,
  Alexander V Vershilov

> > Can smb give an advice what is the best way to do it?
> >
> > --
> > Best regards
> >  Alexander V Vershilov
> >
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 490 bytes
Desc: not available
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20110609/fde83ed1/attachment.pgp>


More information about the Haskell-Cafe mailing list