/// <summary> /// Create a server instance from this configuration /// </summary> public KRPC.Server.Server Create() { KRPC.Server.Message.RPCServer rpcServer = null; KRPC.Server.Message.StreamServer streamServer = null; var serverProtocol = Protocol; if (serverProtocol == Protocol.ProtocolBuffersOverTCP || serverProtocol == Protocol.ProtocolBuffersOverWebsockets) { var serverAddress = IPAddress.Loopback; IPAddress.TryParse(Settings.GetValueOrDefault("address", IPAddress.Loopback.ToString()), out serverAddress); ushort rpcPort = 0; ushort streamPort = 0; ushort.TryParse(Settings.GetValueOrDefault("rpc_port", "0"), out rpcPort); ushort.TryParse(Settings.GetValueOrDefault("stream_port", "0"), out streamPort); var rpcTcpServer = new TCPServer(serverAddress, rpcPort); var streamTcpServer = new TCPServer(serverAddress, streamPort); if (serverProtocol == Protocol.ProtocolBuffersOverTCP) { rpcServer = new KRPC.Server.ProtocolBuffers.RPCServer(rpcTcpServer); streamServer = new KRPC.Server.ProtocolBuffers.StreamServer(streamTcpServer); } else { rpcServer = new KRPC.Server.WebSockets.RPCServer(rpcTcpServer); streamServer = new KRPC.Server.WebSockets.StreamServer(streamTcpServer); } } return(new KRPC.Server.Server(Id, serverProtocol, Name, rpcServer, streamServer)); }
/// <summary> /// Create a server instance from this configuration /// </summary> public KRPC.Server.Server Create() { KRPC.Server.Message.RPCServer rpcServer = null; KRPC.Server.Message.StreamServer streamServer = null; var serverProtocol = Protocol; if (serverProtocol == Protocol.ProtocolBuffersOverTCP || serverProtocol == Protocol.ProtocolBuffersOverWebsockets) { var serverAddress = IPAddress.Loopback; IPAddress.TryParse(Settings.GetValueOrDefault("address", IPAddress.Loopback.ToString()), out serverAddress); ushort rpcPort = 0; ushort streamPort = 0; ushort.TryParse(Settings.GetValueOrDefault("rpc_port", "0"), out rpcPort); ushort.TryParse(Settings.GetValueOrDefault("stream_port", "0"), out streamPort); var rpcTcpServer = new TCPServer(serverAddress, rpcPort); var streamTcpServer = new TCPServer(serverAddress, streamPort); if (serverProtocol == Protocol.ProtocolBuffersOverTCP) { rpcServer = new KRPC.Server.ProtocolBuffers.RPCServer(rpcTcpServer); streamServer = new KRPC.Server.ProtocolBuffers.StreamServer(streamTcpServer); } else { rpcServer = new KRPC.Server.WebSockets.RPCServer(rpcTcpServer); streamServer = new KRPC.Server.WebSockets.StreamServer(streamTcpServer); } } else { uint baudRate = 0; ushort dataBits = 0; KRPC.IO.Ports.Parity parity; KRPC.IO.Ports.StopBits stopBits; uint.TryParse(Settings.GetValueOrDefault("baud_rate", "9600"), out baudRate); ushort.TryParse(Settings.GetValueOrDefault("data_bits", "8"), out dataBits); // TODO: add helper method for Enum.TryParse (only available in .NET 4) try { parity = (KRPC.IO.Ports.Parity)Enum.Parse( typeof(KRPC.IO.Ports.Parity), Settings.GetValueOrDefault("parity", "None")); } catch (ArgumentException) { parity = KRPC.IO.Ports.Parity.None; } try { stopBits = (KRPC.IO.Ports.StopBits)Enum.Parse( typeof(KRPC.IO.Ports.StopBits), Settings.GetValueOrDefault("stop_bits", "One")); } catch (ArgumentException) { stopBits = KRPC.IO.Ports.StopBits.None; } var serialServer = new KRPC.Server.SerialIO.ByteServer( Settings.GetValueOrDefault("port", string.Empty), baudRate, dataBits, parity, stopBits); rpcServer = new KRPC.Server.SerialIO.RPCServer(serialServer); streamServer = new KRPC.Server.SerialIO.StreamServer(); } return(new KRPC.Server.Server(Id, serverProtocol, Name, rpcServer, streamServer)); }