コード例 #1
0
        protected override void DoSetAll(IoSessionConfig config)
        {
            ISerialSessionConfig cfg = config as ISerialSessionConfig;

            if (cfg != null)
            {
                ReadTimeout            = cfg.ReadTimeout;
                WriteBufferSize        = cfg.WriteBufferSize;
                ReceivedBytesThreshold = cfg.ReceivedBytesThreshold;
            }
        }
コード例 #2
0
        /// <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);
        }