A strongly typed class representing a configuration option for a given channel.
Пример #1
0
        public virtual bool SetOption <T>(ChannelOption <T> option, T value)
        {
            Validate(option, value);

            if (ChannelOption.ConnectTimeout.Equals(option))
            {
                ConnectTimeout = (TimeSpan)(object)value;
            }
            else if (ChannelOption.MaxMessagesPerRead.Equals(option))
            {
                MaxMessagesPerRead = (int)(object)value;
            }
            else if (ChannelOption.WriteSpinCount.Equals(option))
            {
                WriteSpinCount = (int)(object)value;
            }
            else if (ChannelOption.Allocator.Equals(option))
            {
                Allocator = (IByteBufAllocator)value;
            }
            else if (ChannelOption.RcvbufAllocator.Equals(option))
            {
                RecvByteBufAllocator = (IRecvByteBufAllocator)value;
            }
            else if (ChannelOption.AutoRead.Equals(option))
            {
                AutoRead = (bool)(object)value;
            }
            else if (ChannelOption.WriteBufferHighWaterMark.Equals(option))
            {
                _writeBufferHighWaterMark = (int)(object)value;
            }
            else if (ChannelOption.WriteBufferLowWaterMark.Equals(option))
            {
                WriteBufferLowWaterMark = (int)(object)value;
            }
            else if (ChannelOption.MessageSizeEstimator.Equals(option))
            {
                MessageSizeEstimator = (IMessageSizeEstimator)value;
            }
            else
            {
                return(false);
            }

            return(true);
        }
Пример #2
0
        public virtual T GetOption <T>(ChannelOption <T> option)
        {
            Contract.Requires(option != null);

            if (ChannelOption.ConnectTimeout.Equals(option))
            {
                return((T)(object)ConnectTimeout);  // no boxing will happen, compiler optimizes away such casts
            }
            if (ChannelOption.MaxMessagesPerRead.Equals(option))
            {
                return((T)(object)MaxMessagesPerRead);
            }
            if (ChannelOption.WriteSpinCount.Equals(option))
            {
                return((T)(object)WriteSpinCount);
            }
            if (ChannelOption.Allocator.Equals(option))
            {
                return((T)Allocator);
            }
            if (ChannelOption.RcvbufAllocator.Equals(option))
            {
                return((T)RecvByteBufAllocator);
            }
            if (ChannelOption.AutoRead.Equals(option))
            {
                return((T)(object)AutoRead);
            }
            if (ChannelOption.WriteBufferHighWaterMark.Equals(option))
            {
                return((T)(object)WriteBufferHighWaterMark);
            }
            if (ChannelOption.WriteBufferLowWaterMark.Equals(option))
            {
                return((T)(object)WriteBufferLowWaterMark);
            }
            if (ChannelOption.MessageSizeEstimator.Equals(option))
            {
                return((T)MessageSizeEstimator);
            }
            return(default(T));
        }
Пример #3
0
 public bool SetOption(ChannelOption option, object value)
 {
     return(option.Set(this, value));
 }
Пример #4
0
 protected virtual void Validate <T>(ChannelOption <T> option, T value)
 {
     Contract.Requires(option != null);
     option.Validate(value);
 }