Beispiel #1
0
        public Priority GetPriority(BncsPacketId packetToSearch)
        {
            if (m_priorityMap.ContainsKey(packetToSearch))
            {
                return(m_priorityMap[packetToSearch]);
            }
            else
            {
                lock (syncObject)
                {
                    // do a double lookup; gain speed on cache hits by sacrificing a double-check
                    // on cache misses.
                    if (!m_priorityMap.ContainsKey(packetToSearch))
                    {
                        Priority result = default(Priority);
                        for (int i = m_providerList.Count - 1; i >= 0; i--)
                        {
                            IPacketPriorityProvider provider = m_providerList[i];
                            if (provider.Defines(packetToSearch))
                            {
                                result = provider.GetPriority(packetToSearch);
                                break;
                            }
                        }

                        m_priorityMap[packetToSearch] = result;
                        return(result);
                    }
                    else
                    {
                        return(m_priorityMap[packetToSearch]);
                    }
                }
            }
        }
        public void UnregisterProvider(IPacketPriorityProvider provider)
        {
            if (provider == null)
                throw new ArgumentNullException("provider");

            lock (syncObject)
            {
                m_providerList.Remove(provider);
                InvalidateDictionary();
            }
        }
Beispiel #3
0
        public void UnregisterProvider(IPacketPriorityProvider provider)
        {
            if (provider == null)
            {
                throw new ArgumentNullException("provider");
            }

            lock (syncObject)
            {
                m_providerList.Remove(provider);
                InvalidateDictionary();
            }
        }
 /// <summary>
 /// Registers a custom packet priority list for consideration during packet parsing.
 /// </summary>
 /// <param name="newProvider">The new priority provider to use for priority lookups.</param>
 /// <exception cref="ArgumentNullException">Thrown if <paramref name="newProvider"/> is <see langword="null" />.</exception>
 public void RegisterCustomPacketPriorities(IPacketPriorityProvider newProvider)
 {
     m_priorityProvider.RegisterNewProvider(newProvider);
 }
 /// <summary>
 /// Unregisters a custom packet priority list from consideration during packet parsing.
 /// </summary>
 /// <param name="providerToRemove">The priority provider to remove from consideration.</param>
 /// <exception cref="ArgumentNullException">Thrown if <paramref name="providerToRemove"/> is 
 /// <see langword="null" />.</exception>
 public void UnregisterCustomPacketPriorities(IPacketPriorityProvider providerToRemove)
 {
     m_priorityProvider.UnregisterProvider(providerToRemove);
 }
Beispiel #6
0
 /// <summary>
 /// Unregisters a custom packet priority list from consideration during packet parsing.
 /// </summary>
 /// <param name="providerToRemove">The priority provider to remove from consideration.</param>
 /// <exception cref="ArgumentNullException">Thrown if <paramref name="providerToRemove"/> is
 /// <see langword="null" />.</exception>
 public void UnregisterCustomPacketPriorities(IPacketPriorityProvider providerToRemove)
 {
     m_priorityProvider.UnregisterProvider(providerToRemove);
 }
Beispiel #7
0
 /// <summary>
 /// Registers a custom packet priority list for consideration during packet parsing.
 /// </summary>
 /// <param name="newProvider">The new priority provider to use for priority lookups.</param>
 /// <exception cref="ArgumentNullException">Thrown if <paramref name="newProvider"/> is <see langword="null" />.</exception>
 public void RegisterCustomPacketPriorities(IPacketPriorityProvider newProvider)
 {
     m_priorityProvider.RegisterNewProvider(newProvider);
 }