aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian C. (anrxc) <anrxc@sysphere.org>2009-10-22 16:15:53 +0200
committerAdrian C. (anrxc) <anrxc@sysphere.org>2009-10-22 16:15:53 +0200
commit3dc7c5e30848d8c8b264d2ffa4ffc38f6f063483 (patch)
tree1c39d3c3f6222278a2858c91eb4745da440ae8d7
parent5c6f544787c1a9e019e24c2d336c69349ad5eca5 (diff)
downloadvicious-legacy-3dc7c5e30848d8c8b264d2ffa4ffc38f6f063483.tar.xz
net: unit formatting delegated to a function
This simplifies the code, in addition string.format is now used to ensure all values have one decimal point at all time. We'll see how recent changes and this one will affect people that use network graphs.
-rw-r--r--net.lua59
1 files changed, 21 insertions, 38 deletions
diff --git a/net.lua b/net.lua
index e436398..7ec32f3 100644
--- a/net.lua
+++ b/net.lua
@@ -1,6 +1,7 @@
---------------------------------------------------
-- Licensed under the GNU General Public License v2
--- * (c) 2009, Adrian C. <anrxc.sysphere.org>
+-- * (c) 2009, Adrian C. <anrxc@sysphere.org>
+-- * (c) 2009, Henning Glawe <glaweh@debian.org>
-- * (c) Wicked, Lucas de Vries
---------------------------------------------------
@@ -10,7 +11,10 @@ local os = { time = os.time }
local io = { open = io.open }
local setmetatable = setmetatable
local math = { floor = math.floor }
-local string = { match = string.match }
+local string = {
+ match = string.match,
+ format = string.format
+}
-- }}}
@@ -27,6 +31,15 @@ local function worker(format)
local f = io.open("/proc/net/dev")
local args = {}
+ local function uformat(array, key, value)
+ array["{"..key.."_b}"] = string.format("%.1f", value)
+ array["{"..key.."_kb}"] = string.format("%.1f", value/1024)
+ array["{"..key.."_mb}"] = string.format("%.1f", value/1024/1024)
+ array["{"..key.."_gb}"] = string.format("%.1f", value/1024/1024/1024)
+
+ return array
+ end
+
for line in f:lines() do
-- Match wmaster0 as well as rt0 (multiple leading spaces)
if string.match(line, "^[%s]?[%s]?[%s]?[%s]?[%w]+:") then
@@ -36,35 +49,14 @@ local function worker(format)
local send = -- Transmited bytes, 7 fields from end of the line
tonumber(string.match(line, "([%d]+)%s+%d+%s+%d+%s+%d+%s+%d+%s+%d+%s+%d+%s+%d$"))
- args["{"..name.." rx_b}"] = math.floor(recv*10)/10
- args["{"..name.." tx_b}"] = math.floor(send*10)/10
-
- args["{"..name.." rx_kb}"] = math.floor(recv/1024*10)/10
- args["{"..name.." tx_kb}"] = math.floor(send/1024*10)/10
-
- args["{"..name.." rx_mb}"] = math.floor(recv/1024/1024*10)/10
- args["{"..name.." tx_mb}"] = math.floor(send/1024/1024*10)/10
-
- args["{"..name.." rx_gb}"] = math.floor(recv/1024/1024/1024*10)/10
- args["{"..name.." tx_gb}"] = math.floor(send/1024/1024/1024*10)/10
+ uformat(args, name .. " rx", recv)
+ uformat(args, name .. " tx", send)
if nets[name] == nil then
-- Default values on the first run
nets[name] = {}
- args["{"..name.." down}"] = "N/A"
- args["{"..name.." up}"] = "N/A"
-
- args["{"..name.." down_b}"] = 0
- args["{"..name.." up_b}"] = 0
-
- args["{"..name.." down_kb}"] = 0
- args["{"..name.." up_kb}"] = 0
-
- args["{"..name.." down_mb}"] = 0
- args["{"..name.." up_mb}"] = 0
-
- args["{"..name.." down_gb}"] = 0
- args["{"..name.." up_gb}"] = 0
+ uformat(args, name .. " down", 0)
+ uformat(args, name .. " up", 0)
nets[name].time = os.time()
else
@@ -75,17 +67,8 @@ local function worker(format)
local down = (recv - nets[name][1])/interval
local up = (send - nets[name][2])/interval
- args["{"..name.." down_b}"] = math.floor(down*10)/10
- args["{"..name.." up_b}"] = math.floor(up*10)/10
-
- args["{"..name.." down_kb}"] = math.floor(down/1024*10)/10
- args["{"..name.." up_kb}"] = math.floor(up/1024*10)/10
-
- args["{"..name.." down_mb}"] = math.floor(down/1024/1024*10)/10
- args["{"..name.." up_mb}"] = math.floor(up/1024/1024*10)/10
-
- args["{"..name.." down_gb}"] = math.floor(down/1024/1024/1024*10)/10
- args["{"..name.." up_gb}"] = math.floor(up/1024/1024/1024*10)/10
+ uformat(args, name .. " down", down)
+ uformat(args, name .. " up", up)
end
-- Store totals