X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=doc%2Fstatusd.tex;fp=doc%2Fstatusd.tex;h=0000000000000000000000000000000000000000;hb=a6561c9679cd701b0d50c3cfd44e4664f7df2b2f;hp=82e70ebab75f9ae9b1f78b643d2acf0979b7782c;hpb=cd09055902de482a1be019bf4b4efdae64c98d35;p=ion3.git diff --git a/doc/statusd.tex b/doc/statusd.tex deleted file mode 100644 index 82e70eb..0000000 --- a/doc/statusd.tex +++ /dev/null @@ -1,82 +0,0 @@ - -\section{Writing \command{ion-statusd} monitors} -\label{sec:statusd} - -All statusbar meters that do not monitor the internal state of Ion should -go in the separate \command{ion-statusd} program. - -Whenever the user requests a meter \codestr{\%foo} or \codestr{\%foo\_bar} to -be inserted in a statusbar, \file{mod\_statusbar} asks \command{ion-statusd} -to load \fnref{statusd_foo.lua} on its search path (same as that for Ion-side -scripts). This script should then supply all meters with the initial part -\codestr{foo}. - -To provide this value, the script should simply call \code{statusd.inform} -with the name of the meter and the value as a string. -Additionally the script should provide a 'template' for the meter to -facilitate expected width calculation by \file{mod\_statusbar}, and -may provide a 'hint' for colour-coding the value. The interpretation -of hints depends on the graphical style in use, and currently the -stock styles support the \codestr{normal}, \codestr{important} and -\codestr{critical} hints. - - -In our example of the 'foo monitor', at script initialisation we might broadcast -the template as follows: - -\begin{verbatim} -statusd.inform("foo_template", "000") -\end{verbatim} - -To inform \file{mod\_statusbar} of the actual value of the meter and -indicate that the value is critical if above 100, we might write the -following function: - -\begin{verbatim} -local function inform_foo(foo) - statusd.inform("foo", tostring(foo)) - if foo>100 then - statusd.inform("foo_hint", "critical") - else - statusd.inform("foo_hint", "normal") - end -end -\end{verbatim} - -To periodically update the value of the meter, we must use timers. -First we must create one: - -\begin{verbatim} -local foo_timer=statusd.create_timer() -\end{verbatim} - -Then we write a function to be called whenever the timer expires. -This function must also restart the timer. - -\begin{verbatim} -local function update_foo() - local foo= ... measure foo somehow ... - inform_foo(foo) - foo_timer:set(settings.update_interval, update_foo) -end -\end{verbatim} - -Finally, at the end of our script we want to do the initial -measurement, and set up timer for further measurements: - -\begin{verbatim} -update_foo() -\end{verbatim} - - -If our scripts supports configurable parameters, the following code -(at the beginning of the script) will allow them to be configured in -\file{cfg\_statusbar.lua} and passed to the status daemon and our script: - -\begin{verbatim} -local defaults={ - update_interval=10*1000, -- 10 seconds -} - -local settings=table.join(statusd.get_config("foo"), defaults) -\end{verbatim}