[Tarantool-patches] [PATCH 5/5] msgpuck: activate MP_EXT custom serializers

Nikita Pettik korablev at tarantool.org
Tue May 19 16:23:04 MSK 2020


On 14 May 23:27, Vladislav Shpilevoy wrote:
> Thanks for the review!
> 
> >> On 13/05/2020 23:06, Nikita Pettik wrote:
> >>> On 12 May 01:45, Vladislav Shpilevoy wrote:
> >>>> +
> >>>> +static int
> >>>> +msgpack_fprint_ext(FILE *file, const char **data, int depth)
> >>>> +{
> >>>> +	int8_t type;
> >>>> +	uint32_t len = mp_decode_extl(data, &type);
> >>>> +	switch(type) {
> >>>> +	case MP_DECIMAL:
> >>>> +		return mp_fprint_decimal(file, data, len);
> >>>> +	case MP_UUID:
> >>>> +		return mp_fprint_uuid(file, data, len);
> >>>> +	case MP_ERROR:
> >>>> +		return mp_fprint_error(file, data, depth);
> >>>> +	default:
> >>>> +		return fprintf(file, "undefined");
> >>>
> >>> I'd come up with more sensible message in case of "undefined" mp_ type.
> >>> For instance: ("undefined mgpack extension (%d)", type).
> >>
> >> This is not an error message.
> > 
> > I understand that. Still I stick to the point that simple "undefined"
> > looks poor.
> 
> Ok, I just noticed that you wrapped your proposal into (). It is not just
> a bare string or something else, that could be treated in 2 ways. Then I
> guess it is ok. Anyway both 'undefined', and parenthesis are JS JSON parsers
> features only. So by adding a few details we are not breaking normal JSON
> parsers any further.
> 
> I changed this commit, and added a new commit to the msgpuck patchset.
> The message is changed a little.
> 
> ====================
> diff --git a/src/box/msgpack.c b/src/box/msgpack.c
> index 37bb3920c..4013aec4c 100644
> --- a/src/box/msgpack.c
> +++ b/src/box/msgpack.c
> @@ -49,7 +49,8 @@ msgpack_fprint_ext(FILE *file, const char **data, int depth)
>  	case MP_ERROR:
>  		return mp_fprint_error(file, data, depth);
>  	default:
> -		return fprintf(file, "undefined");
> +		return fprintf(file, "(extension: type %d, len %u)", (int)type,
> +			       (unsigned)len);
>  	}
>  }
>  
> @@ -66,7 +67,8 @@ msgpack_snprint_ext(char *buf, int size, const char **data, int depth)
>  	case MP_ERROR:
>  		return mp_snprint_error(buf, size, data, depth);
>  	default:
> -		return snprintf(buf, size, "undefined");
> +		return snprintf(buf, size, "(extension: type %d, len %u)",
> +				(int)type, (unsigned)len);
>  	}
>  }
>  

LGTM.



More information about the Tarantool-patches mailing list