make internal thread liveliness monitoring optional
Internal thread liveliness monitoring means having a thread that wakes up periodically, doing nothing but checking whether all seems well. In most case, this is not worth the resources and energy. Signed-off-by: Erik Boasson <eb@ilities.com>
This commit is contained in:
		
							parent
							
								
									519a1ffb92
								
							
						
					
					
						commit
						a72a581cb0
					
				
					 4 changed files with 29 additions and 17 deletions
				
			
		| 
						 | 
				
			
			@ -105,19 +105,22 @@ dds_init(void)
 | 
			
		|||
 | 
			
		||||
  ut_avlInit(&dds_domaintree_def, &dds_global.m_domains);
 | 
			
		||||
 | 
			
		||||
  /* Start monitoring the liveliness of all threads and renewing the
 | 
			
		||||
     service lease if everything seems well. */
 | 
			
		||||
 | 
			
		||||
  gv.servicelease = nn_servicelease_new(0, 0);
 | 
			
		||||
  if (gv.servicelease == NULL)
 | 
			
		||||
  /* Start monitoring the liveliness of all threads. */
 | 
			
		||||
  if (!config.liveliness_monitoring)
 | 
			
		||||
    gv.servicelease = NULL;
 | 
			
		||||
  else
 | 
			
		||||
  {
 | 
			
		||||
    ret = DDS_ERRNO(DDS_RETCODE_OUT_OF_RESOURCES, "Failed to create a servicelease.");
 | 
			
		||||
    goto fail_servicelease_new;
 | 
			
		||||
  }
 | 
			
		||||
  if (nn_servicelease_start_renewing(gv.servicelease) < 0)
 | 
			
		||||
  {
 | 
			
		||||
    ret = DDS_ERRNO(DDS_RETCODE_ERROR, "Failed to start the servicelease.");
 | 
			
		||||
    goto fail_servicelease_start;
 | 
			
		||||
    gv.servicelease = nn_servicelease_new(0, 0);
 | 
			
		||||
    if (gv.servicelease == NULL)
 | 
			
		||||
    {
 | 
			
		||||
      ret = DDS_ERRNO(DDS_RETCODE_OUT_OF_RESOURCES, "Failed to create a servicelease.");
 | 
			
		||||
      goto fail_servicelease_new;
 | 
			
		||||
    }
 | 
			
		||||
    if (nn_servicelease_start_renewing(gv.servicelease) < 0)
 | 
			
		||||
    {
 | 
			
		||||
      ret = DDS_ERRNO(DDS_RETCODE_ERROR, "Failed to start the servicelease.");
 | 
			
		||||
      goto fail_servicelease_start;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (rtps_init() < 0)
 | 
			
		||||
| 
						 | 
				
			
			@ -159,7 +162,8 @@ skip:
 | 
			
		|||
 | 
			
		||||
fail_rtps_init:
 | 
			
		||||
fail_servicelease_start:
 | 
			
		||||
  nn_servicelease_free (gv.servicelease);
 | 
			
		||||
  if (gv.servicelease)
 | 
			
		||||
    nn_servicelease_free (gv.servicelease);
 | 
			
		||||
  gv.servicelease = NULL;
 | 
			
		||||
fail_servicelease_new:
 | 
			
		||||
  thread_states_fini();
 | 
			
		||||
| 
						 | 
				
			
			@ -195,7 +199,8 @@ extern void dds_fini (void)
 | 
			
		|||
    dds__builtin_fini();
 | 
			
		||||
 | 
			
		||||
    rtps_term ();
 | 
			
		||||
    nn_servicelease_free (gv.servicelease);
 | 
			
		||||
    if (gv.servicelease)
 | 
			
		||||
      nn_servicelease_free (gv.servicelease);
 | 
			
		||||
    gv.servicelease = NULL;
 | 
			
		||||
    downgrade_main_thread ();
 | 
			
		||||
    thread_states_fini ();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue