Tim Klein wrote: > In a different thread, Rocco wrote: > >> POE::NFA is not well documented. It seems to be the strange cousin of >> POE::Session that people rarely talk about, so time is focused >> elsewhere. > > > That's certainly true, but it's puzzling to me. POE::NFA is extremely > powerful! It's like POE::Session's big brother, rather than its strange > cousin. I don't know why more people aren't using it. A Session has > events, but an NFA has events and states! An event can be handled > differently depending on what state the NFA is in when the event > arrives. Totally cool. > > POE::Session is great for stateless applications, but it's been my > experience that most applications of any complexity do have states, even > if we don't always think of them that way. POE::NFA enables an > application to be explicit about what state it's currently in, and to > use event handlers specifically "tuned" for that state. And that, in > turn, enables me as an application writer to explicitly divide a complex > application into conceptual "chunks", where each chunk consists of the > event handlers for just one state. It's a powerful mental tool as well > as a powerful programming tool. I think of POE::NFA as a superset of > POE::Session. I'd hate to see it neglected! > > Tim Klein > Dallas, Texas > > I haven't messed with POE::NFA much, but from your description of states, I think the same (or even better) can be accomplished by using the object wrapped session rather than the inline sessions. By having every session wrapped by a regular object you can hide the implementation of the event handling, and essentially you have 100% control over the extent of a state, since it isn't in a single state, it is *just an object*, which already inherently knows its own state, etc.
But I have ranted enough here, before, on the use of object sessions rather than inline ones :-)... http://danconia.org