Skip to content

Commit

Permalink
Add some exception classes to be a bit more specific about errors
Browse files Browse the repository at this point in the history
  • Loading branch information
lukebakken committed Sep 7, 2023
1 parent b92e671 commit 494a0eb
Show file tree
Hide file tree
Showing 6 changed files with 40 additions and 4 deletions.
2 changes: 1 addition & 1 deletion RabbitMQ.Stream.Client/Client.cs
Original file line number Diff line number Diff line change
Expand Up @@ -597,7 +597,7 @@ private void HandleCorrelatedCommand(ushort tag, ref ReadOnlySequence<byte> fram
{
if (command.CorrelationId == uint.MaxValue)
{
throw new Exception($"unhandled incoming command {command.GetType()}");
throw new UnknownCommandException($"unhandled incoming command {command.GetType()}");
}

if (requests.TryRemove(command.CorrelationId, out var tsc))
Expand Down
16 changes: 16 additions & 0 deletions RabbitMQ.Stream.Client/ClientExceptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -109,4 +109,20 @@ public UnsupportedOperationException(string s)
{
}
}

public class UnknownCommandException : Exception
{
public UnknownCommandException(string s)
: base(s)
{
}
}

public class CrcException : Exception
{
public CrcException(string s)
: base(s)
{
}
}
}
4 changes: 2 additions & 2 deletions RabbitMQ.Stream.Client/Deliver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ internal static int Read(ref SequenceReader<byte> reader, byte entryType, out Su
//see the Chunk.Read for more details about this check
if (!reader.TryCopyTo(memory.Span))
{
throw new Exception(
throw new NotEnoughDataException(
$"SubEntryChunk Not enough data, sourceLength: {reader.Length}, memoryLen: {memory.Length}, dataLen: {dataLen}");
}

Expand Down Expand Up @@ -171,7 +171,7 @@ internal static int Read(ReadOnlySequence<byte> frame, out Chunk chunk)
// so here we should have all the data
if (!reader.TryCopyTo(memory.Span))
{
throw new Exception(
throw new NotEnoughDataException(
$"Chunk: Not enough data, sourceLength: {reader.Length}, memoryLen: {memory.Length}, dataLen: {dataLen}");
}

Expand Down
16 changes: 16 additions & 0 deletions RabbitMQ.Stream.Client/InternalExceptions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// This source code is dual-licensed under the Apache License, version
// 2.0, and the Mozilla Public License, version 2.0.
// Copyright (c) 2007-2023 VMware, Inc.

using System;

namespace RabbitMQ.Stream.Client
{
internal class NotEnoughDataException : Exception
{
public NotEnoughDataException(string s)
: base(s)
{
}
}
}
4 changes: 4 additions & 0 deletions RabbitMQ.Stream.Client/PublicAPI.Unshipped.txt
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ RabbitMQ.Stream.Client.ConsumerFilter.PostFilter.get -> System.Func<RabbitMQ.Str
RabbitMQ.Stream.Client.ConsumerFilter.PostFilter.set -> void
RabbitMQ.Stream.Client.ConsumerFilter.Values.get -> System.Collections.Generic.List<string>
RabbitMQ.Stream.Client.ConsumerFilter.Values.set -> void
RabbitMQ.Stream.Client.CrcException
RabbitMQ.Stream.Client.CrcException.CrcException(string s) -> void
RabbitMQ.Stream.Client.HashRoutingMurmurStrategy.Route(RabbitMQ.Stream.Client.Message message, System.Collections.Generic.List<string> partitions) -> System.Threading.Tasks.Task<System.Collections.Generic.List<string>>
RabbitMQ.Stream.Client.IConsumerConfig.Crc32.get -> RabbitMQ.Stream.Client.ICrc32
RabbitMQ.Stream.Client.IConsumerConfig.Crc32.set -> void
Expand Down Expand Up @@ -117,6 +119,8 @@ RabbitMQ.Stream.Client.StreamStatsResponse.Write(System.Span<byte> span) -> int
RabbitMQ.Stream.Client.StreamSystem.StreamStats(string stream) -> System.Threading.Tasks.Task<RabbitMQ.Stream.Client.StreamStats>
RabbitMQ.Stream.Client.StreamSystemConfig.AuthMechanism.get -> RabbitMQ.Stream.Client.AuthMechanism
RabbitMQ.Stream.Client.StreamSystemConfig.AuthMechanism.set -> void
RabbitMQ.Stream.Client.UnknownCommandException
RabbitMQ.Stream.Client.UnknownCommandException.UnknownCommandException(string s) -> void
RabbitMQ.Stream.Client.UnsupportedOperationException
RabbitMQ.Stream.Client.UnsupportedOperationException.UnsupportedOperationException(string s) -> void
static RabbitMQ.Stream.Client.Connection.Create(System.Net.EndPoint endpoint, System.Func<System.Memory<byte>, System.Threading.Tasks.Task> commandCallback, System.Func<string, System.Threading.Tasks.Task> closedCallBack, RabbitMQ.Stream.Client.SslOption sslOption, Microsoft.Extensions.Logging.ILogger logger) -> System.Threading.Tasks.Task<RabbitMQ.Stream.Client.Connection>
Expand Down
2 changes: 1 addition & 1 deletion RabbitMQ.Stream.Client/RawConsumer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -476,7 +476,7 @@ private async Task Init()
_logger.LogError(
"CRC32 does not match, server crc {ChunkCrc}, local crc {CrcCalculated}, stream {Stream}",
deliver.Chunk.Crc, crcCalculated, _config.Stream);
throw new Exception(
throw new CrcException(
$"CRC32 does not match, server crc {deliver.Chunk.Crc}, local crc {crcCalculated}, " +
$"stream {_config.Stream}");
}
Expand Down

0 comments on commit 494a0eb

Please sign in to comment.