<?xml version="1.0" ?> <fsm fsm_version="1.3" idle_work="1" allow_actions="1" init="init" final="unsafe"> <state id="init"> <event name="CheckParameters" type="boolean"> <next result="true" state="offline" /> <next result="false" state="init" /> </event> <!--event name="Progress"> <next action="CheckParameters" /> </event--> </state> <state id="offline"> <event name="CheckParameters" type="boolean"> <next result="true" state="offline" /> <next result="false" state="init" /> </event> <event name="Connect" type="boolean"> <next result="true" state="online" /> <next result="false" state="unsafe" /> </event> <event name="Progress"> <next action="Connect" /> </event> </state> <state id="online"> <event name="Close" type="boolean"> <next result="true" state="offline" /> <next result="false" state="unsafe" /> </event> <event name="Login" type="boolean"> <next result="true" state="live" /> <next result="false" state="unsafe" /> </event> <event name="Progress"> <next action="Login" /> </event> </state> <state id="live"> <event name="Close" type="boolean"> <next result="true" state="offline" /> <next result="false" state="unsafe" /> </event> <event name="Chdir" type="boolean"> <next result="true" state="ready" /> <next result="false" state="unsafe" /> </event> <event name="Get" type="int"> <next result="FTP_FINISHED" state="live" /> <next result="FTP_FAILED" state="unsafe" /> <next result="FTP_MOREDATA" state="active" /> </event> <event name="Put" type="int"> <next result="FTP_FINISHED" state="live" /> <next result="FTP_FAILED" state="unsafe" /> <next result="FTP_MOREDATA" state="active" /> </event> <event name="Progress"> <next action="Chdir" /> </event> </state> <state id="ready"> <event name="Get" type="string"> <next result="FTP_FINISHED" state="live" action="Close" /> <next result="FTP_MOREDATA" state="active" /> <next result="FTP_FAILED" state="unsafe" /> </event> <event name="Progress"> <next action="Get" /> </event> </state> <state id="active"> <event name="close" type="boolean"> <next result="true" state="offline" /> <next result="false" state="unsafe" /> </event> <event name="Continue" type="int"> <next result="FTP_FINISHED" state="live" action="Close" /> <next result="FTP_FAILED" state="unsafe" /> <next result="FTP_MOREDATA" state="active" /> </event> <event name="Progress"> <next action="Continue" /> </event> </state> <state id="unsafe" type="void" /> </fsm>