/// <summary> /// Register a new Resource /// </summary> /// <param name="resource">Resource to register</param> /// <returns></returns> public Resource Register(Resource resource) { if (ContainsId(resource.ResourceId)) // Contains resource by Id { var existing = GetById(resource.ResourceId); Logger.LogError("Attempted to register resource ID {0} which already exists", resource.ResourceId); if (!(ResourceIdCollision?.Invoke(existing, resource)).GetValueOrDefault(false) ) // if FALSE or NULL, break -- otherwise override stop behavior { return(null); } } if (ContainsFingerprint(resource.DataFingerprint)) // Contains resource by fingerprint { var existing = GetByFingerprint(resource.DataFingerprint); Logger.LogError( "Attempted to register resource {0} fingerprint {1} which already exists at resource {2}", resource.ResourceId, resource.DataFingerprint, existing.ResourceId); if (!(ResourceFingerprintCollision?.Invoke(existing, resource)).GetValueOrDefault(false) ) // if FALSE or NULL, break -- otherwise override stop behavior { return(null); } } ResourcesById.TryAdd(resource.ResourceId, resource); ResourcesByFingerprint.TryAdd(resource.DataFingerprint, resource); Logger.LogDebug("Registered Resource {0} with fingerprint {1}", resource.ResourceId, resource.DataFingerprint); ResourceRegistered?.Invoke(this, resource); return(resource); }
public void On(ResourceRegistered e) { Id = e.ResourceId; Name = e.Name; }