Hypergrid Implementation/de

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
(Created page with "{{Quicklinks|Hypergrid_Implementation}} = Einführung = <b> Diese Informationen sind veraltet</b><br> Siehe Hypergrid Glossar für ein sehr unvollständiges Glossar der H...")
 
 
Line 90: Line 90:
 
== OpenSim.Services.HypergridService ==
 
== OpenSim.Services.HypergridService ==
  
{|
+
{| border = "1"
 
+
border = "1"
+
 
  ! Klassenname                          !! Schnittstellen                            !! Beschreibung
 
  ! Klassenname                          !! Schnittstellen                            !! Beschreibung
 
  |-
 
  |-

Latest revision as of 03:56, 4 December 2023

Contents

[edit] Einführung

Diese Informationen sind veraltet
Siehe Hypergrid Glossar für ein sehr unvollständiges Glossar der Hypergrid-Begriffe.

[edit] Klassenübersicht

[edit] OpenSim.Region.CoreModules.Avatar

Klassenname Schnittstellen Beschreibung
Friends.HGFriendsModule IFriendsModule, IFriendsSimConnector, ISharedRegionModule Erweitert und ersetzt FriendsModule. Erreichbar über Scene.RequestModuleInterface<IFriendsModule>() und Scene.RequestModuleInterface<IFriendsSimConnector>(). Führt HG-spezifische Freundesfunktionen aus, wie das Weiterleiten von Freundesanfragen und das Zwischenspeichern.
Friends.HGStatusNotifier None Hilft bei der Verwaltung von HG-Freundesstatusbenachrichtigungen.
InstantMessage.HGMessageTransferModule IInstantMessageSimConnector, IMessageTransferModule, ISharedRegionModule Bearbeitet das Senden von Sofortnachrichten an externe Agenten. Ersetzt MessageTransferModule.
Lure.HGLureModule ISharedRegionModule Bearbeitet das Senden von Teleportanfragen an externe Agenten. Ersetzt LureModule.

[edit] OpenSim.Region.CoreModules.Framework

Klassenname Schnittstellen Beschreibung
EntityTransfer.HGEntityTransferModule IEntityTransferModule, IUserAgentVerificationModule, INonSharedRegionModule Erweitert und ersetzt EntityTransferModule. Abrufbar über Scene.RequestModuleInterface<IEntityTransferModule>() und Scene.RequestModuleInterface<IUserAgentVerificationModule>(). Führt Hypergrid-spezifische Operationen durch, wie das Übertragen von Assets von ausländischem zu lokalem Asset-Service für Avatar-Anhänge.
InventoryAccess.HGInventoryAccessModule IInventoryAcessmodule, INonSharedRegionModule Unterklasse von InventoryAccessModule, die dies in der Hypergrid-Konfiguration ersetzt. Registriert sich bei der Szene, damit andere Module darauf zugreifen können, wenn sie scene.RequestModuleInterface<IInventoryAccessModule>() aufrufen.
InventoryAccess.HGAssetMapper None Führt Asset-Operationen im Zusammenhang mit Inventaroperationen durch, wie das Abrufen und Einfügen aller Assets, die zum Rendern eines Objekts von einem ausländischen Asset-Service erforderlich sind, und das Einfügen in den lokalen Asset-Service.
UserManagement.HGUserManagementModule IUserManagement, ISharedRegionModule Erweitert und ersetzt UserManagementModule. Registriert sich bei der Szene als IUserManagement. Führt HG-spezifische Operationen durch, um bekannte Benutzeridentifikatoren zu verwalten.


[edit] OpenSim.Region.CoreModules.ServiceConnectorsOut

Klassenname Schnittstellen Beschreibung
Asset.HGAssetBroker. (in 0.9.2 entfernt) IAssetService, ISharedRegionModule Registriert als die Schnittstelle, die von Scene.RequestModuleInterface<IAssetService>() zurückgegeben wird. Entscheidet, ob Asset-Anfragen an Cache, lokale Speicherung oder ausländische Asset-Services weitergeleitet werden sollen, abhängig von der Asset-ID. Ausländische Asset-Service-Anfragen werden von HGAssetServiceConnector behandelt. Führt auch Sicherheitsprüfungen durch, z. B. ob bestimmte Assets auf ausländischen Grids importiert oder exportiert werden können. Assets, die von Remote-Asset-Services abgerufen werden, werden zum lokalen Asset-Service kopiert. In 0.9.2 wird dies durch RegionAssetConnector ersetzt, der alle Fälle behandelt, entsprechend ausgewählten Connectors und Asset-Anfragen
Inventory.HGInventoryBroker IInvenotryService, ISharedRegionModule Registriert als die Schnittstelle, die von Scene.RequestModuleInterface<IInventoryService>() zurückgegeben wird. Entscheidet, ob eine Inventaranforderung lokal (im Fall eines lokalen Benutzers) oder an den Inventar-Service eines ausländischen Grids weitergeleitet werden muss.

[edit] OpenSim.Server.Handlers.Hypergrid

Diese Klassen sind Klebstoffcode, der externe Nachrichten empfängt, um Hypergrid-Dienste aufzurufen.

Klassenname Schnittstellen/Base-Klassen Beschreibung
GatekeeperAgentHandler AgentPostHandler Leitet eingehende Agentenerstellungsauftrufe an den GatekeeperService weiter.
GatekeeperServiceConnector ServiceConnector Empfängt eingehende Anrufe für den GatekeeperService.
HeloServerConnector ServiceConnector TODO
HGFriendsServerConnector ServiceConnector Instanziiert HGFriendsServerPostHandler.
HGFriendsServerPostHandler BaseStreamHandler Empfängt eingehende HG-Freunde-Aufrufe und löst die entsprechende HGFriendsService-Methode aus.
HomeAgentHandler AgentPostHandler TODO
HypergridHandlers - Bietet Handler für GatekeeperServiceConnector.
InstantMessageServerConnector ServiceConnector Empfängt eingehende Sofortnachrichten über das Hypergrid und leitet sie an den IM-Service weiter.
UserAgentServerConnector ServiceConnector Leitet eingehende Benutzer-Agentenanforderungen an den UserAgent-Service weiter.

[edit] OpenSim.Services.Connectors

Klassenname Schnittstellen Beschreibung
Asset.HGAssetServiceConnector IAssetService Intern von HGAssetBroker instanziiert, um Anfragen zu bearbeiten, die an ausländische Asset-Services weitergeleitet werden müssen.
Hypergrid.GatekeeperServiceConnector ISimulationService Connector zu einem ausländischen Gatekeeper-Dienst.
Hypergrid.HeloServicesConnector None Connector zu einem ausländischen Helo-Dienst.
Hypergrid.HGFriendsServicesConnector None Connector zu einem ausländischen Freunde-Dienst.
Hypergrid.UserAgentServiceConnector ISimulationService, IUserAgentService Connector zu einem ausländischen Benutzer-Agenten-Dienst.

[edit] OpenSim.Services.HypergridService

Klassenname Schnittstellen Beschreibung
GatekeeperService IGatekeeperService Führt Gatekeeper-Operationen für das Grid durch. Siehe Hypergrid-Protokoll für weitere Details.
HGAssetService IAssetService Bietet den Asset-Service, auf den ausländische Grids zugreifen.
HGFriendsService IHGFriendsService Bietet den Freunde-Service, auf den ausländische Grids zugreifen.
HGInstantMessageService IInstantMessage Bietet den Sofortnachrichten-Service, auf den ausländische Grids zugreifen.
HGInventoryService IInventoryService, XInventoryService Bietet den Inventar-Service, auf den ausländische Grids zugreifen. Wahrscheinlich für ältere Versionen von Hypergrid und durch HGSuitcaseInventoryService ersetzt.
HGSuitcaseInventoryService IInventoryService, XInventoryService Bietet den Inventar-Service, auf den ausländische Grids zugreifen. Verwendet das 'Koffer'-Konzept (mit passendem Benutzer-Inventarordner), um den Zugriff zu steuern.
UserAccountCache IUserAccountService Scheint derzeit nicht verwendet zu werden.
UserAgentService IUserAgentService Bietet den Benutzer-Agenten-Service, auf den ausländische Grids zugreifen. Siehe Hypergrid-Protokoll für weitere Details.

[edit] Hyperlinks und Agentenübertragungen

Wenn Sie eine Verbindung zwischen Ihrem Opensim und einem anderen herstellen, wird eine Nachricht an dieses andere Opensim gesendet, in der Informationen dazu angefordert werden. Diese Informationen umfassen die Netzwerkinformationen dieses Opensim-Hosts und die Koordinaten seiner ersten Region auf seiner lokalen Karte in Form eines Region-Handles. Angenommen, Sie verbinden den Knoten X.com:9000 und platzieren ihn auf Ihrer lokalen Karte bei 900, 900. Dieses Opensim führt wahrscheinlich eine oder mehrere Regionen aus, die wahrscheinlich nicht bei 900, 900 auf ihrer eigenen Karte liegen. Angenommen, die erste Region dieses Opensim befindet sich bei 1100, 1100. Aus Ihrer Sicht spielt es keine Rolle, welche diese anderen Koordinaten sind, und Sie müssen es nicht wissen - das ist der Schlüssel zur Dezentralisierung der "Welt", wie sie von einer 2D-Karte gegeben wird. Sie möchten es auf Ihrer Karte bei 900, 900 platzieren. Die "wahre" Position dieses Simulators ist nur für den LL-Viewer wichtig, wenn es Teleporte zwischen Ihrer Welt und diesem anderen Opensim gibt. Diese Zuordnung zwischen Koordinatensystemen ist das Wesen von Hyperlinks für Opensim; es ist eine einfache, aber entscheidende Sache, die die Hypergrid-Implementierung macht. Die Zuordnung erfolgt bei Ereignissen wie TeleportFinish; anstelle der lokalen Koordinaten sendet der Hypergrid-Teleport-Wrapper die entfernten Koordinaten an den Viewer.

Wenn ein Agent durch diesen Hyperlink teleportiert, passiert Folgendes. Zuerst, bevor InformRegionOfChildAgent, informiert das lokale Opensim das entfernte Opensim über diesen ausländischen Benutzer über die Methode "expect_hg_user". Diese Nachricht sendet die Adressen aller Server mit, die dieser Benutzer verwendet, d. h. Benutzer-, Inventar- und Asset-Server. Das entfernte Opensim erstellt einen Eintrag für diesen Benutzer in seinem lokalen Benutzerprofilcache, aber nicht in seiner Benutzerdatenbank; die Informationen zum ausländischen Benutzer sind nicht persistent. Danach ist der Teleportationsprozess genau derselbe wie der normale Teleportationsprozess; der einzige Unterschied besteht darin, dass die Region-Handles zwischen der Hyperlink-Position der entfernten Region auf der lokalen Karte und ihrer tatsächlichen Position auf ihrer Karte getauscht werden.

Zusammenfassend sind die beiden neuen Konzepte, die durch die Hypergrid eingeführt wurden, das Konzept eines Hyperlinks und das Konzept eines "lokalen Benutzers" vs. "ausländischer Benutzer".

[edit] Inventarzugriff

Der Zugriff auf das Inventar von einem ausländischen Grid erfolgt durch das Umhüllen der bestehenden Szene-Inventarinteraktionen mit zusätzlichem Code, der Inventarassets von/zu dem Asset-Server des Benutzers abruft oder sendet. Wenn auf das Inventar zugegriffen wird, überprüft der Hypergrid-Wrapper, ob der Benutzer ausländisch ist, und wenn dies der Fall ist, fordert der Wrapper die erforderlichen Assets vom Asset-Server des Benutzers an. Wie bei jedem abgerufenen Asset können diese vom ausländischen Simulator zwischengespeichert werden. Von da an übergibt der Wrapper die Kontrolle an die bestehenden Inventarzugriffsfunktionen.

Wenn etwas dem Inventar hinzugefügt wird, wird der Hypergrid-Wrapper über ein Ereignis benachrichtigt und sendet die Assets an den Asset-Server des Benutzers. Ein Cache der ausgetauschten Item-Identifikatoren wird beibehalten, damit sie nicht ständig neu abgerufen werden.

Das Ergebnis ist, dass hypergrid-fähige Opensim-Instanzen mit mehreren Asset-Servern interagieren, anstatt nur einem. Diese Interaktion wird implementiert, indem für jedes ausländische Grid ein GridAssetClient-Objekt instanziiert wird, anstatt nur dasjenige, das in nicht-hypergrid-fähigen OpenSimulator-Installationen verwendet wird.

[edit] Assetzugriff

In Version 0.9.2 wurden die Regionsmodule LocalAssetServiceConnector, RemoteAssetServiceConnector und HGAssetBroker durch ein einzelnes Modul RegionAssetConnector ersetzt.
(LocalAssetServiceConnector ist derzeit noch vorhanden, wird jedoch nur in einigen Tests verwendet und wird mit der Zeit geändert)
Diese Änderung macht den Code lesbarer mit saubereren Code- und Datenpfaden.
Das Verhalten je nach Simulationstyp hängt von der Auswahl der unteren Verbindungsstellen ab, die in Abschnitt [AssetService] der Ini-Datei des jeweiligen Regionstyps konfiguriert sind (Standalone, Grid, mit oder ohne HG-Region).

LocalGridAssetService definiert den unteren Zugriff auf den Speicher, entweder direkt auf den Grid-Asset-Service im Fall von Standalone oder über einen Connector in einem Grid-Fall.
HypergridAssetService ermöglicht HG-Speicher und definiert den Connector dafür, d. h. HGAssetServiceConnector in normaler Konfiguration.

Ältere Versionen:
In einer normalen, nicht hypergrid-fähigen OpenSimulator-Installation wird entweder

  • der LocalAssetServiceConnector (für Standalone) durch die Angabe in der [Modules]-Sektion von bin/config-include/Standalone.ini
  • oder der RemoteAssetServiceConnector (für Grid) durch die Angabe in der [Modules]-Sektion von bin/config-include/Grid.ini

bei der Szene registriert (über Scene.RegisterModuleInterface()). Beide diese Schnittstellen implementieren IAssetService. Andere Module rufen dies dann über den Aufruf Scene.RequestModuleInterface<IAssetService>() ab.

Unter einer Hypergrid-Konfiguration wird stattdessen HGAssetBroker bei der Szene registriert. Diese IAssetService-Implementierung enthält Logik, um herauszufinden, ob ein angefordertes Asset aus dem Cache bedient werden kann, ein lokal gehostetes Asset ist oder von einem entfernten Grid abgerufen werden muss, usw. Ähnliche Logik ist für andere IAssetService-Methoden vorhanden (z.B. store).

Anfragen, die an ausländische Asset-Services weitergeleitet werden müssen, werden dann an eine interne Instanz von HGAssetServiceConnector weitergeleitet.

HGAssetBroker enthält auch Code, um herauszufinden, ob bestimmte Sicherheitskonfigurationen verhindern sollten, dass bestimmte Assets importiert oder exportiert werden.

[edit] Freunde

Bitte siehe Hypergrid Friends.

Personal tools
General
About This Wiki