summaryrefslogtreecommitdiffstats
path: root/plugins/immark/immark.c
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2007-12-14 10:42:30 +0000
committerRainer Gerhards <rgerhards@adiscon.com>2007-12-14 10:42:30 +0000
commit119573816d447a78fee256d173704b673c356664 (patch)
tree336ccb6794a884b7dc547425fa439fb5e7feaf31 /plugins/immark/immark.c
parent3f8f9f142c7bcc9c5dd97708b0611024037f2835 (diff)
downloadrsyslog-119573816d447a78fee256d173704b673c356664.tar.gz
rsyslog-119573816d447a78fee256d173704b673c356664.tar.xz
rsyslog-119573816d447a78fee256d173704b673c356664.zip
begin work on on immark, the first input module. In the long term this will
lead to a complete rewrite of the input system
Diffstat (limited to 'plugins/immark/immark.c')
-rw-r--r--plugins/immark/immark.c79
1 files changed, 79 insertions, 0 deletions
diff --git a/plugins/immark/immark.c b/plugins/immark/immark.c
new file mode 100644
index 00000000..ca137f71
--- /dev/null
+++ b/plugins/immark/immark.c
@@ -0,0 +1,79 @@
+/* omfwd.c
+ * This is the implementation of the build-in mark message input module.
+ *
+ * NOTE: read comments in module-template.h to understand how this file
+ * works!
+ *
+ * File begun on 2007-07-20 by RGerhards (extracted from syslogd.c)
+ * This file is under development and has not yet arrived at being fully
+ * self-contained and a real object. So far, it is mostly an excerpt
+ * of the "old" message code without any modifications. However, it
+ * helps to have things at the right place one we go to the meat of it.
+ *
+ * Copyright 2007 Rainer Gerhards and Adiscon GmbH.
+ *
+ * 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 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * A copy of the GPL can be found in the file "COPYING" in this distribution.
+ */
+#include "config.h"
+#if 0 /* IMMARK */
+#include <stdlib.h>
+#include <stdio.h>
+#include <signal.h>
+#include <pthread.h>
+#include "rsyslog.h"
+#include "syslogd.h"
+
+/* This function is called to gather input. It must terminate only
+ * a) on failure (iRet set accordingly)
+ * b) on termination of the input module (as part of the unload process)
+ * Code begun 2007-12-12 rgerhards
+ *
+ * This code must simply spawn emit a mark message at each mark interval.
+ * We are running on our own thread, so this is extremely easy: we just
+ * sleep MarkInterval seconds and each time we awake, we inject the message.
+ * Please note that we do not do the other fancy things that sysklogd
+ * (and pre 1.20.2 releases of rsyslog) did in mark procesing. They simply
+ * do not belong here.
+ */
+rsRetVal
+immark_runInput(void)
+{
+ struct timeval tvSelectTimeout;
+ sigset_t sigSet;
+ sigfillset(&sigSet);
+ pthread_sigmask(SIG_BLOCK, &sigSet, NULL);
+ sigemptyset(&sigSet);
+ sigaddset(&sigSet, SIGTERM);
+ sigaddset(&sigSet, SIGHUP);
+ pthread_sigmask(SIG_UNBLOCK, &sigSet, NULL);
+dbgprintf("immark_runInput running!\n");
+ while(!bFinished) {
+dbgprintf("immark pre select\n");
+ tvSelectTimeout.tv_sec = 500;
+ tvSelectTimeout.tv_usec = 0;
+ select(0, NULL, NULL, NULL, &tvSelectTimeout);
+dbgprintf("immark post select, doing mark, bFinished: %d\n", bFinished);
+ logmsgInternal(LOG_INFO, "-- MARK --", ADDDATE);
+ //logmsgInternal(LOG_INFO, "-- MARK --", ADDDATE|MARK);
+ }
+fprintf(stderr, "immark: finished!\n");
+ return RS_RET_OK;
+}
+#endif /* #if 0 */
+/*
+ * vi:set ai:
+ */