Example #1
0
        protected virtual void ApplySocketOptions(Socket socket, ListenOptions listenOptions, ChannelOptions channelOptions, Dynamic.Core.Log.ILogger logger)
        {
            try
            {
                if (listenOptions.NoDelay)
                {
                    socket.NoDelay = true;
                }
            }
            catch (Exception e)
            {
                logger.Warn("Failed to set NoDelay for the socket." + e.ToString());
            }

            try
            {
                if (channelOptions.ReceiveBufferSize > 0)
                {
                    socket.ReceiveBufferSize = channelOptions.ReceiveBufferSize;
                }
            }
            catch (Exception e)
            {
                logger.Warn(e.ToString() + "Failed to set ReceiveBufferSize for the socket.");
            }

            try
            {
                if (channelOptions.SendBufferSize > 0)
                {
                    socket.SendBufferSize = channelOptions.SendBufferSize;
                }
            }
            catch (Exception e)
            {
                logger.Warn(e.ToString() + "Failed to set SendBufferSize for the socket.");
            }

            try
            {
                if (channelOptions.ReceiveTimeout > 0)
                {
                    socket.ReceiveTimeout = channelOptions.ReceiveTimeout;
                }
            }
            catch (Exception e)
            {
                logger.Warn(e.ToString() + "Failed to set ReceiveTimeout for the socket.");
            }

            try
            {
                if (channelOptions.SendTimeout > 0)
                {
                    socket.SendTimeout = channelOptions.SendTimeout;
                }
            }
            catch (Exception e)
            {
                logger.Warn(e.ToString() + "Failed to set SendTimeout for the socket.");
            }

            try
            {
                _socketOptionsSetter?.Invoke(socket);
            }
            catch (Exception e)
            {
                logger.Warn(e.ToString() + "Failed to run socketOptionSetter for the socket.");
            }
        }