diff --git a/dotnet/src/ZB.MOM.NatsNet.Server/JetStream/JetStreamErrors.GeneratedConstructors.cs b/dotnet/src/ZB.MOM.NatsNet.Server/JetStream/JetStreamErrors.GeneratedConstructors.cs index 10ac13f..703b09d 100644 --- a/dotnet/src/ZB.MOM.NatsNet.Server/JetStream/JetStreamErrors.GeneratedConstructors.cs +++ b/dotnet/src/ZB.MOM.NatsNet.Server/JetStream/JetStreamErrors.GeneratedConstructors.cs @@ -512,6 +512,150 @@ public static partial class JsApiErrors return Clone(ConsumerPullNotDurable); } + public static JsApiError NewJSConsumerPullRequiresAckError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerPullRequiresAck); + } + + public static JsApiError NewJSConsumerPullWithRateLimitError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerPullWithRateLimit); + } + + public static JsApiError NewJSConsumerPushMaxWaitingError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerPushMaxWaiting); + } + + public static JsApiError NewJSConsumerPushWithPriorityGroupError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerPushWithPriorityGroup); + } + + public static JsApiError NewJSConsumerReplacementWithDifferentNameError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerReplacementWithDifferentName); + } + + public static JsApiError NewJSConsumerReplayPolicyInvalidError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerReplayPolicyInvalid); + } + + public static JsApiError NewJSConsumerReplicasExceedsStreamError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerReplicasExceedsStream); + } + + public static JsApiError NewJSConsumerReplicasShouldMatchStreamError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerReplicasShouldMatchStream); + } + + public static JsApiError NewJSConsumerSmallHeartbeatError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerSmallHeartbeat); + } + + public static JsApiError NewJSConsumerWQConsumerNotDeliverAllError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerWQConsumerNotDeliverAll); + } + + public static JsApiError NewJSConsumerWQConsumerNotUniqueError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerWQConsumerNotUnique); + } + + public static JsApiError NewJSConsumerWQMultipleUnfilteredError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerWQMultipleUnfiltered); + } + + public static JsApiError NewJSConsumerWQRequiresExplicitAckError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerWQRequiresExplicitAck); + } + + public static JsApiError NewJSConsumerWithFlowControlNeedsHeartbeatsError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerWithFlowControlNeedsHeartbeats); + } + + public static JsApiError NewJSInsufficientResourcesError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(InsufficientResources); + } + + public static JsApiError NewJSMaximumConsumersLimitError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(MaximumConsumersLimit); + } + + public static JsApiError NewJSMaximumStreamsLimitError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(MaximumStreamsLimit); + } + + public static JsApiError NewJSMemoryResourcesExceededError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(MemoryResourcesExceeded); + } + public static JsApiError NewJSAtomicPublishTooLargeBatchError(object? size, params ErrorOption[] opts) { if (ParseOpts(opts) is JsApiError overridden) @@ -624,4 +768,20 @@ public static partial class JsApiErrors return NewWithTags(ConsumerOfflineReason, "{err}", err); } + public static JsApiError NewJSConsumerStoreFailedError(Exception err, params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return NewWithTags(ConsumerStoreFailed, "{err}", err); + } + + public static JsApiError NewJSInvalidJSONError(Exception err, params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return NewWithTags(InvalidJSON, "{err}", err); + } + } diff --git a/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/JetStream/JetStreamErrorsGeneratedConstructorsTests.cs b/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/JetStream/JetStreamErrorsGeneratedConstructorsTests.cs index 12b831f..2b2fc95 100644 --- a/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/JetStream/JetStreamErrorsGeneratedConstructorsTests.cs +++ b/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/JetStream/JetStreamErrorsGeneratedConstructorsTests.cs @@ -135,4 +135,37 @@ public sealed class JetStreamErrorsGeneratedConstructorsTests fromOverride.Description.ShouldBe(expected.Description); ReferenceEquals(fromOverride, expected).ShouldBeFalse(); } + + [Fact] + public void ConstructorSurface_Group05() + { + JsApiErrors.NewJSConsumerPullRequiresAckError().ErrCode.ShouldBe(JsApiErrors.ConsumerPullRequiresAck.ErrCode); + JsApiErrors.NewJSConsumerPullWithRateLimitError().ErrCode.ShouldBe(JsApiErrors.ConsumerPullWithRateLimit.ErrCode); + JsApiErrors.NewJSConsumerPushMaxWaitingError().ErrCode.ShouldBe(JsApiErrors.ConsumerPushMaxWaiting.ErrCode); + JsApiErrors.NewJSConsumerPushWithPriorityGroupError().ErrCode.ShouldBe(JsApiErrors.ConsumerPushWithPriorityGroup.ErrCode); + JsApiErrors.NewJSConsumerReplacementWithDifferentNameError().ErrCode.ShouldBe(JsApiErrors.ConsumerReplacementWithDifferentName.ErrCode); + JsApiErrors.NewJSConsumerReplayPolicyInvalidError().ErrCode.ShouldBe(JsApiErrors.ConsumerReplayPolicyInvalid.ErrCode); + JsApiErrors.NewJSConsumerReplicasExceedsStreamError().ErrCode.ShouldBe(JsApiErrors.ConsumerReplicasExceedsStream.ErrCode); + JsApiErrors.NewJSConsumerReplicasShouldMatchStreamError().ErrCode.ShouldBe(JsApiErrors.ConsumerReplicasShouldMatchStream.ErrCode); + JsApiErrors.NewJSConsumerSmallHeartbeatError().ErrCode.ShouldBe(JsApiErrors.ConsumerSmallHeartbeat.ErrCode); + JsApiErrors.NewJSConsumerWQConsumerNotDeliverAllError().ErrCode.ShouldBe(JsApiErrors.ConsumerWQConsumerNotDeliverAll.ErrCode); + JsApiErrors.NewJSConsumerWQConsumerNotUniqueError().ErrCode.ShouldBe(JsApiErrors.ConsumerWQConsumerNotUnique.ErrCode); + JsApiErrors.NewJSConsumerWQMultipleUnfilteredError().ErrCode.ShouldBe(JsApiErrors.ConsumerWQMultipleUnfiltered.ErrCode); + JsApiErrors.NewJSConsumerWQRequiresExplicitAckError().ErrCode.ShouldBe(JsApiErrors.ConsumerWQRequiresExplicitAck.ErrCode); + JsApiErrors.NewJSConsumerWithFlowControlNeedsHeartbeatsError().ErrCode.ShouldBe(JsApiErrors.ConsumerWithFlowControlNeedsHeartbeats.ErrCode); + JsApiErrors.NewJSInsufficientResourcesError().ErrCode.ShouldBe(JsApiErrors.InsufficientResources.ErrCode); + JsApiErrors.NewJSMaximumConsumersLimitError().ErrCode.ShouldBe(JsApiErrors.MaximumConsumersLimit.ErrCode); + JsApiErrors.NewJSMaximumStreamsLimitError().ErrCode.ShouldBe(JsApiErrors.MaximumStreamsLimit.ErrCode); + JsApiErrors.NewJSMemoryResourcesExceededError().ErrCode.ShouldBe(JsApiErrors.MemoryResourcesExceeded.ErrCode); + + JsApiErrors.NewJSConsumerStoreFailedError(new InvalidOperationException("store failed")).Description.ShouldBe("error creating store for consumer: store failed"); + JsApiErrors.NewJSInvalidJSONError(new InvalidOperationException("malformed")).Description.ShouldBe("invalid JSON: malformed"); + + var expected = new JsApiError { Code = 495, ErrCode = 9094, Description = "override-5" }; + var fromOverride = JsApiErrors.NewJSConsumerPullRequiresAckError(JsApiErrors.Unless(expected)); + fromOverride.Code.ShouldBe(expected.Code); + fromOverride.ErrCode.ShouldBe(expected.ErrCode); + fromOverride.Description.ShouldBe(expected.Description); + ReferenceEquals(fromOverride, expected).ShouldBeFalse(); + } } diff --git a/porting.db b/porting.db index 9c9a763..cb49630 100644 Binary files a/porting.db and b/porting.db differ diff --git a/tools/generate-jetstream-errors.sh b/tools/generate-jetstream-errors.sh index 95d3845..149aa4d 100755 --- a/tools/generate-jetstream-errors.sh +++ b/tools/generate-jetstream-errors.sh @@ -68,6 +68,24 @@ simple_methods=( "NewJSConsumerPriorityGroupWithPolicyNoneError|ConsumerPriorityGroupWithPolicyNone" "NewJSConsumerPriorityPolicyWithoutGroupError|ConsumerPriorityPolicyWithoutGroup" "NewJSConsumerPullNotDurableError|ConsumerPullNotDurable" + "NewJSConsumerPullRequiresAckError|ConsumerPullRequiresAck" + "NewJSConsumerPullWithRateLimitError|ConsumerPullWithRateLimit" + "NewJSConsumerPushMaxWaitingError|ConsumerPushMaxWaiting" + "NewJSConsumerPushWithPriorityGroupError|ConsumerPushWithPriorityGroup" + "NewJSConsumerReplacementWithDifferentNameError|ConsumerReplacementWithDifferentName" + "NewJSConsumerReplayPolicyInvalidError|ConsumerReplayPolicyInvalid" + "NewJSConsumerReplicasExceedsStreamError|ConsumerReplicasExceedsStream" + "NewJSConsumerReplicasShouldMatchStreamError|ConsumerReplicasShouldMatchStream" + "NewJSConsumerSmallHeartbeatError|ConsumerSmallHeartbeat" + "NewJSConsumerWQConsumerNotDeliverAllError|ConsumerWQConsumerNotDeliverAll" + "NewJSConsumerWQConsumerNotUniqueError|ConsumerWQConsumerNotUnique" + "NewJSConsumerWQMultipleUnfilteredError|ConsumerWQMultipleUnfiltered" + "NewJSConsumerWQRequiresExplicitAckError|ConsumerWQRequiresExplicitAck" + "NewJSConsumerWithFlowControlNeedsHeartbeatsError|ConsumerWithFlowControlNeedsHeartbeats" + "NewJSInsufficientResourcesError|InsufficientResources" + "NewJSMaximumConsumersLimitError|MaximumConsumersLimit" + "NewJSMaximumStreamsLimitError|MaximumStreamsLimit" + "NewJSMemoryResourcesExceededError|MemoryResourcesExceeded" ) templated_methods=( @@ -85,6 +103,8 @@ templated_methods=( "NewJSConsumerMetadataLengthError|object?|limit|ConsumerMetadataLength|{limit}" "NewJSConsumerNameTooLongError|object?|max|ConsumerNameTooLong|{max}" "NewJSConsumerOfflineReasonError|Exception|err|ConsumerOfflineReason|{err}" + "NewJSConsumerStoreFailedError|Exception|err|ConsumerStoreFailed|{err}" + "NewJSInvalidJSONError|Exception|err|InvalidJSON|{err}" ) {