示例#1
0
        public ScaleoutStreamManager(Func <int, IList <Message>, Task> send,
                                     Action <int, ulong, ScaleoutMessage> receive,
                                     int streamCount,
                                     TraceSource trace,
                                     IPerformanceCounterManager performanceCounters,
                                     ScaleoutConfiguration configuration,
                                     int maxScaleoutMappings)
        {
            if (configuration.QueueBehavior != QueuingBehavior.Disabled && configuration.MaxQueueLength == 0)
            {
                throw new InvalidOperationException(Resources.Error_ScaleoutQueuingConfig);
            }

            _streams = new ScaleoutStream[streamCount];
            _send    = send;
            _receive = receive;

            var receiveMapping = new ScaleoutMappingStore[streamCount];

            performanceCounters.ScaleoutStreamCountTotal.RawValue     = streamCount;
            performanceCounters.ScaleoutStreamCountBuffering.RawValue = streamCount;
            performanceCounters.ScaleoutStreamCountOpen.RawValue      = 0;

            for (int i = 0; i < streamCount; i++)
            {
                _streams[i]       = new ScaleoutStream(trace, "Stream(" + i + ")", configuration.QueueBehavior, configuration.MaxQueueLength, performanceCounters);
                receiveMapping[i] = new ScaleoutMappingStore(maxScaleoutMappings);
            }

            Streams = new ReadOnlyCollection <ScaleoutMappingStore>(receiveMapping);
        }
示例#2
0
 public ScaleoutStreamManager(Func <int, IList <Message>, Task> send,
                              Action <int, ulong, ScaleoutMessage> receive,
                              int streamCount,
                              TraceSource trace,
                              IPerformanceCounterManager performanceCounters,
                              ScaleoutConfiguration configuration)
     : this(send, receive, streamCount, trace, performanceCounters, configuration,
            DefaultConfigurationManager.DefaultMaxScaleoutMappingsPerStream)
 {
 }
示例#3
0
        protected ScaleoutMessageBus(IDependencyResolver resolver, ScaleoutConfiguration configuration)
            : base(resolver)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException("configuration");
            }

            _traceManager = resolver.Resolve <ITraceManager>();
            _trace        = _traceManager["SignalR." + typeof(ScaleoutMessageBus).Name];
            _perfCounters = resolver.Resolve <IPerformanceCounterManager>();
            var maxScaloutMappings = resolver.Resolve <IConfigurationManager>().MaxScaleoutMappingsPerStream;

            _streamManager = new Lazy <ScaleoutStreamManager>(
                () => new ScaleoutStreamManager(Send, OnReceivedCore, StreamCount, _trace, _perfCounters, configuration, maxScaloutMappings));
        }