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

Método xfnts_start

RGM invoca el método Start en un nodo del clúster cuando el grupo de recursos que contiene el recurso de servicio de datos se pone en línea en ese nodo o cuando se habilita el recurso. El método xfnts_start activa el daemon xfs en ese nodo.


Ejemplo C–6 xfnts_start.c

/*
 * Copyright (c) 1998-2003 de Sun Microsystems, Inc.
 * Reservados todos los derechos.
 *
 * xfnts_svc_start.c - Método de inicio para HA-XFS
 */

#pragma ident “@(#)xfnts_svc_start.c 1.13 01/01/18 SMI”

#include <rgm/libdsdev.h>
#include “xfnts.h”

/*
 * El método de inicio de HA-XFS. Realiza comprobaciones de estado
 * en los valores de recurso e inicia el HA-XFS bajo PMF con una 
 * secuencia de acciones.
 */

int
main(int argc, char *argv[])
{
   scds_handle_t   scds_handle;
   int rc;

   /*
    * Procesar todos los argumentos que ha pasado de RGM
    * y realizar una inicialización para syslog
    */

   if (scds_initialize(&scds_handle, argc, argv) != SCHA_ERR_NOERR)
{
      scds_syslog(LOG_ERR, “No se ha podido inicializar el manejo.”);
      return (1);
   }

   /* Validar la configuración; si hay un error, volver atrás */
   rc = svc_validate(scds_handle);
   if (rc != 0) {
      scds_syslog(LOG_ERR,
          “No se ha podido validar la configuración.”);
      return (rc);
   }

   /* Iniciar el servicio de datos; si falla, volver con un error */
   rc = svc_start(scds_handle);
   if (rc != 0) {
      goto finished;
   }

   /* Esperar que el servicio se inicie por completo */
   scds_syslog_debug(DBG_LEVEL_HIGH,
       “Llamar a svc_wait para comprobar que el servicio se haya iniciado.”);

   rc = svc_wait(scds_handle);

   scds_syslog_debug(DBG_LEVEL_HIGH,
       “Devuelto desde svc_wait”);

   if (rc == 0) {
      scds_syslog(LOG_INFO, “El servicio se ha iniciado satisfactoriamente.”);
   } else {
      scds_syslog(LOG_ERR, “No se ha podido iniciar el servicio.”);
   }


finished:
   /* Liberar los recursos de entorno asignados */
   scds_close(&scds_handle);

   return (rc);
}