[Spread-cvs] commit: r595 - branches/experimental-4.3-threaded/daemon

jschultz at spread.org jschultz at spread.org
Thu Oct 17 11:15:44 EDT 2013


Author: jschultz
Date: 2013-10-17 11:15:44 -0400 (Thu, 17 Oct 2013)
New Revision: 595

Modified:
   branches/experimental-4.3-threaded/daemon/groups.c
   branches/experimental-4.3-threaded/daemon/protocol.c
   branches/experimental-4.3-threaded/daemon/protocol.h
   branches/experimental-4.3-threaded/daemon/session.c
Log:
Working changes


Modified: branches/experimental-4.3-threaded/daemon/groups.c
===================================================================
--- branches/experimental-4.3-threaded/daemon/groups.c	2013-10-09 17:29:09 UTC (rev 594)
+++ branches/experimental-4.3-threaded/daemon/groups.c	2013-10-17 15:15:44 UTC (rev 595)
@@ -562,6 +562,13 @@
                  */
 		Alarmp( SPLOG_INFO, GROUPS, "G_handle_reg_memb in GTRANS\n");
 
+		if ((obj = new( OBJ_LINK)) == NULL) {
+		  Alarm(EXIT, "G_handle_reg_memb in GTRANS; can't create obj\n");
+		}
+
+		obj->mess = NULL;
+		obj->next = NULL;
+
 		Reg_memb    = reg_memb;
 		Reg_memb_id = reg_memb_id;
 
@@ -601,6 +608,7 @@
 				}
 			}
 
+			obj->type = NORMAL_DOWNQUEUE_SIG;
                         G_shift_to_GOP();
 
 		} else {
@@ -639,7 +647,8 @@
                         Sess_set_active_threshold();
 
                         /* Replace down queue */
-                        Prot_set_down_queue( GROUPS_DOWNQUEUE );
+                        /*Prot_set_down_queue( GROUPS_DOWNQUEUE );*/			
+			obj->type = GROUPS_DOWNQUEUE_SIG;
 
                         /* If I'm the head of my synced set, I send one or more GROUPS messages.
                          * No daemon's data about members for a given group is ever split across
@@ -657,6 +666,8 @@
                         Gstate              = GGATHER;
                         GlobalStatus.gstate = Gstate;
                 }
+
+		Prot_new_message(obj, 0);
                 break;
 
             case GGATHER:

Modified: branches/experimental-4.3-threaded/daemon/protocol.c
===================================================================
--- branches/experimental-4.3-threaded/daemon/protocol.c	2013-10-09 17:29:09 UTC (rev 594)
+++ branches/experimental-4.3-threaded/daemon/protocol.c	2013-10-17 15:15:44 UTC (rev 595)
@@ -32,7 +32,6 @@
  *
  */
 
-
 #define	ext_prot_body
 
 #include <string.h>
@@ -98,6 +97,8 @@
 
 static	down_queue	Protocol_down_queue[2]; /* only used in spread3 */
 
+int                     Protocol_Actively_Waiting = 0;
+
 /* ### Added for session-daemon queuing/signalling */
 static signal_q Sess_Daemon_Q;
 static void    Prot_process_message( down_link *down_ptr );

Modified: branches/experimental-4.3-threaded/daemon/protocol.h
===================================================================
--- branches/experimental-4.3-threaded/daemon/protocol.h	2013-10-09 17:29:09 UTC (rev 594)
+++ branches/experimental-4.3-threaded/daemon/protocol.h	2013-10-17 15:15:44 UTC (rev 595)
@@ -61,6 +61,11 @@
 #define NORMAL_DOWNQUEUE        0
 #define GROUPS_DOWNQUEUE        1
 
+#define NORMAL_DOWNQUEUE_SIG    0x10000000
+#define GROUPS_DOWNQUEUE_SIG    0x20000000
+
+extern  int Protocol_Actively_Waiting;
+
 void	Prot_init(void);
 void	Prot_set_down_queue( int queue_type );
 void	Prot_new_message( down_link *down_ptr, int not_used_in_spread3_p );

Modified: branches/experimental-4.3-threaded/daemon/session.c
===================================================================
--- branches/experimental-4.3-threaded/daemon/session.c	2013-10-09 17:29:09 UTC (rev 594)
+++ branches/experimental-4.3-threaded/daemon/session.c	2013-10-17 15:15:44 UTC (rev 595)
@@ -513,7 +513,7 @@
 {
 	/* This function is used only by the session (and groups) layer */
 	
-  /*TODO: FIX ME*/
+  TODO: FIX ME
 
 	if( Protocol_threshold > Session_threshold ) 
 		E_set_active_threshold( Protocol_threshold );
@@ -2069,6 +2069,10 @@
 {
         obj_link *obj = new(OBJ_LINK);
 	memb_obj *m   = new(MEMB_OBJ);
+        int       num_bcast, num_token;
+        channel  *bcast_channels;
+        channel  *token_channels;
+	int       i;
 
 	if (obj == NULL || m == NULL) {
 	  Alarm(EXIT, "Sess_deliver_reg_memb: failed to create object!\n");
@@ -2088,6 +2092,32 @@
 	obj->next = NULL;
 
         Signal_Q_enqueue(&Daemon_Sess_Q, &obj);
+	Protocol_Actively_Waiting = 1;
+
+	/* deactivate token and bcast file fds: only wait for Daemon_Sess_Q events */
+	/* TODO: should we (can we) disable timer events too? */
+
+	bcast_channels = Net_bcast_channel();
+	token_channels = Net_token_channel();
+	Net_num_channels( &num_bcast, &num_token);
+
+	for ( i = 0; i < num_bcast; ++i, ++bcast_channels) {
+
+	  ret = E_deactivate_fd( *bcast_channels, READ_FD );
+
+	  if( ret < 0 ) {
+	    Alarm( EXIT, "Sess_deliver_reg_memb: bcast_channel being deactivated was not found\n");
+	  }
+	}
+
+	for ( i = 0; i < num_token; ++i, ++token_channels) {
+
+	  ret = E_deactivate_fd( *token_channels, READ_FD );
+
+	  if( ret < 0 ) {
+	    Alarm( EXIT, "Sess_deliver_reg_memb: token_channel being deactivated was not found\n");
+	  }
+	}
 }
 
 void	Sess_deliver_trans_memb( configuration trans_memb, membership_id trans_memb_id )




More information about the Spread-cvs mailing list