Administración de registros de grupo
Un registro de grupo es datos específicos publicados para todos los miembros activos de un grupo del mismo nivel, por ejemplo, un mensaje de chat o una actualización de estado específica de la aplicación. Un registro se representa mediante la estructura de PEER_RECORD y contiene la siguiente información sobre un elemento del mismo nivel:
- El identificador de registro es un valor que identifica de forma única un registro en el grupo del mismo nivel.
- GUID que especifica el tipo de registro. Las aplicaciones pueden admitir diferentes tipos de registros. Una aplicación interpreta el campo de datos de un registro basado en el tipo de registro. Algunos GUID están reservados y la llamada API devuelve PEER_E_NOT_AUTHORIZED cuando la aplicación intenta usarlas.
- Conjunto de atributos de registro descritos como una cadena XML. Los atributos se usan al buscar registros. Para obtener más información sobre los atributos, vea Esquema de atributo de registro.
- Hora del mismo nivel en que se crea un registro.
- Tiempo del mismo nivel que expira un registro.
- Hora del mismo nivel en que se modifica un registro.
- Creador de un registro.
- Miembro que modifica un registro.
- Estructura PEER_DATA que contiene la firma criptográfica de todos los campos de esta estructura PEER_RECORD . Este campo no se puede actualizar ni modificar directamente mediante un elemento del mismo nivel.
- Estructura PEER_DATA que contiene los datos específicos de la aplicación asociados a este registro como una matriz de bytes. El tipo de datos presentes en este campo viene determinado por el tipo de registro definido por la aplicación.
Obtener registros de grupo del mismo nivel
Los registros individuales se obtienen llamando a PeerGroupGetRecord con el identificador del registro. Al procesar todos los registros de un tipo específico, el conjunto enumerado de todos los registros del grupo del mismo nivel actual se obtiene llamando primero a PeerGroupEnumRecords para abrir la enumeración y, a continuación, llamar iterativamente a PeerGetNextItem hasta que se recuperen todos los registros. Cuando termine, cierre la enumeración y libere la memoria asociada mediante una llamada a PeerEndEnumeration.
Cuando un elemento del mismo nivel crea, elimina o actualiza un registro, el registro afectado se publica en todos los miembros del grupo del mismo nivel mediante el evento PEER_GROUP_EVENT_RECORD_CHANGE . Tenga en cuenta que si un elemento del mismo nivel no está conectado al grupo, recibirá el registro actualizado y la próxima vez que se conecte. Es importante registrarse para este evento con PeerGroupRegisterEvent si la aplicación mantiene o administra registros de cualquier manera significativa. Como alternativa, la aplicación puede consultar la base de datos de registros a petición mediante PeerGroupSearchRecords.
Cuando se genera el evento de PEER_GROUP_EVENT_RECORD_CHANGE , el identificador de registro y el tipo de registro específicos, así como el tipo de cambio (agregar, actualizar, eliminar) se recibe como una estructura de PEER_EVENT_RECORD_CHANGE_DATA . Esta estructura se obtiene con una llamada a PeerGroupGetEventData. Si el cambio es un complemento o una actualización, debe usar PeerGroupGetRecord para obtener el registro con el identificador proporcionado. La base de datos de registros local de la infraestructura se actualiza automáticamente.
También puede buscar registros específicos basados en atributos personalizados específicos proporcionados en el campo pwzAttributes de PEER_RECORD, así como en cualquier atributo predefinido. Para ello, use la función PeerGroupSearchRecords con una consulta de búsqueda XML con formato especificado en el tema Formato de consulta de búsqueda de registros.
Para obtener más información sobre cómo trabajar con registros en la infraestructura del mismo nivel, consulte el tema Registros en Uso de la infraestructura del mismo nivel.
Administración de registros de grupo del mismo nivel
Cuando el creador del grupo del mismo nivel emite las invitaciones iniciales, puede especificar que determinados miembros actúen en un rol administrativo (PEER_GROUP_ROLE_ADMIN) cada vez que emita nuevas credenciales al usuario (a través de PeerGroupCreateInvitation o PeerGroupIssueCredentials). Un administrador tiene la capacidad de agregar, eliminar y actualizar directamente los registros de grupo del mismo nivel. Por el contrario, un miembro del grupo del mismo nivel con su rol establecido en PEER_GROUP_ROLE_MEMBER o PEER_GROUP_ROLE_INVITING_MEMBER solo puede agregar, actualizar y eliminar sus propios registros.
El creador tiene el rol de administrador de forma predeterminada.
Para actualizar un registro, obtenga el registro con PeerGroupGetRecord o PeerGroupEnumRecords, realice los cambios y pase el registro actualizado a PeerGroupUpdateRecord.
Para eliminar un registro, pase el identificador de registro para eliminarlo a PeerGroupDeleteRecord.
Para agregar un registro, cree una nueva estructura de PEER_RECORD y rellene los campos siguientes:
- dwSize. Este campo contiene el valor de sizeof(PEER_RECORD).
- ftExpiration. Este campo contiene la fecha y hora de expiración de este registro, expresados en tiempo del mismo nivel como una estructura FILETIME .
- type. Este campo contiene un valor GUID que identifica el tipo de registro a la aplicación. Si este tipo es personalizado para la infraestructura de la aplicación, también debe rellenar el campo de datos .
La infraestructura rellena los campos siguientes y se omitirá si la aplicación establece:
- id
- pwzCreatorId
- pwzLastModifiedById
- ftCreation
- ftLastModified
- securityData
Los demás campos son opcionales. Para agregar este nuevo registro al grupo del mismo nivel, páselo a PeerGroupAddRecord.
Importación y exportación de registros
Los registros de grupo punto a punto se mantienen localmente como una base de datos. Para guardar una instantánea actual de la base de datos de registros del grupo del mismo nivel en un archivo local, llame a PeerGroupExportDatabase y pásela el identificador al grupo del mismo nivel. A continuación, este archivo se puede transportar a otro equipo o aplicación, que puede extraer y usar esta base de datos de registros llamando a PeerGroupImportDatabase.