Skip to content

Commit 7492569

Browse files
author
Anatoly Popov
committed
fix: proper addressing for forward compatibility
1 parent e5d4429 commit 7492569

File tree

2 files changed

+20
-9
lines changed

2 files changed

+20
-9
lines changed

src/progaudi.tarantool/Converters/ErrorResponsePacketConverter.cs

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,9 @@
44

55
using ProGaudi.Tarantool.Client.Model.Enums;
66
using ProGaudi.Tarantool.Client.Model.Responses;
7-
using ProGaudi.Tarantool.Client.Utils;
87

98
namespace ProGaudi.Tarantool.Client.Converters
109
{
11-
1210
internal class ErrorResponsePacketConverter : IMsgPackConverter<ErrorResponse>
1311
{
1412
private IMsgPackConverter<Key> _keyConverter;
@@ -29,14 +27,26 @@ public ErrorResponse Read(IMsgPackReader reader)
2927
{
3028
string errorMessage = null;
3129
var length = reader.ReadMapLength();
32-
33-
var errorKey = _keyConverter.Read(reader);
34-
if (errorKey != Key.Error)
30+
31+
for (var i = 0; i < length; i++)
3532
{
36-
throw ExceptionHelper.UnexpectedKey(errorKey, Key.Error);
33+
var errorKey = _keyConverter.Read(reader);
34+
35+
switch (errorKey)
36+
{
37+
case Key.Error24:
38+
errorMessage = _stringConverter.Read(reader);
39+
break;
40+
case Key.Error:
41+
// TODO: add parsing of new error metadata
42+
reader.SkipToken();
43+
break;
44+
default:
45+
reader.SkipToken();
46+
break;
47+
}
3748
}
38-
errorMessage = _stringConverter.Read(reader);
39-
49+
4050
return new ErrorResponse(errorMessage);
4151
}
4252
}

src/progaudi.tarantool/Model/Enums/Key.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,9 @@ public enum Key : uint
2121

2222
// Response keys
2323
Data = 0x30,
24-
Error = 0x31,
24+
Error24 = 0x31,
2525
Metadata = 0x32,
26+
Error = 0x52,
2627

2728
// Sql keys
2829
SqlQueryText = 0x40,

0 commit comments

Comments
 (0)