90 lines
4.3 KiB
Diff
90 lines
4.3 KiB
Diff
From b60391860348fdc59c518a9c585ac201767f0378 Mon Sep 17 00:00:00 2001
|
|
From: Christopher <christopher@clatza.dev>
|
|
Date: Fri, 9 Jul 2021 21:55:17 +0200
|
|
Subject: [PATCH] add hg notification to friendService
|
|
|
|
---
|
|
.../HypergridService/HGFriendsService.cs | 40 +++++++++++--------
|
|
1 file changed, 24 insertions(+), 16 deletions(-)
|
|
|
|
diff --git a/OpenSim/Services/HypergridService/HGFriendsService.cs b/OpenSim/Services/HypergridService/HGFriendsService.cs
|
|
index d3b4f18283..cf68eb549c 100644
|
|
--- a/OpenSim/Services/HypergridService/HGFriendsService.cs
|
|
+++ b/OpenSim/Services/HypergridService/HGFriendsService.cs
|
|
@@ -61,6 +61,7 @@ namespace OpenSim.Services.HypergridService
|
|
protected static IFriendsService m_FriendsService;
|
|
protected static IPresenceService m_PresenceService;
|
|
protected static IUserAccountService m_UserAccountService;
|
|
+ protected static IUserAgentService m_UserAgentService;
|
|
protected static IFriendsSimConnector m_FriendsLocalSimConnector; // standalone, points to HGFriendsModule
|
|
protected static FriendsSimConnector m_FriendsSimConnector; // grid
|
|
|
|
@@ -88,7 +89,7 @@ namespace OpenSim.Services.HypergridService
|
|
if (theService == String.Empty)
|
|
throw new Exception("No FriendsService in config file " + m_ConfigName);
|
|
m_FriendsService = ServerUtils.LoadPlugin<IFriendsService>(theService, args);
|
|
-
|
|
+
|
|
theService = serverConfig.GetString("UserAccountService", string.Empty);
|
|
if (theService == String.Empty)
|
|
throw new Exception("No UserAccountService in " + m_ConfigName);
|
|
@@ -99,13 +100,17 @@ namespace OpenSim.Services.HypergridService
|
|
throw new Exception("No GridService in " + m_ConfigName);
|
|
m_GridService = ServerUtils.LoadPlugin<IGridService>(theService, args);
|
|
|
|
+ theService = serverConfig.GetString("UserAgentService", string.Empty);
|
|
+ if (theService == String.Empty)
|
|
+ throw new Exception("No UserAgentService in " + m_ConfigName);
|
|
+ m_UserAgentService = ServerUtils.LoadPlugin<IUserAgentService>(theService, args);
|
|
+
|
|
theService = serverConfig.GetString("PresenceService", string.Empty);
|
|
if (theService == String.Empty)
|
|
throw new Exception("No PresenceService in " + m_ConfigName);
|
|
- m_PresenceService = ServerUtils.LoadPlugin<IPresenceService>(theService, args);
|
|
|
|
+ m_PresenceService = ServerUtils.LoadPlugin<IPresenceService>(theService, args);
|
|
m_FriendsSimConnector = new FriendsSimConnector();
|
|
-
|
|
m_log.DebugFormat("[HGFRIENDS SERVICE]: Starting...");
|
|
|
|
}
|
|
@@ -277,19 +282,22 @@ namespace OpenSim.Services.HypergridService
|
|
}
|
|
}
|
|
|
|
-// // Lastly, let's notify the rest who may be online somewhere else
|
|
-// foreach (string user in usersToBeNotified)
|
|
-// {
|
|
-// UUID id = new UUID(user);
|
|
-// //m_UserAgentService.LocateUser(id);
|
|
-// //etc...
|
|
-// //if (m_TravelingAgents.ContainsKey(id) && m_TravelingAgents[id].GridExternalName != m_GridName)
|
|
-// //{
|
|
-// // string url = m_TravelingAgents[id].GridExternalName;
|
|
-// // // forward
|
|
-// //}
|
|
-// //m_log.WarnFormat("[HGFRIENDS SERVICE]: User {0} is visiting another grid. HG Status notifications still not implemented.", user);
|
|
-// }
|
|
+ foreach (string user in usersToBeNotified)
|
|
+ {
|
|
+ try
|
|
+ {
|
|
+ UUID id = new UUID(user);
|
|
+ String remoteServer = m_UserAgentService.LocateUser(id);
|
|
+ GridRegion remoteRegion = m_GridService.GetRegionByURI(UUID.Zero, new RegionURI(remoteServer));
|
|
+ m_FriendsSimConnector.StatusNotify(remoteRegion, id, user, online);
|
|
+ }
|
|
+ catch(Exception error)
|
|
+ {
|
|
+ m_log.Error("User: " + user);
|
|
+ m_log.Error(error.Message);
|
|
+ m_log.Error(error.StackTrace);
|
|
+ }
|
|
+ }
|
|
|
|
// and finally, let's send the online friends
|
|
if (online)
|
|
--
|
|
2.30.1.windows.1
|
|
|