File: Rpc\RpcFault.cs
Web Access
Project: src\src\Aspire.Hosting.Native.Server\Aspire.Hosting.Native.Server.csproj (Aspire.Hosting.Native.Server)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
namespace Aspire.Hosting.Native.Rpc;
 
/// <summary>Creates classified failures without disclosing caller inputs or implementation exception messages.</summary>
internal sealed class RpcFault(string faultCode, string message) : InvalidOperationException(message)
{
    public const string ProviderTimeoutCode = "PROVIDER_TIMEOUT";
    public string FaultCode { get; } = faultCode;
 
    public static RpcFault InvalidArgument(string message) => new("INVALID_ARGUMENT", message);
    public static RpcFault InvalidHandle(string message) => new("INVALID_HANDLE", message);
    public static RpcFault HandleNotFound(string message) => new("HANDLE_NOT_FOUND", message);
    public static RpcFault HandleLimit(string message) => new("HANDLE_LIMIT", message);
    public static RpcFault TypeMismatch(string message) => new("TYPE_MISMATCH", message);
    public static RpcFault UnknownCapability(string message) => new("UNKNOWN_CAPABILITY", message);
    public static RpcFault CapabilityNotFound(string message) => new("CAPABILITY_NOT_FOUND", message);
    public static RpcFault Unauthenticated(string message) => new("UNAUTHENTICATED", message);
    public static RpcFault MethodNotFound(string message) => new("METHOD_NOT_FOUND", message);
    public static RpcFault NotSupported(string message) => new("NOT_SUPPORTED", message);
    public static RpcFault RpcBusy(string message) => new("RPC_BUSY", message);
    public static RpcFault RequestTooLarge(string message) => new("REQUEST_TOO_LARGE", message);
    public static RpcFault ProviderLimit(string message) => new("PROVIDER_LIMIT", message);
    public static RpcFault ProviderRegistrationRejected(string message) => new("PROVIDER_REGISTRATION_REJECTED", message);
    public static RpcFault ProviderConflict(string message) => new("PROVIDER_CONFLICT", message);
    public static RpcFault ProviderTimeout(string message) => new(ProviderTimeoutCode, message);
    public static RpcFault InvalidRequest(string message) => new("INVALID_REQUEST", message);
    public static RpcFault ProviderLifecycleCancelled(string message) => new("PROVIDER_LIFECYCLE_CANCELLED", message);
    public static RpcFault ProviderLifecycleTimeout(string message) => new("PROVIDER_LIFECYCLE_TIMEOUT", message);
    public static RpcFault ProviderLifecycleFailed(string message) => new("PROVIDER_LIFECYCLE_FAILED", message);
    public static RpcFault ProviderDisconnected(string message) => new("PROVIDER_DISCONNECTED", message);
    public static RpcFault ProviderFailed(string message) => new("PROVIDER_FAILED", message);
    public static RpcFault LifecycleAuthorityRequired(string message) => new("LIFECYCLE_AUTHORITY_REQUIRED", message);
    public static RpcFault ProviderDisposalFailed(string message) => new("PROVIDER_DISPOSAL_FAILED", message);
    public static RpcFault ProviderMetadataInvalid(string message) => new("PROVIDER_METADATA_INVALID", message);
    public static RpcFault ProviderMetadataUnsupported(string message) => new("PROVIDER_METADATA_UNSUPPORTED", message);
}