Protocols
Protocols copied to clipboard
Protocols between Process has a race condition.
Playing around with a simple greeter protocol for two communicating processes A & B. Where A is the front-end client process, and B is a back-end process.
I believe there to be a race condition with the underlying message passing. When the first message in the protocol is to be from the 'back-end' the message queue is blocking. Otherwise when the first message in the protocol is from the 'front-end' process all is fine.
Minimal working and failing examples are in the following GIST:
https://gist.github.com/jfdm/ea5d0536cc4183e47e74
The working protocol differs in that the first message is sent by the client process. Both files are self contained. The informal narration for the failing protocol is:
B -> A : "Enter Command:"
A -> B : Command
case Command of
Greet msg => B -> A : "Hello: " ++ msg
loop
Quit => B -> A : Goodbye
exit