adjusted codecs to higher level api use

This commit is contained in:
keldu.magnus 2020-11-16 22:54:24 +01:00
parent c3c325d662
commit f18fb0a052
2 changed files with 33 additions and 23 deletions

View File

@ -66,8 +66,9 @@ template <typename... T> struct JsonEncodeImpl<MessageList<T...>> {
}
}
if constexpr ((i + 1u) < sizeof...(T)) {
if (buffer.push(',').failed()) {
return recoverableError("Failed buffer push");
Error error = buffer.push(',');
if (error.failed()) {
return error;
}
}
{
@ -83,16 +84,18 @@ template <typename... T> struct JsonEncodeImpl<MessageList<T...>> {
static Error encode(typename MessageList<T...>::Reader data,
Buffer &buffer) {
if (buffer.push('[').failed()) {
return recoverableError("Failed buffer push");
Error error = buffer.push('[');
if (error.failed()) {
return error;
}
Error error =
error =
JsonEncodeImpl<MessageList<T...>>::encodeMembers<0>(data, buffer);
if (error.failed()) {
return error;
}
if (buffer.push(']').failed()) {
return recoverableError("Failed buffer push");
error = buffer.push(']');
if (error.failed()) {
return error;
}
return noError();
}
@ -143,8 +146,9 @@ struct JsonEncodeImpl<MessageStruct<MessageStructMember<V, K>...>> {
}
}
if constexpr ((i + 1u) < sizeof...(V)) {
if (buffer.push(',').failed()) {
return recoverableError("Failed buffer push");
Error error = buffer.push(',');
if (error.failed()) {
return error;
}
}
{
@ -161,17 +165,18 @@ struct JsonEncodeImpl<MessageStruct<MessageStructMember<V, K>...>> {
static Error
encode(typename MessageStruct<MessageStructMember<V, K>...>::Reader data,
Buffer &buffer) {
if (buffer.push('{').failed()) {
return recoverableError("Failed buffer push");
}
Error error =
JsonEncodeImpl<MessageStruct<MessageStructMember<V, K>...>>::
encodeMembers<0>(data, buffer);
Error error = buffer.push('{');
if (error.failed()) {
return error;
}
if (buffer.push('}').failed()) {
return recoverableError("Failed buffer push");
error = JsonEncodeImpl<MessageStruct<MessageStructMember<V, K>...>>::
encodeMembers<0>(data, buffer);
if (error.failed()) {
return error;
}
error = buffer.push('}');
if (error.failed()) {
return error;
}
return noError();
}

View File

@ -34,10 +34,13 @@ template <> struct ProtoKelEncodeImpl<MessagePrimitive<std::string>> {
Buffer &buffer) {
std::string_view view = data.get();
size_t size = view.size();
if ((sizeof(size) + size) > buffer.writeCompositeLength()) {
return recoverableError("Buffer too small");
Error error = buffer.writeRequireLength(sizeof(size) + size);
if (error.failed()) {
return error;
}
Error error = StreamValue<size_t>::encode(size, buffer);
error = StreamValue<size_t>::encode(size, buffer);
if (error.failed()) {
return error;
}
@ -373,10 +376,12 @@ public:
// Check the size of the packet for the first
// message length description
if (buffer.writeCompositeLength() <
(packet_length + sizeof(msg_packet_length_t))) {
return recoverableError("Buffer too small");
Error error = buffer.writeRequireLength(packet_length +
sizeof(msg_packet_length_t));
if (error.failed()) {
return error;
}
{
Error error =
StreamValue<msg_packet_length_t>::encode(packet_length, buffer);