--- /dev/null
+#include "fsm/scd_sts_init.h"
+
+#include "scd_logging.h"
+#include "scd_exception.h"
+#include "scd_cont_man_slave.h"
+
+
+void scd_sts_init::set_failed()
+{
+ _fsm.set_state(_st_failed);
+}
+
+
+void scd_sts_init::set_idle(const sc_core::sc_time& time)
+{
+ scd_error("init: illegal call to set_idle()");
+ throw scd_exception("illegal call");
+}
+
+
+void scd_sts_init::set_busy()
+{
+ scd_error("init: illegal call to set_busy()");
+ throw scd_exception("illegal call");
+}
+
+
+void scd_sts_init::set_done()
+{
+ scd_error("init: illegal call to set_done()");
+ throw scd_exception("illegal call");
+}
+
+
+void scd_sts_init::set_fail()
+{
+ _fsm.set_state(_st_failed);
+}
+
+
+void scd_sts_init::process()
+{
+ _connector.process();
+
+ if (!_connector.is_connecting() && !_connector.has_connection())
+ {
+ // unable to connect to master
+ scd_error("connecting to master failed");
+ _fsm.set_state(_st_failed);
+ }
+ else if (!_connector.is_connecting() && _connector.has_connection())
+ {
+ // successfully connected to master
+ scd_info("connected to master");
+ _fsm.set_socket();
+ _sim.get_poller().register_handler(_fsm, SOCK_EV_READ | SOCK_EV_CLOSE);
+ _fsm.set_state(_st_busy);
+ }
+
+} // process()
+
+
+bool scd_sts_init::active() const { return false; }
+
+
+bool scd_sts_init::advance_time() const
+{
+ scd_error("illegal call to advance_time()");
+ throw scd_exception("illegal call");
+}