GetCursors() public static méthode

public static GetCursors ( string cursor, string prefix ) : List
cursor string
prefix string
Résultat List
Exemple #1
0
        public ScaleoutSubscription(string identity,
                                    IList <string> eventKeys,
                                    string cursor,
                                    IList <ScaleoutMappingStore> stores,
                                    Func <MessageResult, object, Task <bool> > callback,
                                    int maxMessages,
                                    IPerformanceCounterManager counters,
                                    object state)
            : base(identity, eventKeys, callback, maxMessages, counters, state)
        {
            if (stores == null)
            {
                throw new ArgumentNullException("stores");
            }

            _stores = stores;

            List <Cursor> cursors = null;

            if (String.IsNullOrEmpty(cursor))
            {
                cursors = new List <Cursor>(stores.Count);
                for (int i = 0; i < stores.Count; i++)
                {
                    cursors.Add(new Cursor(i.ToString(CultureInfo.InvariantCulture), stores[i].MaxKey));
                }
            }
            else
            {
                cursors = Cursor.GetCursors(cursor);
            }

            _cursors = cursors;
        }
Exemple #2
0
        public ScaleoutSubscription(string identity,
                                    IList <string> eventKeys,
                                    string cursor,
                                    IList <ScaleoutMappingStore> streams,
                                    Func <MessageResult, object, Task <bool> > callback,
                                    int maxMessages,
                                    ITraceManager traceManager,
                                    IPerformanceCounterManager counters,
                                    object state)
            : base(identity, eventKeys, callback, maxMessages, counters, state)
        {
            if (streams == null)
            {
                throw new ArgumentNullException("streams");
            }

            if (traceManager == null)
            {
                throw new ArgumentNullException(nameof(traceManager));
            }

            _streams = streams;

            List <Cursor> cursors = null;

            if (String.IsNullOrEmpty(cursor))
            {
                cursors = new List <Cursor>();
            }
            else
            {
                cursors = Cursor.GetCursors(cursor, _scaleoutCursorPrefix);

                // If the cursor had a default prefix, "d-", cursors might be null
                if (cursors == null)
                {
                    cursors = new List <Cursor>();
                }
                // If the streams don't match the cursors then throw it out
                else if (cursors.Count != _streams.Count)
                {
                    cursors.Clear();
                }
            }

            // No cursors so we need to populate them from the list of streams
            if (cursors.Count == 0)
            {
                for (int streamIndex = 0; streamIndex < _streams.Count; streamIndex++)
                {
                    AddCursorForStream(streamIndex, cursors);
                }
            }

            _cursors = cursors;
            _trace   = traceManager["SignalR." + typeof(ScaleoutSubscription).Name];
        }
Exemple #3
0
        public DefaultSubscription(string identity,
                                   IList <string> eventKeys,
                                   TopicLookup topics,
                                   string cursor,
                                   Func <MessageResult, object, Task <bool> > callback,
                                   int maxMessages,
                                   IStringMinifier stringMinifier,
                                   IPerformanceCounterManager counters,
                                   object state) :
            base(identity, eventKeys, callback, maxMessages, counters, state)
        {
            _stringMinifier = stringMinifier;

            if (String.IsNullOrEmpty(cursor))
            {
                _cursors = GetCursorsFromEventKeys(EventKeys, topics);
            }
            else
            {
                // Ensure delegate continues to use the C# Compiler static delegate caching optimization.
                _cursors = Cursor.GetCursors(cursor, _defaultCursorPrefix, (k, s) => UnminifyCursor(k, s), stringMinifier) ?? GetCursorsFromEventKeys(EventKeys, topics);
            }

            _cursorTopics = new List <Topic>();

            if (!String.IsNullOrEmpty(cursor))
            {
                // Update all of the cursors so we're within the range
                for (int i = _cursors.Count - 1; i >= 0; i--)
                {
                    Cursor c = _cursors[i];
                    Topic  topic;
                    if (!EventKeys.Contains(c.Key))
                    {
                        _cursors.Remove(c);
                    }
                    else if (!topics.TryGetValue(_cursors[i].Key, out topic) || _cursors[i].Id > topic.Store.GetMessageCount())
                    {
                        UpdateCursor(c.Key, 0);
                    }
                }
            }

            // Add dummy entries so they can be filled in
            for (int i = 0; i < _cursors.Count; i++)
            {
                _cursorTopics.Add(null);
            }
        }