# # # patch "contrib/display_branches.lua" # from [f3f80b5d575e8709b7d9e6d9503b7e48c1d2b12c] # to [f3956e23c1af36a63d01fd5a16c6d2a090a29234] # ============================================================ --- contrib/display_branches.lua f3f80b5d575e8709b7d9e6d9503b7e48c1d2b12c +++ contrib/display_branches.lua f3956e23c1af36a63d01fd5a16c6d2a090a29234 @@ -4,33 +4,55 @@ -- -- Released as public domain -netsync_branches = {} -function note_netsync_start(nonce) - netsync_branches[nonce] = {} -end +do + netsync_branches = {} -function note_netsync_revision_received(new_id,revision,certs,nonce) - for _, item in pairs(certs) - do - note_netsync_cert_received(new_id,item.key,item.name,item.value,nonce) + function RL_note_netsync_cert_received(rev_id,key,name,value,nonce) + if name == "branch" then + if netsync_branches[nonce][value] == nil then + netsync_branches[nonce][value] = 1 + else + netsync_branches[nonce][value] = netsync_branches[nonce][value] + 1 + end + end end -end -function note_netsync_cert_received(rev_id,key,name,value,nonce) - if name == "branch" then - netsync_branches[nonce][value] = 1 - end -end + notifier = { + start = function(session_id,...) + netsync_branches[session_id] = {} + end, + revision_received = function(new_id,revision,certs,session_id) + for _, item in pairs(certs) do + RL_note_netsync_cert_received(new_id, + item.key, + item.name, + item.value, + session_id) + end + end, + cert_received = function(rev_id,key,name,value,session_id) + RL_note_netsync_cert_received(rev_id, + key,name,value, + session_id) + end, + ["end"] = function(session_id) + local first = true + for item, amount in pairs(netsync_branches[session_id]) + do + if first then + io.stderr:write("Affected branches:\n") + first = false + end + io.stderr:write(" ",item," (",amount,")\n") + end + netsync_branches[session_id] = nil + end + } -function note_netsync_end(nonce) - local first = true - for item, _ in pairs(netsync_branches[nonce]) - do - if first then - io.stderr:write("Affected branches:\n") - first = false - end - io.stderr:write(" "..item.."\n") + local v,m = push_netsync_notifier(notifier) + if not v then + error(m) + elseif m then + io.stderr:write("Warning: ",m,"\n") end - netsync_branches[nonce] = nil end