+/*
+ * innduct
+ * tailing reliable realtime streaming feeder for inn
+ * cli.c - command and control connections
+ *
+ * Copyright (C) 2010 Ian Jackson <ijackson@chiark.greenend.org.uk>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * (I believe that when you compile and link this as part of the inn2
+ * build, with the Makefile runes I have provided, all the libraries
+ * and files which end up included in innduct are licence-compatible
+ * with GPLv3. If not then please let me know. -Ian Jackson.)
+ */
+
+#include "innduct.h"
+
/*========== command and control (CLI) connections ==========*/
static int cli_master;
abort();
}
+CCMD(logstats) { showstats(); }
+
CCMD(dump);
/* messing with our head: */
{ "h", ccmd_help },
{ "flush", ccmd_flush },
{ "stop", ccmd_stop },
+ { "logstats", ccmd_logstats },
{ "dump q", ccmd_dump, 0,0 },
{ "dump a", ccmd_dump, 0,1 },
free(cc);
}
-static void cli_stdio(void) {
+void cli_stdio(void) {
NEW_DECL(CliConn *,cc);
cc->destroy= cli_stdio_destroy;
goto nocli; \
}while(0)
-static void cli_init(void) {
+void cli_init(void) {
union {
struct sockaddr sa;
struct sockaddr_un un;
free(dipf);
if (ipf) {
- DUMPV("%d", ipf->,readcount_ok);
- DUMPV("%d", ipf->,readcount_blank);
- DUMPV("%d", ipf->,readcount_err);
- DUMPV("%d", ipf->,count_nooffer_missing);
+ DUMPV("%d", ipf->counts.,events[read_ok]);
+ DUMPV("%d", ipf->counts.,events[read_blank]);
+ DUMPV("%d", ipf->counts.,events[read_err]);
+ DUMPV("%d", ipf->counts.,events[nooffer_missing]);
}
fprintf(f,"\n");
if (ipf) {
ArtState state; const char *const *statename;
for (state=0, statename=artstate_names; *statename; state++,statename++) {
#define RC_DUMP_FMT(x) " " #x "=%d"
-#define RC_DUMP_VAL(x) ,ipf->counts[state][RC_##x]
+#define RC_DUMP_VAL(x) ,ipf->counts.results[state][RC_##x]
fprintf(f,"input %s counts %-11s"
RESULT_COUNTS(RC_DUMP_FMT,RC_DUMP_FMT) "\n",
wh, *statename