//--------------------------------------------------------------------- // Cadence domain related operations. /// <summary> /// Registers a Cadence domain using the <see cref="InternalRegisterDomainRequest"/> information passed. /// </summary> /// <param name="request">The domain properties.</param> /// <returns>The tracking <see cref="Task"/>.</returns> /// <exception cref="CadenceDomainAlreadyExistsException">Thrown if the domain already exists.</exception> /// <exception cref="CadenceBadRequestException">Thrown when the request is invalid.</exception> /// <exception cref="CadenceInternalServiceException">Thrown for internal Cadence cluster problems.</exception> /// <exception cref="CadenceServiceBusyException">Thrown when Cadence is too busy.</exception> private async Task RegisterDomainAsync(InternalRegisterDomainRequest request) { var domainRegisterRequest = new DomainRegisterRequest() { Name = request.Name, Description = request.Description, OwnerEmail = request.OwnerEmail, RetentionDays = request.RetentionDays, SecurityToken = request.SecurityToken }; var reply = await CallProxyAsync(domainRegisterRequest); reply.ThrowOnError(); }
/// <summary> /// Handles emulated <see cref="DomainRegisterRequest"/> messages. /// </summary> /// <param name="request">The received message.</param> /// <returns>The tracking <see cref="Task"/>.</returns> private async Task OnEmulatedDomainRegisterRequestAsync(DomainRegisterRequest request) { var reply = new DomainRegisterReply(); if (string.IsNullOrEmpty(request.Name)) { await EmulatedLibraryClient.SendReplyAsync(request, new DomainRegisterReply() { Error = new CadenceBadRequestException("Invalid name.").ToCadenceError() }); await EmulatedLibraryClient.SendReplyAsync(request, new DomainRegisterReply()); return; } using (await emulationMutex.AcquireAsync()) { if (emulatedDomains.ContainsKey(request.Name)) { reply.Error = new CadenceDomainAlreadyExistsException($"Domain [{request.Name}] already exists.").ToCadenceError(); await EmulatedLibraryClient.SendReplyAsync(request, reply); return; } emulatedDomains.Add( request.Name, new EmulatedCadenceDomain() { Name = request.Name, Description = request.Description, OwnerEmail = request.OwnerEmail, Status = DomainStatus.Registered, Uuid = Guid.NewGuid().ToString("D"), EmitMetrics = request.EmitMetrics, RetentionDays = request.RetentionDays }); await EmulatedLibraryClient.SendReplyAsync(request, reply); } }