[tarantool-patches] Re: [PATCH 02/11] sio: remove unused functions, restyle code
Vladislav Shpilevoy
v.shpilevoy at tarantool.org
Wed Dec 5 00:29:07 MSK 2018
Hi! Thanks for the review.
On 03/12/2018 15:28, Vladimir Davydov wrote:
> On Fri, Nov 30, 2018 at 06:39:34PM +0300, Vladislav Shpilevoy wrote:
>> -/** Read up to 'count' bytes from a socket. */
>> ssize_t
>> sio_read(int fd, void *buf, size_t count)
>> {
>> ssize_t n = read(fd, buf, count);
>> - if (n < 0) {
>> - if (errno == EWOULDBLOCK)
>> - errno = EINTR;
>> - switch (errno) {
>> - case EAGAIN:
>> - case EINTR:
>> - break;
>> - /*
>> - * Happens typically when the client closes
>> - * socket on timeout without reading the previous
>> - * query's response completely. Treat the same as
>> - * EOF.
>> - */
>> - case ECONNRESET:
>> - errno = 0;
>> - n = 0;
>> - break;
>> - default:
>> - tnt_raise(SocketError, sio_socketname(fd),
>> - "read(%zd)", count);
>> - }
>> + if (n >= 0)
>> + return n;
>> + if (errno == EWOULDBLOCK)
>> + errno = EINTR;
>> + switch (errno) {
>> + case EAGAIN:
>> + case EINTR:
>> + break;
>> + /*
>> + * Happens typically when the client closes socket on
>> + * timeout without reading the previous query's response
>> + * completely. Treat the same as EOF.
>> + */
>> + case ECONNRESET:
>> + errno = 0;
>> + n = 0;
>> + break;
>> + default:
>> + tnt_raise(SocketError, sio_socketname(fd), "read(%zd)", count);
>
> If I had to write this function myself, I'd probably write it the same
> way as you intend to patch it, however it isn't worth polluting the
> history now. Please revert this change and all other changes that exist
> solely to make the code conform to your taste. The only thing that's
> worth doing now is removing unused functions, because otherwise you'd
> have to remove exceptions from them, too. I wouldn't even touch the
> comments - they look fine to me, as a matter of fact.
>
>> -int sio_setfl(int fd, int flag, int on);
>> +/**
>> + * Set a file descriptor flag. A wrapper for
>> + * fcntl(F_SETFL, flag | fcntl(F_GETFL)), but sets diagnostics on
>> + * error.
>> + */
>> +int
>> +sio_setfl(int fd, int flag);
>
> This makes the API kinda lopsided - you can set a flag, but you can't
> clear it. Please leave it as is.
It is always 1 everywhere. Makes no sense to provide an ability
to unset and I can not imagine when we could need such 'feature'.
But as you wish. Done. See v2 in a new thread. Too many changes to
paste them here.
More information about the Tarantool-patches
mailing list