aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Services/Connectors/SimianGrid/SimianFriendsServiceConnector.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Services/Connectors/SimianGrid/SimianFriendsServiceConnector.cs')
-rw-r--r--OpenSim/Services/Connectors/SimianGrid/SimianFriendsServiceConnector.cs58
1 files changed, 20 insertions, 38 deletions
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianFriendsServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianFriendsServiceConnector.cs
index 89f3594..5b18aef 100644
--- a/OpenSim/Services/Connectors/SimianGrid/SimianFriendsServiceConnector.cs
+++ b/OpenSim/Services/Connectors/SimianGrid/SimianFriendsServiceConnector.cs
@@ -46,8 +46,7 @@ namespace OpenSim.Services.Connectors.SimianGrid
46 /// <summary> 46 /// <summary>
47 /// Stores and retrieves friend lists from the SimianGrid backend 47 /// Stores and retrieves friend lists from the SimianGrid backend
48 /// </summary> 48 /// </summary>
49 [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")] 49 public class SimianFriendsServiceConnector : IFriendsService
50 public class SimianFriendsServiceConnector : IFriendsService, ISharedRegionModule
51 { 50 {
52 private static readonly ILog m_log = 51 private static readonly ILog m_log =
53 LogManager.GetLogger( 52 LogManager.GetLogger(
@@ -55,20 +54,6 @@ namespace OpenSim.Services.Connectors.SimianGrid
55 54
56 private string m_serverUrl = String.Empty; 55 private string m_serverUrl = String.Empty;
57 56
58 #region ISharedRegionModule
59
60 public Type ReplaceableInterface { get { return null; } }
61 public void RegionLoaded(Scene scene) { }
62 public void PostInitialise() { }
63 public void Close() { }
64
65 public SimianFriendsServiceConnector() { }
66 public string Name { get { return "SimianFriendsServiceConnector"; } }
67 public void AddRegion(Scene scene) { if (!String.IsNullOrEmpty(m_serverUrl)) { scene.RegisterModuleInterface<IFriendsService>(this); } }
68 public void RemoveRegion(Scene scene) { if (!String.IsNullOrEmpty(m_serverUrl)) { scene.UnregisterModuleInterface<IFriendsService>(this); } }
69
70 #endregion ISharedRegionModule
71
72 public SimianFriendsServiceConnector(IConfigSource source) 57 public SimianFriendsServiceConnector(IConfigSource source)
73 { 58 {
74 Initialise(source); 59 Initialise(source);
@@ -76,38 +61,29 @@ namespace OpenSim.Services.Connectors.SimianGrid
76 61
77 public void Initialise(IConfigSource source) 62 public void Initialise(IConfigSource source)
78 { 63 {
79 bool isSimianEnabled = false; 64 IConfig gridConfig = source.Configs["FriendsService"];
80 65 if (gridConfig != null)
81 if (source.Configs["Friends"] != null)
82 {
83 string module = source.Configs["Friends"].GetString("Connector");
84 isSimianEnabled = !String.IsNullOrEmpty(module) && module.EndsWith(this.Name);
85 }
86
87 if (isSimianEnabled)
88 { 66 {
89 IConfig assetConfig = source.Configs["FriendsService"]; 67 string serviceUrl = gridConfig.GetString("FriendsServerURI");
90 if (assetConfig == null) 68 if (!String.IsNullOrEmpty(serviceUrl))
91 { 69 {
92 m_log.Error("[SIMIAN FRIENDS CONNECTOR]: FriendsService missing from OpenSim.ini"); 70 if (!serviceUrl.EndsWith("/") && !serviceUrl.EndsWith("="))
93 throw new Exception("Friends connector init error"); 71 serviceUrl = serviceUrl + '/';
72 m_serverUrl = serviceUrl;
94 } 73 }
95
96 string serviceURI = assetConfig.GetString("FriendsServerURI");
97 if (String.IsNullOrEmpty(serviceURI))
98 {
99 m_log.Error("[SIMIAN FRIENDS CONNECTOR]: No Server URI named in section FriendsService");
100 throw new Exception("Friends connector init error");
101 }
102
103 m_serverUrl = serviceURI;
104 } 74 }
75
76 if (String.IsNullOrEmpty(m_serverUrl))
77 m_log.Info("[SIMIAN FRIENDS CONNECTOR]: No FriendsServerURI specified, disabling connector");
105 } 78 }
106 79
107 #region IFriendsService 80 #region IFriendsService
108 81
109 public FriendInfo[] GetFriends(UUID principalID) 82 public FriendInfo[] GetFriends(UUID principalID)
110 { 83 {
84 if (String.IsNullOrEmpty(m_serverUrl))
85 return new FriendInfo[0];
86
111 Dictionary<UUID, FriendInfo> friends = new Dictionary<UUID, FriendInfo>(); 87 Dictionary<UUID, FriendInfo> friends = new Dictionary<UUID, FriendInfo>();
112 88
113 OSDArray friendsArray = GetFriended(principalID); 89 OSDArray friendsArray = GetFriended(principalID);
@@ -156,6 +132,9 @@ namespace OpenSim.Services.Connectors.SimianGrid
156 132
157 public bool StoreFriend(UUID principalID, string friend, int flags) 133 public bool StoreFriend(UUID principalID, string friend, int flags)
158 { 134 {
135 if (String.IsNullOrEmpty(m_serverUrl))
136 return true;
137
159 NameValueCollection requestArgs = new NameValueCollection 138 NameValueCollection requestArgs = new NameValueCollection
160 { 139 {
161 { "RequestMethod", "AddGeneric" }, 140 { "RequestMethod", "AddGeneric" },
@@ -176,6 +155,9 @@ namespace OpenSim.Services.Connectors.SimianGrid
176 155
177 public bool Delete(UUID principalID, string friend) 156 public bool Delete(UUID principalID, string friend)
178 { 157 {
158 if (String.IsNullOrEmpty(m_serverUrl))
159 return true;
160
179 NameValueCollection requestArgs = new NameValueCollection 161 NameValueCollection requestArgs = new NameValueCollection
180 { 162 {
181 { "RequestMethod", "RemoveGeneric" }, 163 { "RequestMethod", "RemoveGeneric" },