最近在研究lua-resty-*库,在使用ngx.socket.tcp这个API时,有以下几个问题请教大家一下
ok, err = tcpsock:connect()
ok, err = tcpsock:close()
ok, err = tcpsock:setkeepalive()
1.像上述这些API的调用,是通过ok的真假来判断调用是否成功还是通过err?
我倾向于用ok来判断,要不然设置ok这个返回值也就没有意义了
bytes, err = tcpsock:send()
data, err, partial = tcpsock:receive()
iterator = tcpsock:receiveuntil()
data, err, partial = iterator()
count, err = tcpsock:getreusedtimes()
2.像上述这些API,是通过像bytes,data,count这些数量值来判断调用是否成功还是通过err?还是联合判断?
如果用数量值来判断,当没有数据产生时,数量值可能是nil也可能是"0"(具体要看底层是怎么实现的,这里假设用户对这个行为一无所知),那么执行not bytes(或data,count),针对上述这两种情况会产生不一样的结果,存在歧义,所以我倾向于用err,不过这样做的话要保证调用失败时,一定要有错误信息在err上产生,这个有保证吗?
tcpsock:settimeout()
tcpsock:setoption()
3.这些调用不需要判断是否成功吗?我看语法里没有返回值