/// <summary> /// Removes a handler from the registry, if possible. /// </summary> /// <param name="handler">Handler to remove.</param> public void RemoveHandler(INetworkPackageHandler handler) { foreach (Type packageType in handler.packageTypes) { List <INetworkPackageHandler> handlers; if (!_handlers.TryGetValue(packageType, out handlers) || !handlers.Contains(handler)) { continue; } handlers.Remove(handler); } }
/// <summary> /// Adds a handler to the registry. Adding a handler multiple times is prevented. /// </summary> /// <param name="handler">Handler to add.</param> public void AddHandler(INetworkPackageHandler handler) { foreach (Type packageType in handler.packageTypes) { List <INetworkPackageHandler> handlers; if (!_handlers.TryGetValue(packageType, out handlers)) { _handlers[packageType] = new List <INetworkPackageHandler>(); handlers = _handlers[packageType]; } if (handlers.Contains(handler)) { continue; } handlers.Add(handler); } }