Sun Cluster 3.1 10/03: Guía del desarrollador de los servicios de datos

Bucle principal de xfonts_probe

El método xfonts_probe implementa un bucle. Antes de hacerlo, xfonts_probe ejecuta estas acciones:

El método xfnts_probe implementa el bucle como sigue:


for (ip = 0; ip < netaddr->num_netaddrs; ip++) {
         /*
          * Tomar el nombre de sistema y puerto en el que se va a 
          * supervisar el estado.
          */
         hostname = netaddr->netaddrs[ip].hostname;
         port = netaddr->netaddrs[ip].port_proto.port;
         /*
          * HA-XFS admite un solo puerto y obtiene el
          * valor del puerto de la primera
          * entrada de la matriz de puertos.
          */
         ht1 = gethrtime(); /* Bloquear el tiempo de inicio del análisis */
         scds_syslog(LOG_INFO, "Analizar el servicio en el puerto: %d.", port);

         probe_result =
         svc_probe(scds_handle, hostname, port, timeout);

         /*
          * Actualizar historial de análisis de servicio,
          * tomar medidas si fuera necesario.
          * Bloquear el tiempo de finalización del análisis.
          */
         ht2 = gethrtime();

         /* Convertir a milisegundos */
         dt = (ulong_t)((ht2 - ht1) / 1e6);

         /*
          * Calcular el historial de fallos y tomar 
          * medidas si corresponde
          */
         (void) scds_fm_action(scds_handle,
             probe_result, (long)dt);
      }   /* Cada recurso de red */
   }    /* Seguir analizando indefinidamente */

La función svc_probe() implementa la lógica del análisis. El valor de retorno de svc_probe() se pasa a scds_fm_action(), que determina si debe reiniciar la aplicación, realizar una recuperación de fallos del grupo de recursos o si no debe hacer nada.