public RobotRaconteurNodeSetup(RobotRaconteurNode node, ServiceFactory[] service_types, bool scan_assembly_types, string nodename, ushort tcp_port, RobotRaconteurNodeSetupFlags flags) { Node = node; if (flags.HasFlag(RobotRaconteurNodeSetupFlags.EnableLocalTransport)) { LocalTransport = new LocalTransport(node); if (flags.HasFlag(RobotRaconteurNodeSetupFlags.LocalTransportStartServer)) { LocalTransport.StartServerAsNodeName(nodename); } else if (flags.HasFlag(RobotRaconteurNodeSetupFlags.LocalTransportStartClient) && !string.IsNullOrEmpty(nodename)) { LocalTransport.StartClientAsNodeName(nodename); } if (flags.HasFlag(RobotRaconteurNodeSetupFlags.EnableNodeDiscoveryListening)) { LocalTransport.EnableNodeDiscoveryListening(); } node.RegisterTransport(LocalTransport); } if (flags.HasFlag(RobotRaconteurNodeSetupFlags.EnableTcpTransport)) { TcpTransport = new TcpTransport(node); if (flags.HasFlag(RobotRaconteurNodeSetupFlags.TcpTransportStartServer)) { TcpTransport.StartServer(tcp_port); } if (flags.HasFlag(RobotRaconteurNodeSetupFlags.EnableNodeDiscoveryListening)) { TcpTransport.EnableNodeDiscoveryListening(); } if (flags.HasFlag(RobotRaconteurNodeSetupFlags.EnableNodeAnnounce)) { TcpTransport.EnableNodeAnnounce(); } node.RegisterTransport(TcpTransport); } if (service_types != null) { foreach (var t in service_types) { node.RegisterServiceType(t); } } if (scan_assembly_types) { try { var scanned_types = ScanAssembliesForServiceTypes(); foreach (var t in scanned_types) { node.RegisterServiceType(t); } } catch (Exception e) { Console.Error.WriteLine("warning: assembly scanning failed: " + e.Message); } } }