Current section
Files
Jump to
Current section
Files
src/events/kvs_adm.erl
-module(kvs_adm).
-compile(export_all).
-include_lib("nitro/include/nitro.hrl").
-include_lib("kvs/include/cursors.hrl").
event(init) -> [ begin nitro:clear(X), self() ! {direct,X} end || X <- [writers,session,enode,disc,ram] ];
event(ram) -> nitro:update(ram, #span{body = ram(os:type())});
event(session) -> nitro:update(session, #span{body = n2o:sid()});
event(enode) -> nitro:update(enode, #span{body = lists:concat([node()])});
event(disc) -> nitro:update(disc, #span{body = hd(string:tokens(os:cmd("du -hs rocksdb"),"\t"))});
event({link,Id}) -> nitro:clear(feeds), lists:map(fun(T)-> nitro:insert_bottom(feeds, #panel{body=nitro:compact(T)}) end,kvs:feed(Id));
event(writers) -> [ nitro:insert_bottom(writers,
#panel{body = [#link{body = Id, postback = {link,Id}}," (" ++ nitro:to_list(C) ++ ")"]})
|| #writer{id = Id, count = C} <- kvs:all(writer) ];
event(_) -> [].
ram({_,darwin}) ->
Mem = os:cmd("top -l 1 -s 0 | grep PhysMem"),
[_,L,C,R]=string:tokens(lists:filter(fun(X) -> lists:member(X,"0123456789MG ") end, Mem)," "),
lists:concat([nitro:meg(nitro:num(L)),"/",nitro:meg(nitro:num(L)+nitro:num(R)),""]);
ram({_,linux}) ->
[T,U,_,_,B,C] = lists:sublist(string:tokens(os:cmd("free")," \n"),8,6),
Mem = (nitro:to_integer(U)-(nitro:to_integer(B)+nitro:to_integer(C))) div 1000,
lists:concat([Mem,"/",nitro:to_integer(T) div 1000,"M"]);
ram(OS) -> nitro:compact(OS).