protected override void DoSetAll(IoSessionConfig config) { ISerialSessionConfig cfg = config as ISerialSessionConfig; if (cfg != null) { ReadTimeout = cfg.ReadTimeout; WriteBufferSize = cfg.WriteBufferSize; ReceivedBytesThreshold = cfg.ReceivedBytesThreshold; } }
/// <inheritdoc/> protected override IConnectFuture Connect0(EndPoint remoteEP, EndPoint localEP, Action <IoSession, IConnectFuture> sessionInitializer) { ISerialSessionConfig config = (ISerialSessionConfig)SessionConfig; SerialEndPoint sep = (SerialEndPoint)remoteEP; SerialPort serialPort = new SerialPort(sep.PortName, sep.BaudRate, sep.Parity, sep.DataBits, sep.StopBits); if (config.ReadBufferSize > 0) { serialPort.ReadBufferSize = config.ReadBufferSize; } if (config.ReadTimeout > 0) { serialPort.ReadTimeout = config.ReadTimeout * 1000; } if (config.WriteBufferSize > 0) { serialPort.WriteBufferSize = config.WriteBufferSize; } if (config.WriteTimeout > 0) { serialPort.WriteTimeout = config.WriteTimeout * 1000; } if (config.ReceivedBytesThreshold > 0) { serialPort.ReceivedBytesThreshold = config.ReceivedBytesThreshold; } IConnectFuture future = new DefaultConnectFuture(); SerialSession session = new SerialSession(this, sep, serialPort); InitSession(session, future, sessionInitializer); try { session.Processor.Add(session); } catch (IOException ex) { return(DefaultConnectFuture.NewFailedFuture(ex)); } _idleStatusChecker.Start(); return(future); }