iscEngineListenerPF define el prototipo con que debe cumplir la función de escucha definida por el usuario registrada en iscEngineSetListener().
Sintaxis
typedef isy_INT32 (*iscEngineListenerPF)( isy_UINT32 listenerData, ISCEVT* event, isy_VOID* pExtraInfo);
Argumentos de la función
La Tabla 139 lista los argumentos válidos utilizados con el tipo de
función iscEngineSetListenerPF.
Tabla 139. Argumentos de iscEngineListenerPF
Tipo de datos | Argumento | Uso | Descripción |
---|---|---|---|
isy_UINT32 | listenerData | entrada | Los datos establecidos en el argumento syncListenerData por iscEngineSetListener() se devuelven a la función de escucha |
ISCEVT* | event | entrada | Objeto de suceso |
isy_VOID* | pExtraInfo | entrada | Reservado |
Uso
Para utilizar una función de escucha definida por el usuario para supervisar el progreso de la sincronización, antes debe hacer que la función cumpla con el tipo de función iscEngineSetListenerPF. A continuación, registre la función de escucha mediante la función iscEngineSetListener(). Luego, se notificará a la función de escucha cuando se produzcan sucesos de sincronización. El argumento event es una estructura que contiene informaciones diversas sobre el suceso.
La Tabla 140 lista todos los campos de la estructura de sucesos y la
finalidad de cada campo.
Tabla 140. Campos de suceso de iscEngineListenerPF
Campo | Descripción | |
---|---|---|
type | El tipo de suceso puede ser uno de los valores siguientes (los valores
reales aparecen entre paréntesis):
| |
state | Estado del suceso, que contiene los subcampos siguientes:
| |
retry | Número de reintentos del mismo suceso, si es distinto de 0. | |
info | Información opcional específica del suceso (si no es NULL), que es una matriz de argumentos de serie para los sucesos que no son conflictivos. Para los sucesos conflictivos, el tipo de datos es ISCLISTENCONFLICT. |
El campo event.info contiene cierta información opcional específica del suceso. El código de suceso se utiliza para identificar e interpretar esta información.
La Tabla 141 lista todos los códigos de suceso por categoría de tipo de
suceso.
Tabla 141. Códigos de suceso de iscEngineListenerPF
Tipo de suceso: ISCEVTTYPE_Info | |||
Código de suceso | Inform. suceso (argc) | Descripción | |
---|---|---|---|
ISCEVT_InfGeneral (1000) | NULL | Información general (para depuración). | |
ISCEVT_InfSyncStarted (1001) | NULL | Sincronización iniciada. | |
ISCEVT_InfPrepMsg (1002) | NULL | Preparando mensaje. | |
ISCEVT_InfSendMsg (1003) | NULL | Enviando mensaje. | |
ISCEVT_InfWaitMsg (1004) | NULL | En espera de respuesta del servidor. | |
ISCEVT_InfApplyMsg (1005) | NULL | Aplicando mensaje del servidor. | |
ISCEVT_InfCancelingSync (1006) | NULL | Cancelando sincronización. | |
ISCEVT_InfSubsSetStarted (1007) | NULL | Iniciada la sincronización de un conjunto de suscripción. | |
ISCEVT_InfSyncingSubs (1008) | NULL | Ha comenzado la sincronización de una suscripción. | |
ISCEVT_InfSubsSetFailed (1009) | NULL | La sincronización de un conjunto de suscripción ha fallado. | |
ISCEVT_InfSubsSetCanceled (1010) | NULL | Se ha cancelado la sincronización de un conjunto de suscripción. | |
ISCEVT_InfSubsSetSucceeded (1011) | NULL | La sincronización de un conjunto de suscripción ha finalizado satisfactoriamente. | |
ISCEVT_InfSyncSucceeded (1012) | NULL | Sincronización satisfactoria. | |
SCEVT_InfSyncFailed (1013) | NULL | La sincronización (de algunos conjuntos de suscripción) ha fallado. | |
ISCEVT_InfSyncCanceled (1014) | NULL | Sincronización cancelada (por el usuario). | |
ISCEVT_InfSyncProg (1015) | NULL | Progreso de la sincronización expresando en forma de porcentaje. | |
ISCEVT_InfNoNewChange (1016) | NULL | No hay ningún cambio del servidor nuevo; saltarse las fases de extracción y confirmación. | |
ISCEVT_InfLoginFailed (1017) | NULL | La información de inicio de sesión especificada supera el proceso de autentificación. |
Tabla 142. Códigos de suceso de iscEngineListenerPF
Tipo de suceso: ISCEVTTYPE_Conflict | |||
Código de suceso | Inform. suceso (argc) | Descripción | |
---|---|---|---|
ISCEVT_CftReject (2000) | ISCLISTENCONFLICT | Se han encontrado conflictos de datos en la sincronización. Los datos conflictivos reales se representan en forma de estructura ISCLISTENCONFLICT y su puntero de referencia se devuelve a la aplicación a través de event.info. |
Tabla 143. Códigos de suceso de iscEngineListenerPF
Tipo de suceso: ISCEVTTYPE_Retry | |||
Código de suceso | Inform. suceso (argc) | Descripción | |
---|---|---|---|
ISCEVT_TryNetConn (4601) | NULL | Volver a intentar conectar con el servidor. | |
ISCEVT_TrySendRequest (4602) | NULL | Volver a intentar enviar la petición. | |
ISCEVT_TryRecvReply (4603) | NULL | Volver a intentar recibir la respuesta. | |
ISCEVT_TryRecvTimeout (4604) | NULL | Esperar más tiempo la respuesta de recepción. | |
SCEVT_TryRecvAck (4605) | NULL | Volver a intentar recibir un reconocimiento. |
Tabla 144. Códigos de suceso de iscEngineListenerPF
Tipo de suceso: ISCEVTTYPE_Query | ||
Código de suceso | Inform. suceso (argc) | Descripción |
---|---|---|
ISCEVT_QueCancel (5000) | NULL | Consultar si el usuario cancela y vuelve (los valores reales aparecen
entre paréntesis):
|
ISCEVT_QueCancelUponError (5001) | NULL | Consultar si el usuario cancela y vuelve (los valores reales aparecen
entre paréntesis):
|
ISCEVT_QueLogin (5002) | ISCLISTENARG(3)
info->argv[0] info->argv[1] info->argv[2] | Información de inicio de sesión solicitada por un adaptador. La
función de escucha debe proporcionar la información solicitada en event_info y
tiene que devolver ISCRTNCB_Done con el valor real (1).
Nombre de destino de la fuente de datos Almacenamiento intermedio en blanco para contener el nombre de usuario Almacenamiento intermedio en blanco para contener la contraseña |
ISCEVT_QueSubsTarget (5003) |
ISCLISTENARG(1) info->argv[0]
|
Información de base de datos solicitada por un adaptador. La función de escucha puede proporcionar la información solicitada en la información del suceso y devolver ISCRTNCB_Done o devolver ISCRTNCB_Default para utilizar el directorio de destino por omisión. Directorio para la suscripción.
|
Tabla 145. Códigos de suceso de iscEngineListenerPF
Tipo de suceso: ISCEVTTYPE_Error | |||
Código de suceso | Inform. suceso (argc) | Descripción | |
---|---|---|---|
ISCEVT_ErrOpenAdapter (300) | NULL | No se ha podido abrir el adaptador <nombre adaptador>. | |
ISCEVT_ErrLoadAdapter (301) | NULL | No se ha podido cargar el adaptador <nombre adaptador>. | |
ISCEVT_ErrCloseAdapter (302) | NULL | No se ha podido cerrar el adaptador <nombre adaptador>. | |
ISCEVT_ErrAuthenticateKey (306) | NULL | Ha fallado la autentificación (clave de cifrado no válida); se cancela anormalmente la sincronización. | |
ISYNCEVT_ErrClientCryptoFailed (307) | NULL | Ha fallado el cifrado o descifrado del cliente; se cancela anormalmente la sincronización. | |
ISCEVT_ErrEncryptNotAvail (308) | NULL | No se dispone de cifrado. | |
ISCEVT_ErrEncryptLibOpen (309) | NULL | No se ha podido abrir la biblioteca de cifrado. | |
ISCEVT_ErrSubsNotFound (311) | NULL | El servidor no ha encontrado la suscripción. | |
ISCRTN_ErrSubsNotAvail (312) | NULL | El servidor ha bloqueado la suscripción. | |
ISCRTN_ErrSubsDefAltered (316) | NULL | Se ha modificado la definición de la suscripción desde la última vez que el motor de sincronización sincronizó la configuración. | |
ISCEVT_ErrAllocResource (400) | NULL | No se han podido asignar recursos de adaptador. | |
ISCEVT_ErrConnectData (401) | NULL | No se ha podido conectar con los datos de destino. | |
ISCEVT_ErrDisconnectData (402) | NULL | No se ha podido desconectar de los datos de destino. | |
ISCEVT_ErrNoData (403) | NULL | No se han encontrado datos. | |
ISCEVT_ErrMessageFormat (412) | NULL | Formato de mensaje inesperado. | |
ISCEVT_ErrNotFound (413) | ISCLISTENARG(2)
info->argv[0] info->argv[1] | No se han encontrado los datos solicitados.
Nombre de destino de la fuente de datos Nombre de los datos | |
ISCEVT_ErrEndOfData (414) | NULL | Fin de datos inesperado. | |
ISCEVT_ErrDataTooLong (415) | ISCLISTENARG(3)
info->argv[0] info->argv[1] info->argv[2] | Los datos son demasiado largos y se han truncado.
Nombre de destino de la fuente de datos Nombre de los datos Nombre del elemento de datos (si no está vacío) | |
ISCEVT_ErrSyncDisabled (417) | NULL | El servidor ha informado de que el usuario no está habilitado. | |
ISCEVT_ErrServerException (418) | NULL | El servidor ha informado de excepciones desconocidas. | |
ISCEVT_ErrReadOnly (420) | ISCLISTENARG(2)
info->argv[0] info->argv[1] | Se ha intentado actualizar datos de sólo lectura.
Nombre de destino de la fuente de datos Nombre de los datos | |
ISCEVT_ErrOperation (421) | NULL | Operación no permitida sobre los datos. | |
ISCEVT_ErrUnauthorized (423) | NULL | No se tiene autorización para acceder a los datos de destino. | |
ISCEVT_ErrNotAvailable (424) | ISCLISTENARG(2)
info->argv[0] info->argv[1] | Los datos solicitados no están disponibles.
Nombre de destino de la fuente de datos Nombre de los datos | |
ISCEVT_ErrNotSupported (425) | ISCLISTENARG(3)
info->argv[0] info->argv[1] info->argv[2] | No se da soporte a los datos solicitados.
Nombre de destino de la fuente de datos Nombre de los datos Nombre del elemento de datos (si no está vacío) | |
ISCEVT_ErrNetConn (601) | NULL | No se ha podido conectar con el servidor. | |
ISCEVT_ErrSendRequest (602) | NULL | No se ha podido enviar la petición. | |
ISCEVT_ErrRecvReply (603) | NULL | No se ha podido recibir la respuesta. | |
ISCEVT_ErrRecvTimeout (604) | NULL | Se ha excedido el tiempo de espera mientras se recibía la respuesta. | |
ISCEVT_ErrRecvAck (605) | NULL | No se ha podido recibir un reconocimiento. | |
ISCRTN_ErrCloseNetLib (608) | NULL | No se ha podido cerrar la biblioteca de la red | |
ISCEVT_ErrOutOfMemory (610) | NULL | Falta de memoria. | |
ISCEVT_ErrInternal (698) | ISCLISTENARG(1)
info->argv[0] | Se han producido otros errores internos.
Estado del error (en forma de serie). |
Tabla 146. Códigos de suceso de iscEngineListenerPF
Tipo de suceso: ISCEVTTYPE_Fatal | ||
Código de suceso | Inform. suceso (argc) | Descripción |
---|---|---|
ISCEVT_FatSyncCfgAbort (303) | NULL | Ha fallado la sincronización de la configuración; se cancela anormalmente la sincronización. |
ISCEVT_FatAuthenticateFailed (304) | NULL | Ha fallado la autentificación; se cancela anormalmente la sincronización. |
ISCEVT_FatIncompVersion (310) | NULL | Versión de cliente de sincronización incompatible. |
ISCEVT_FatInvalidSession (313) | NULL | ID de sesión no válido. |
ISCEVT_FatSyncGroup (314) | NULL | El usuario no pertenece a ningún grupo de sincronización. |
ISCEVT_FatRegisterDevice (315) | NULL | No se ha podido registrar el dispositivo para el usuario. |
ISCEVT_FatNetOpenConn (600) | NULL | No se ha podido abrir una conexión con el servidor. |
ISCEVT_FatOpenNetLib (606) | NULL | No se ha podido cargar la biblioteca de la Red. |
ISCEVT_FatResolveHost (609) | NULL | No se ha podido resolver el nombre de host. |
ISCEVT_FatServerForbidden (611) | NULL | Está prohibido sincronizar con el servidor. |
ISCEVT_FatServerNotFound (612) | NULL | No se ha encontrado el servidor |
ISCEVT_FatServer (613) | NULL | Error del servidor. |
ISCEVT_FatServerNotAvail (614) | NULL | El servidor no está respondiendo. |
ISCEVT_FatNetUnknown (699) | NULL | Error desconocido de la red. |
Ejemplo:
isy_INT32 mySyncListener( isy_UINT32 listenerData, ISCEVT* event, isy_VOID* pExtraInfo) { char *statusMsg = appEventCodeToMessage(event); int timesRetried; switch (event->type) { case ISCEVTTYPE_Info: appStatusBar(statusMsg); // appStatusBar puede ser cualquier rutina que muestre el statusMsg // (por ejemplo, en una barra de estado) return ISCRTNCB_Done; case ISCEVTTYPE_Retry: timesRetried = event->retry; if (timesRetried >= 3) // Intentar como máximo 3 veces return ISCRTNCB_ReplyNo; else return appRetryCancelBox(statusMsg, 10); // tiempo de espera 10 seg // appRetryCancelBox puede ser cualquier rutina que muestre una ventana // con dos botones: Cancelar y Reintentar. Devuelve // ISCRTNCB_ReplyYes, si el usuario pulsa Reintentar // ISCRTNCB_ReplyNo, si el usuario pulsa Cancelar // Si el usuario no hace una selección, devuelve ISCRTNCB_Default. break; // todos los otros tipos de suceso no importan default: return ISCRTNCB_Default; } // switch (event->type) } // mySyncListener
Códigos de retorno
Si el tipo de suceso es ISCEVTTYPE_Retry, la función de escucha devuelve uno de los códigos siguientes:
Si el tipo de suceso es ISCEVTTYPE_Query, el significado del código de retorno depende del valor del código del suceso. En otras palabras, la función de escucha comprueba el código del suceso y devuelve el valor apropiado. Pero, si el usuario no responde a la consulta, la aplicación devuelve el código siguiente:
Para los tipos de suceso distintos de ISCEVTTYPE_Retry e ISCEVTTYPE_Query, el motor de sincronización ignora el código de retorno. La función de escucha simplemente devuelve ISCRTNCB_Done.
Nota: Para aquellos sucesos que no son de interés, la función de escucha simplemente devuelve ISCRTNCB_Default y permite que el motor de sincronización emprenda la acción por omisión.
Nota: Un asterisco (*) encima indica la acción por omisión para diversos tipos de suceso.
Restricciones
La función de escucha definida por el usuario debe seguir el protocolo del motor de sincronización. En caso contrario, es posible que el motor de sincronización no funcione correctamente.
Conceptos relacionados
Tareas relacionadas
Consulta relacionada