diff options
Diffstat (limited to 'OpenSim/Services/Connectors/SimianGrid/SimianFriendsServiceConnector.cs')
-rw-r--r-- | OpenSim/Services/Connectors/SimianGrid/SimianFriendsServiceConnector.cs | 58 |
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" }, |