[Initng-svn] r4351 - in initng/trunk: plugins/cpout plugins/dbus_event plugins/history plugins/logfile plugins/nge src

svn at initng.thinktux.net svn at initng.thinktux.net
Sun Jun 4 12:38:39 CEST 2006


Author: jimmy
Date: Sun Jun  4 12:38:36 2006
New Revision: 4351

Modified:
   initng/trunk/plugins/cpout/initng_colorprint_out.c
   initng/trunk/plugins/dbus_event/initng_dbusevent.c
   initng/trunk/plugins/history/initng_history.c
   initng/trunk/plugins/logfile/initng_logfile.c
   initng/trunk/plugins/nge/initng_nge.c
   initng/trunk/plugins/syslog/initng_syslog.c
   initng/trunk/src/initng_fd.c
   initng/trunk/src/initng_global.c
   initng/trunk/src/initng_global.h
   initng/trunk/src/initng_plugin.h

Log:
Add pipe_h * entry to PIPEWATCHER, and renamed that hook to BUFFER_WATCHER


Modified: initng/trunk/plugins/cpout/initng_colorprint_out.c
==============================================================================
--- initng/trunk/plugins/cpout/initng_colorprint_out.c	(original)
+++ initng/trunk/plugins/cpout/initng_colorprint_out.c	Sun Jun  4 12:38:36 2006
@@ -351,7 +351,7 @@
 	D_("print_system_state(): new system state: %i\n", state);
 }
 
