Software /
code /
prosody
Annotate
tools/linedebug.lua @ 11741:dcf38ac6a38c
net.server: Add a predrain callaback just before writes
Allows sneaking in things in the write buffer just before it's sent to
the network stack. For example ack requests, compression flushes or
other things that make sense to send after stanzas or other things.
This ensures any additional trailing data sent is included in the same
write, and possibly the same TCP packet. Other methods used such as
timers or nextTick might not have the same effect as it depends on
scheduling.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Mon, 16 Aug 2021 12:34:52 +0200 |
parent | 11193:5850d24a4ad3 |
rev | line source |
---|---|
11193
5850d24a4ad3
tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
1 local data = {} |
5850d24a4ad3
tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
2 local getinfo = debug.getinfo; |
5850d24a4ad3
tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
3 local function linehook(ev, li) |
5850d24a4ad3
tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
4 local S = getinfo(2, "S"); |
5850d24a4ad3
tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
5 if S and S.source and S.source:match"^@" then |
5850d24a4ad3
tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
6 local file = S.source:sub(2); |
5850d24a4ad3
tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
7 local lines = data[file]; |
5850d24a4ad3
tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
8 if not lines then |
5850d24a4ad3
tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
9 lines = {}; |
5850d24a4ad3
tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
10 data[file] = lines; |
5850d24a4ad3
tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
11 for line in io.lines(file) do |
5850d24a4ad3
tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
12 lines[#lines+1] = line; |
5850d24a4ad3
tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
13 end |
5850d24a4ad3
tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
14 end |
5850d24a4ad3
tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
15 io.stderr:write(ev, " ", file, " ", li, " ", lines[li], "\n"); |
5850d24a4ad3
tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
16 end |
5850d24a4ad3
tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
17 end |
5850d24a4ad3
tools/linedebug: Print each line of source executed
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
18 debug.sethook(linehook, "l"); |