Mercurial > prosody-modules
comparison mod_statistics/prosodytop.lua @ 1585:64f55bcab9f7
mod_statistics/prosodytop.lua: Simplify and fix buffering and line separation (thanks Ge0rG)
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Mon, 08 Dec 2014 17:04:49 +0100 |
parents | 7dbde05b48a9 |
children | 54b93cf0f631 |
comparison
equal
deleted
inserted
replaced
1584:4713f9d453ec | 1585:64f55bcab9f7 |
---|---|
84 | 84 |
85 function stats_listener.onconnect(conn) | 85 function stats_listener.onconnect(conn) |
86 --stdscr:mvaddstr(6, 0, "CONNECTED"); | 86 --stdscr:mvaddstr(6, 0, "CONNECTED"); |
87 end | 87 end |
88 | 88 |
89 local partial; | 89 local partial = ""; |
90 function stats_listener.onincoming(conn, data) | 90 function stats_listener.onincoming(conn, data) |
91 --print("DATA", data) | 91 --print("DATA", data) |
92 if partial then | 92 data = partial..data; |
93 partial, data = nil, partial..data; | |
94 end | |
95 if not data:match("\n") then | |
96 partial = data; | |
97 return; | |
98 end | |
99 local lastpos = 1; | 93 local lastpos = 1; |
100 for line, pos in data:gmatch("([^\n]+)\n()") do | 94 for line, pos in data:gmatch("([^\n]+)\n()") do |
101 lastpos = pos; | 95 lastpos = pos; |
102 handle_line(line); | 96 handle_line(line); |
103 end | 97 end |
104 if lastpos == #data then | 98 partial = data:sub(lastpos); |
105 partial = nil; | |
106 else | |
107 partial = data:sub(lastpos); | |
108 end | |
109 end | 99 end |
110 | 100 |
111 function stats_listener.ondisconnect(conn, err) | 101 function stats_listener.ondisconnect(conn, err) |
112 stdscr:mvaddstr(6, 0, "DISCONNECTED: "..(err or "unknown")); | 102 stdscr:mvaddstr(6, 0, "DISCONNECTED: "..(err or "unknown")); |
113 end | 103 end |