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(); } }
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); }
/// <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); }
/// <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); }