Пример #1
0
        public async Task UpsertMetadataAsync(EventMetadata metadata)
        {
            _ = metadata ?? throw new ArgumentNullException(nameof(metadata));

            try
            {
                if (State.Metadata != null && metadata.ResourceUriString != this.GetPrimaryKeyString())
                {
                    throw new ResourceIdentityMismatchException("Metadata resource mismatch.");
                }

                State.Metadata = metadata;

                ISigmaAlgebra resourceList = GrainFactory.GetGrain <ISigmaAlgebra>("resourcelist");
                await resourceList.AddAsync(metadata.ResourceUriString);

                await WriteStateAsync();
            }
            catch (Exception ex)
            {
                await logger?.LogErrorAsync(ex, $"Pi-system UpdateMetadataAsync '{metadata.ResourceUriString}'");
                await NotifyErrorAsync(ex);

                throw;
            }
        }
Пример #2
0
        public async Task UpsertMetadataAsync(EventMetadata metadata)
        {
            if (metadata == null)
            {
                throw new ArgumentNullException("metadata");
            }

            if (State.Metadata != null && metadata.ResourceUriString != this.GetPrimaryKeyString())
            {
                Trace.TraceWarning("Resource metadata identifier mismatch failed for resource metadata upsert.");
                Exception ex = new ResourceIdentityMismatchException(String.Format("Resource metadata {0} does not match grain identity {1}", State.Metadata.ResourceUriString, this.GetPrimaryKeyString()));
                await NotifyErrorAsync(ex);

                throw ex;
            }

            State.Metadata = metadata;

            ISigmaAlgebra resourceList = GrainFactory.GetGrain <ISigmaAlgebra>("resourcelist");
            await resourceList.AddAsync(metadata.ResourceUriString);

            await WriteStateAsync();
        }