Skip to content

Commit

Permalink
swim: interpret no-payload as nil
Browse files Browse the repository at this point in the history
Empty string as a no-payload-flag was not a good idea, because
then a user can't write something like:

    if not member:payload() then
        ...

Follow up #3234
  • Loading branch information
Gerold103 committed May 21, 2019
1 parent 2dc1af7 commit a1ec38f
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 10 deletions.
8 changes: 6 additions & 2 deletions src/lua/swim.lua
Expand Up @@ -338,7 +338,11 @@ end
--
local function swim_member_payload_str(m)
local ptr = swim_check_member(m, 'member:payload_str()')
return ffi.string(swim_member_payload_raw(ptr))
local cdata, size = swim_member_payload_raw(ptr)
if size > 0 then
return ffi.string(swim_member_payload_raw(ptr))
end
return nil
end

--
Expand Down Expand Up @@ -367,7 +371,7 @@ local function swim_member_payload(m)
local cdata, size = swim_member_payload_raw(ptr)
local ok, result
if size == 0 then
result = ''
result = nil
else
ok, result = pcall(msgpack.decode, cdata, size)
if not ok then
Expand Down
14 changes: 7 additions & 7 deletions test/swim/swim.result
Expand Up @@ -429,11 +429,11 @@ s:payload_cdata()
...
s:payload_str()
---
-
- null
...
s:payload()
---
-
- null
...
s:is_dropped()
---
Expand Down Expand Up @@ -536,7 +536,7 @@ s:set_payload()
...
self:payload()
---
-
- null
...
s:set_payload({a = 100})
---
Expand Down Expand Up @@ -603,7 +603,7 @@ s:set_payload()
...
self:payload()
---
-
- null
...
s:set_payload(100)
---
Expand All @@ -619,7 +619,7 @@ s:set_payload_raw()
...
self:payload()
---
-
- null
...
-- Raw payload setting can be used when MessagePack is not needed,
-- or already encoded.
Expand Down Expand Up @@ -724,7 +724,7 @@ s1_view = s2:member_by_uuid(uuid(1))
...
s1_view:payload()
---
-
- null
...
s1_view:incarnation()
---
Expand Down Expand Up @@ -878,7 +878,7 @@ s1_self:payload() == p
---
- true
...
while s1_view:payload() == '' do fiber.sleep(0.01) end
while not s1_view:payload() do fiber.sleep(0.01) end
---
...
p = s1_view:payload()
Expand Down
2 changes: 1 addition & 1 deletion test/swim/swim.test.lua
Expand Up @@ -284,7 +284,7 @@ s1:set_payload({a = 100})
p = s1_self:payload()
s1_self:payload() == p

while s1_view:payload() == '' do fiber.sleep(0.01) end
while not s1_view:payload() do fiber.sleep(0.01) end
p = s1_view:payload()
s1_view:payload() == p

Expand Down

0 comments on commit a1ec38f

Please sign in to comment.