protected EdgeListener CreateBaseEdgeListener(NodeConfig.EdgeListener el_info,
ApplicationNode node, IEnumerable addresses)
{
EdgeListener el = null;
int port = el_info.port;
if(el_info.type == "tcp") {
try {
el = new TcpEdgeListener(port, addresses);
} catch {
el = new TcpEdgeListener(0, addresses);
}
} else if(el_info.type == "udp") {
try {
el = new UdpEdgeListener(port, addresses);
} catch {
el = new UdpEdgeListener(0, addresses);
}
} else if(el_info.type == "function") {
port = port == 0 ? (new Random()).Next(1024, 65535) : port;
el = new FunctionEdgeListener(port, 0, null);
} else if(el_info.type == "xmpp") {
if(!_node_config.XmppServices.Enabled) {
throw new Exception("XmppServices must be enabled to use XmppEL");
}
el = new XmppEdgeListener(XmppService);
node.Node.AddTADiscovery(new XmppDiscovery(node.Node, XmppService, node.Node.Realm));
} else {
throw new Exception("Unrecognized transport: " + el_info.type);
}
return el;
}