Správa záznamů skupiny
Záznam skupiny je specifická data publikovaná pro všechny aktivní členy partnerské skupiny, například chatovací zprávu nebo aktualizaci stavu specifickou pro aplikaci. Záznam je reprezentován strukturou PEER_RECORD a obsahuje následující informace o peeru:
- ID záznamu je hodnota, která jednoznačně identifikuje záznam v partnerské skupině.
- Identifikátor GUID, který určuje typ záznamu. Aplikace můžou podporovat různé typy záznamů. Aplikace interpretuje pole dat záznamu na základě typu záznamu. Některé identifikátory GUID jsou rezervované a volání rozhraní API vrátí PEER_E_NOT_AUTHORIZED, když se je aplikace pokusí použít.
- Sada atributů záznamů, které jsou popsány jako řetězec XML. Atributy se používají při vyhledávání záznamů. Další informace o atributech naleznete v tématu Record Attribute Schema.
- Čas, kdy je záznam vytvořen vrstevníkem.
- Čas partnerského vztahu, kdy vyprší platnost záznamu.
- Čas synchronizace, kdy je záznam upraven.
- Tvůrce záznamu.
- Člen, který upravuje záznam.
- Struktura PEER_DATA, která obsahuje kryptografický podpis pro všechna pole v této PEER_RECORD struktuře. Toto pole nemůže přímo aktualizovat ani změnit kolega.
- Struktura PEER_DATA, která obsahuje data specifická pro aplikaci přidružená k tomuto záznamu jako pole bajtů. Typ dat v tomto poli je určen typem záznamu definovaným aplikací.
Získání záznamů vrstevnické skupiny
Jednotlivé záznamy se získávají voláním PeerGroupGetRecord s ID záznamu. Při zpracování všech záznamů určitého typu se výčtová sada všech aktuálních záznamů partnerské skupiny získá prvním voláním PeerGroupEnumRecords k otevření výčtu a následným iterativním voláním PeerGetNextItem, dokud nebudou načteny všechny záznamy. Po dokončení zavřete výčet a uvolněte paměť přidruženou voláním PeerEndEnumeration.
Při vytvoření, odstranění nebo aktualizaci záznamu partnerem se ovlivněný záznam publikuje všem členům peer skupiny prostřednictvím události PEER_GROUP_EVENT_RECORD_CHANGE. Upozorňujeme, že pokud uzel není připojen ke skupině, dostane aktualizovaný záznam, až se příště připojí. Pokud vaše aplikace nějakým smysluplným způsobem udržuje nebo spravuje záznamy, je důležité se zaregistrovat pro tuto událost s PeerGroupRegisterEvent. Případně může aplikace dotazovat databázi záznamů na vyžádání pomocí PeerGroupSearchRecords.
Při vyvolání události PEER_GROUP_EVENT_RECORD_CHANGE se přijímá jako struktura PEER_EVENT_RECORD_CHANGE_DATA konkrétní ID a typ záznamu, stejně jako typ změny (přidání, aktualizace, odstranění). Tato struktura je získána voláním PeerGroupGetEventData. Pokud je změna přidáním nebo aktualizací, měli byste použít PeerGroupGetRecord k získání záznamu se zadaným ID. Databáze místních záznamů pro infrastrukturu se aktualizuje automaticky.
Můžete také vyhledat konkrétní záznamy na základě konkrétních vlastních atributů zadaných v pwzAttributes pole PEER_RECORDa také libovolné předdefinované atributy. K tomu použijte funkci PeerGroupSearchRecords s vyhledávacím dotazem XML, který je formátován podle specifikací v tématu Formát vyhledávacího dotazu záznamu.
Další podrobnosti o práci se záznamy v partnerské infrastruktuře najdete v tématu Záznamy v Použití partnerské infrastruktury.
Správa záznamů partnerských skupin
Při vydání počátečních pozvánek tvůrcem partnerské skupiny může určit, že někteří členové budou sloužit v roli správy (PEER_GROUP_ROLE_ADMIN), kdykoli uživateli vydá nové přihlašovací údaje (prostřednictvím PeerGroupCreateInvitation nebo PeerGroupIssueCredentials). Správce může přímo přidávat, odstraňovat a aktualizovat všechny záznamy partnerské skupiny. Naopak člen partnerské skupiny s rolí nastavenou na PEER_GROUP_ROLE_MEMBER nebo PEER_GROUP_ROLE_INVITING_MEMBER může přidávat, aktualizovat a odstraňovat pouze vlastní záznamy.
Tvůrce má ve výchozím nastavení roli správce.
Chcete-li aktualizovat záznam, získejte záznam pomocí PeerGroupGetRecord nebo PeerGroupEnumRecords, proveďte změny a předejte aktualizovaný záznam PeerGroupUpdateRecord.
Pokud chcete odstranit záznam, předejte ID záznamu, které chcete odstranit, do PeerGroupDeleteRecord.
Pokud chcete přidat záznam, vytvořte novou strukturu PEER_RECORD a vyplňte následující pole:
- dwSize. Toto pole obsahuje hodnotu sizeof(PEER_RECORD).
- ftExpiration. Toto pole obsahuje datum a čas vypršení platnosti tohoto záznamu vyjádřený v partnerském čase jako struktura FILETIME.
- typ. Toto pole obsahuje hodnotu GUID, která identifikuje typ záznamu pro aplikaci. Pokud je tento typ vlastní infrastruktuře vaší aplikace, měli byste také vyplnit datové pole .
Následující pole jsou vyplněna infrastrukturou a nebudou ignorována, pokud je nastaví aplikace:
- id
- pwzCreatorId
- pwzLastModifiedById
- ftCreation
- ftLastModified
- bezpečnostníData
Zbývající pole jsou volitelná. Pokud chcete přidat tento nový záznam do partnerské skupiny, předejte ho PeerGroupAddRecord.
Import a export záznamů
Záznamy skupin peer-to-peer se spravují místně jako databáze. Pokud chcete uložit aktuální snímek databáze záznamů peer skupiny do místního souboru, zavolejte PeerGroupExportDatabasea předejte mu popisovač peer skupiny. Tento soubor lze pak přenést do jiného počítače nebo aplikace, který může extrahovat a používat tuto databázi záznamů voláním PeerGroupImportDatabase.