+ node.get_property (X_("selfdestruct"), _remove_on_disconnect);
+
+ XMLNodeList nlist = node.children();
+ for (XMLNodeIterator i = nlist.begin(); i != nlist.end(); ++i) {
+ if ((*i)->name() == X_("Processor")) {
+ _amp->set_state (**i, version);
+ }
+ }
+
+ _send_delay->set_name ("Send-" + name());
+ _thru_delay->set_name ("Thru-" + name());
+
+ return 0;
+}
+
+int
+Send::set_state_2X (const XMLNode& node, int /* version */)
+{
+ /* use the IO's name for the name of the send */
+ XMLNodeList const & children = node.children ();
+
+ XMLNodeList::const_iterator i = children.begin();
+ while (i != children.end() && (*i)->name() != X_("Redirect")) {
+ ++i;
+ }
+
+ if (i == children.end()) {
+ return -1;
+ }
+
+ XMLNodeList const & grand_children = (*i)->children ();
+ XMLNodeList::const_iterator j = grand_children.begin ();
+ while (j != grand_children.end() && (*j)->name() != X_("IO")) {
+ ++j;
+ }
+
+ if (j == grand_children.end()) {
+ return -1;
+ }
+
+ XMLProperty const * prop = (*j)->property (X_("name"));
+ if (!prop) {
+ return -1;
+ }
+
+ set_name (prop->value ());
+
+ return 0;
+}
+
+bool
+Send::can_support_io_configuration (const ChanCount& in, ChanCount& out)
+{
+ /* sends have no impact at all on the channel configuration of the
+ streams passing through the route. so, out == in.
+ */
+
+ out = in;
+ return true;