[erlang-questions] gen_statem next_event and appending to the event queue

Frans Schneider <>
Wed Oct 4 11:03:33 CEST 2017


Dear list,

I have a state machine which implements the RTPS reader locator [1]. 
Basically, it has a list of unsent changes which should be send one by 
one to some transport. If the list is empty, the state becomes idle, 
otherwise it keeps the state pushing and uses the state callback action 
{next_event, internal, can_send} to process the next change from the list.
However, the state machine also has to respond to some other events like 
the one which will replace the list with unsent changes with a new one 
(this is according to the specs.) But, since the callback action 
next_event inserts events in front of the event queue, an event like 
(re)setting the unsent changes list is only processed after all internal 
events have been processed.
Adding events to the back of the queue can of course be done using a 
gen_statem:cast or a simple '!', but I would like to use a callback 
action for this as well, which looks tidier and feels better. What about 
adding an action {add_event, EventType, EventContent}?

Frans

[1] http://www.omg.org/spec/DDSI-RTPS/2.2/


More information about the erlang-questions mailing list