-static int print_program_output(active_db_h * service, process_h * x,
+static int print_program_output(active_db_h * service, process_h * x, pipe_h * pi,
 								char *buffer_pos)
 {
 	/*
@@ -565,7 +565,7 @@
 	initng_plugin_hook_register(&g.ERR_MSG, 10, &cp_print_error);
 	initng_plugin_hook_register(&g.IS_CHANGE, 80, &print_output);
 	initng_plugin_hook_register(&g.SWATCHERS, 80, &print_system_state);
-	initng_plugin_hook_register(&g.PIPEWATCHERS, 50, &print_program_output);
+	initng_plugin_hook_register(&g.BUFFER_WATCHER, 50, &print_program_output);
 	return (TRUE);
 }
 
@@ -578,7 +578,7 @@
 
 	initng_plugin_hook_unregister(&g.IS_CHANGE, &print_output);
 	initng_plugin_hook_unregister(&g.SWATCHERS, &print_system_state);
-	initng_plugin_hook_unregister(&g.PIPEWATCHERS, &print_program_output);
+	initng_plugin_hook_unregister(&g.BUFFER_WATCHER, &print_program_output);
 	initng_plugin_hook_unregister(&g.ERR_MSG, &cp_print_error);
 	cprintf("  Goodbye\n");
 	fflush(output);

Modified: initng/trunk/plugins/dbus_event/initng_dbusevent.c
==============================================================================
--- initng/trunk/plugins/dbus_event/initng_dbusevent.c	(original)
+++ initng/trunk/plugins/dbus_event/initng_dbusevent.c	Sun Jun  4 12:38:36 2006
@@ -65,7 +65,7 @@
 static void check_socket(int signal);
 static int connect_to_dbus(void);
 static void system_state_change(e_is state);
-static int system_pipe_watchers(active_db_h * service, process_h * process,
+static int system_pipe_watchers(active_db_h * service, process_h * process, pipe_h * pi,
 								char *output);
 static int print_error(e_mt mt, const char *file, const char *func, int line,
 					   const char *format, va_list arg);
@@ -267,7 +267,7 @@
 	return;
 }
 
-static int system_pipe_watchers(active_db_h * service, process_h * process,
+static int system_pipe_watchers(active_db_h * service, process_h * process, pipe_h * pi,
 								char *output)
 {
 	DBusMessage *msg;

Modified: initng/trunk/plugins/history/initng_history.c
==============================================================================
--- initng/trunk/plugins/history/initng_history.c	(original)
+++ initng/trunk/plugins/history/initng_history.c	Sun Jun  4 12:38:36 2006
@@ -338,7 +338,7 @@
 	return (TRUE);
 }
 
-static int fetch_output(active_db_h * service, process_h * process,
+static int fetch_output(active_db_h * service, process_h * process, pipe_h * pi,
 						char *buffer_pos)
 {
 	history_h *tmp_e = NULL;
@@ -380,7 +380,7 @@
 	initng_plugin_hook_register(&g.ASTATUS_CHANGE, 1000, &history_add_values);
 	initng_plugin_hook_register(&g.COMPENSATE_TIME, 50,
 								&history_db_compensate_time);
-	initng_plugin_hook_register(&g.PIPEWATCHERS, 50, &fetch_output);
+	initng_plugin_hook_register(&g.BUFFER_WATCHER, 50, &fetch_output);
 
 	return (TRUE);
 }
@@ -394,5 +394,5 @@
 	initng_plugin_hook_unregister(&g.ASTATUS_CHANGE, &history_add_values);
 	initng_plugin_hook_unregister(&g.COMPENSATE_TIME,
 								  &history_db_compensate_time);
-	initng_plugin_hook_unregister(&g.PIPEWATCHERS, &fetch_output);
+	initng_plugin_hook_unregister(&g.BUFFER_WATCHER, &fetch_output);
 }

Modified: initng/trunk/plugins/logfile/initng_logfile.c
==============================================================================
--- initng/trunk/plugins/logfile/initng_logfile.c	(original)
+++ initng/trunk/plugins/logfile/initng_logfile.c	Sun Jun  4 12:38:36 2006
@@ -38,7 +38,7 @@
 
 s_entry LOGFILE = { "logfile", STRING, NULL, "An extra output of service output." };
 
-static int program_output(active_db_h * service, process_h * x,
+static int program_output(active_db_h * service, process_h * x, pipe_h * pi,
 						  char *buffer_pos)
 {
 	const char *filename = NULL;
@@ -98,7 +98,7 @@
 
 	initng_service_data_type_register(&LOGFILE);
 
-	initng_plugin_hook_register(&g.PIPEWATCHERS, 30, &program_output);
+	initng_plugin_hook_register(&g.BUFFER_WATCHER, 30, &program_output);
 	return (TRUE);
 }
 
@@ -110,5 +110,5 @@
 
 	initng_service_data_type_unregister(&LOGFILE);
 
-	initng_plugin_hook_unregister(&g.PIPEWATCHERS, &program_output);
+	initng_plugin_hook_unregister(&g.BUFFER_WATCHER, &program_output);
 }

Modified: initng/trunk/plugins/nge/initng_nge.c
==============================================================================
--- initng/trunk/plugins/nge/initng_nge.c	(original)
+++ initng/trunk/plugins/nge/initng_nge.c	Sun Jun  4 12:38:36 2006
@@ -74,7 +74,7 @@
 
 static int astatus_change(active_db_h * service);
 static void system_state_change(e_is state);
-static int system_pipe_watchers(active_db_h * service, process_h * process,
+static int system_pipe_watchers(active_db_h * service, process_h * process, pipe_h * pi,
 								char *output);
 static int print_error(e_mt mt, const char *file, const char *func, int line,
 					   const char *format, va_list arg);
@@ -138,7 +138,7 @@
 		 */
 		initng_plugin_hook_unregister(&g.ASTATUS_CHANGE, &astatus_change);
 		initng_plugin_hook_unregister(&g.SWATCHERS, &system_state_change);
-		initng_plugin_hook_unregister(&g.PIPEWATCHERS, &system_pipe_watchers);
+		initng_plugin_hook_unregister(&g.BUFFER_WATCHER, &system_pipe_watchers);
 		initng_plugin_hook_unregister(&g.ERR_MSG, &print_error);
 		initng_plugin_hook_unregister(&g.HANDLE_KILLED, &handle_killed);
 
@@ -211,7 +211,7 @@
 		 */
 		initng_plugin_hook_register(&g.ASTATUS_CHANGE, 50, &astatus_change);
 		initng_plugin_hook_register(&g.SWATCHERS, 50, &system_state_change);
-		initng_plugin_hook_register(&g.PIPEWATCHERS, 50,
+		initng_plugin_hook_register(&g.BUFFER_WATCHER, 50,
 									&system_pipe_watchers);
 		initng_plugin_hook_register(&g.ERR_MSG, 50, &print_error);
 		initng_plugin_hook_register(&g.HANDLE_KILLED, 1, &handle_killed);
@@ -509,7 +509,7 @@
 	free(buffert);
 }
 
-static int system_pipe_watchers(active_db_h * service, process_h * process,
+static int system_pipe_watchers(active_db_h * service, process_h * process, pipe_h * pi,
 								char *output)
 {
 	char *buffert = NULL;

Modified: initng/trunk/plugins/syslog/initng_syslog.c
==============================================================================
--- initng/trunk/plugins/syslog/initng_syslog.c	(original)
+++ initng/trunk/plugins/syslog/initng_syslog.c	Sun Jun  4 12:38:36 2006
@@ -234,7 +234,7 @@
 	return;
 }
 
-static int syslog_fetch_output(active_db_h * service, process_h * process,
+static int syslog_fetch_output(active_db_h * service, process_h * process, pipe_h * pi,
 							   char *buffer_pos)
 {
 	char log[201];
@@ -336,7 +336,7 @@
 								&syslog_print_status_change);
 	initng_plugin_hook_register(&g.SWATCHERS, 100,
 								&syslog_print_system_state);
-	initng_plugin_hook_register(&g.PIPEWATCHERS, 100, &syslog_fetch_output);
+	initng_plugin_hook_register(&g.BUFFER_WATCHER, 100, &syslog_fetch_output);
 	initng_plugin_hook_register(&g.ERR_MSG, 50, &syslog_print_error);
 
 	return (TRUE);
@@ -354,7 +354,7 @@
 
 	initng_plugin_hook_unregister(&g.IS_CHANGE, &syslog_print_status_change);
 	initng_plugin_hook_unregister(&g.SWATCHERS, &syslog_print_system_state);
-	initng_plugin_hook_unregister(&g.PIPEWATCHERS, &syslog_fetch_output);
+	initng_plugin_hook_unregister(&g.BUFFER_WATCHER, &syslog_fetch_output);
 	initng_plugin_hook_unregister(&g.ERR_MSG, &syslog_print_error);
 	free_buffert();
 	closelog();

Modified: initng/trunk/src/initng_fd.c
==============================================================================
--- initng/trunk/src/initng_fd.c	(original)
+++ initng/trunk/src/initng_fd.c	Sun Jun  4 12:38:36 2006
@@ -62,7 +62,7 @@
  * be printed to screen anyway.
  */
 static void initng_fd_plugin_readpipe(active_db_h * service,
-									  process_h * process, char *buffer_pos)
+									  process_h * process, pipe_h * pi, char *buffer_pos)
 {
 	s_call *current = NULL;
 	int delivered = FALSE;
@@ -70,10 +70,10 @@
 	S_;
 
 
-	while_list(current, &g.PIPEWATCHERS)
+	while_list(current, &g.BUFFER_WATCHER)
 	{
 		D_("Calling pipewatcher plugin.\n");
-		if ((*current->c.pipewatcher) (service, process, buffer_pos) == TRUE)
+		if ((*current->c.buffer_watcher) (service, process, pi, buffer_pos) == TRUE)
 			delivered = TRUE;
 #ifdef DEBUG
 		else
@@ -183,7 +183,7 @@
 	if (pi->buffer_len > old_content_offset)
 	{
 		/* let all plugin take part of data */
-		initng_fd_plugin_readpipe(service, p,
+		initng_fd_plugin_readpipe(service, p, pi,
 								  pi->buffer + old_content_offset);
 	}
 
@@ -430,14 +430,12 @@
 			/* check if this fd is a pipe bound to a process */
 			while_pipes(current_pipe, currentP)
 			{
-				/* if this pipe is a process output pipe, and the pipe are opend, and if
-				 * there is data on it */
-				if ((current_pipe->dir == OUT_PIPE
-					 || current_pipe->dir == BUFFERED_OUT_PIPE)
+				/* if a bufered output pipe is found . */
+				if (current_pipe->dir == BUFFERED_OUT_PIPE
 					&& current_pipe->pipe[0] > 2
 					&& FD_ISSET(current_pipe->pipe[0], &readset))
 				{
-					D_("Will read from %s->start_process on fd #%i\n",
+					D_("BUFFERED_OUT_PIPE: Will read from %s->start_process on fd #%i\n",
 					   currentA->name, current_pipe->pipe[0]);
 
 					/* Do the actual read from pipe */
@@ -449,6 +447,19 @@
 					if (retval == 0)
 						return;
 				}
+				
+				if(current_pipe->dir == OUT_PIPE &&
+				   current_pipe->pipe[0] > 2 &&
+				   FD_ISSET(current_pipe->pipe[0], &readset))
+				{
+					D_("TODO, call pipe watchers...\n");
+
+					/* Found match, that means we need to look for one less, if we've found all we should then return */
+					retval--;
+					if (retval == 0)
+						return;
+				}
+					
 			}
 		}
 	}

Modified: initng/trunk/src/initng_global.c
==============================================================================
--- initng/trunk/src/initng_global.c	(original)
+++ initng/trunk/src/initng_global.c	Sun Jun  4 12:38:36 2006
@@ -109,7 +109,7 @@
 	INIT_LIST_HEAD(&g.PARSERS.list);
 	INIT_LIST_HEAD(&g.SWATCHERS.list);
 	INIT_LIST_HEAD(&g.FDWATCHERS.list);
-	INIT_LIST_HEAD(&g.PIPEWATCHERS.list);
+	INIT_LIST_HEAD(&g.BUFFER_WATCHER.list);
 	INIT_LIST_HEAD(&g.SIGNAL.list);
 	INIT_LIST_HEAD(&g.MAIN.list);
 	INIT_LIST_HEAD(&g.A_FORK.list);

Modified: initng/trunk/src/initng_global.h
==============================================================================
--- initng/trunk/src/initng_global.h	(original)
+++ initng/trunk/src/initng_global.h	Sun Jun  4 12:38:36 2006
@@ -72,7 +72,7 @@
 	s_call ADDITIONAL_PARSE;	/* Called after a service been parsed, and extra parsing may exist */
 	s_call SWATCHERS;			/* Called when system state changes */
 	s_call FDWATCHERS;			/* Called when initng open file descriptors receive data */
-	s_call PIPEWATCHERS;		/* Called when a service has some output, that initng received */
+	s_call BUFFER_WATCHER;		/* Called when a service has some output, that initng received */
 	s_call SIGNAL;				/* Called when initng rescives a signal, like SIGHUP */
 	s_call MAIN;				/* Called every main loop */
 	s_call A_FORK;				/* Called after a process forks to start */

Modified: initng/trunk/src/initng_plugin.h
==============================================================================
--- initng/trunk/src/initng_plugin.h	(original)
+++ initng/trunk/src/initng_plugin.h	Sun Jun  4 12:38:36 2006
@@ -48,7 +48,7 @@
 	int (*status_change) (active_db_h * service);
 	service_cache_h *(*parser) (const char *name);
 	void (*swatcher) (h_sys_state state);
-	int (*pipewatcher) (active_db_h * service, process_h * process,
+	int (*buffer_watcher) (active_db_h * service, process_h * process, pipe_h * pi,
 						char *buffer_pos);
 	int (*launch) (active_db_h * service, process_h * process,
 				   const char *exec_name);


More information about the Initng-svn mailing list