aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Framework/Client/IClientInventory.cs1
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs38
-rw-r--r--OpenSim/Region/Framework/Scenes/EventManager.cs12
-rw-r--r--OpenSim/Region/OptionalModules/Avatar/Voice/VivoxVoice/VivoxVoiceModule.cs70
4 files changed, 73 insertions, 48 deletions
diff --git a/OpenSim/Framework/Client/IClientInventory.cs b/OpenSim/Framework/Client/IClientInventory.cs
index 00651e0..d59f8b7 100644
--- a/OpenSim/Framework/Client/IClientInventory.cs
+++ b/OpenSim/Framework/Client/IClientInventory.cs
@@ -33,5 +33,6 @@ namespace OpenSim.Framework.Client
33 public interface IClientInventory 33 public interface IClientInventory
34 { 34 {
35 void SendRemoveInventoryFolders(UUID[] folders); 35 void SendRemoveInventoryFolders(UUID[] folders);
36 void SendRemoveInventoryItems(UUID[] folders);
36 } 37 }
37} 38}
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
index 557ab30..dd18b16 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
@@ -12423,6 +12423,44 @@ namespace OpenSim.Region.ClientStack.LindenUDP
12423 OutPacket(reply, ThrottleOutPacketType.Task); 12423 OutPacket(reply, ThrottleOutPacketType.Task);
12424 } 12424 }
12425 12425
12426 public void SendRemoveInventoryItems(UUID[] items)
12427 {
12428 IEventQueue eq = Scene.RequestModuleInterface<IEventQueue>();
12429
12430 if (eq == null)
12431 {
12432 m_log.DebugFormat("[LLCLIENT]: Null event queue");
12433 return;
12434 }
12435
12436 OSDMap llsd = new OSDMap(3);
12437
12438 OSDMap AgentDataMap = new OSDMap(1);
12439 AgentDataMap.Add("AgentID", OSD.FromUUID(AgentId));
12440 AgentDataMap.Add("SessionID", OSD.FromUUID(SessionId));
12441
12442 OSDArray AgentData = new OSDArray(1);
12443 AgentData.Add(AgentDataMap);
12444
12445 llsd.Add("AgentData", AgentData);
12446
12447 OSDArray ItemData = new OSDArray();
12448
12449 foreach (UUID item in items)
12450 {
12451 OSDMap ItemDataMap = new OSDMap(2);
12452 ItemDataMap.Add("ItemID", OSD.FromUUID(item));
12453 ItemDataMap.Add("AgentID", OSD.FromUUID(AgentId));
12454
12455 ItemData.Add(ItemDataMap);
12456 }
12457
12458 llsd.Add("ItemData", ItemData);
12459
12460 eq.Enqueue(BuildEvent("RemoveInventoryItem",
12461 llsd), AgentId);
12462 }
12463
12426 public void SendRemoveInventoryFolders(UUID[] folders) 12464 public void SendRemoveInventoryFolders(UUID[] folders)
12427 { 12465 {
12428 IEventQueue eq = Scene.RequestModuleInterface<IEventQueue>(); 12466 IEventQueue eq = Scene.RequestModuleInterface<IEventQueue>();
diff --git a/OpenSim/Region/Framework/Scenes/EventManager.cs b/OpenSim/Region/Framework/Scenes/EventManager.cs
index 853491b..470ce2e 100644
--- a/OpenSim/Region/Framework/Scenes/EventManager.cs
+++ b/OpenSim/Region/Framework/Scenes/EventManager.cs
@@ -72,9 +72,11 @@ namespace OpenSim.Region.Framework.Scenes
72 public delegate void OnNewClientDelegate(IClientAPI client); 72 public delegate void OnNewClientDelegate(IClientAPI client);
73 73
74 /// <summary> 74 /// <summary>
75 /// Deprecated in favour of OnClientConnect. 75 /// Triggered when a new client is added to the scene.
76 /// Will be marked Obsolete after IClientCore has 100% of IClientAPI interfaces.
77 /// </summary> 76 /// </summary>
77 /// <remarks>
78 /// Triggered before OnClientLogin.
79 /// </remarks>
78 public event OnNewClientDelegate OnNewClient; 80 public event OnNewClientDelegate OnNewClient;
79 81
80 /// <summary> 82 /// <summary>
@@ -192,6 +194,12 @@ namespace OpenSim.Region.Framework.Scenes
192 194
193 public delegate void ClientClosed(UUID clientID, Scene scene); 195 public delegate void ClientClosed(UUID clientID, Scene scene);
194 196
197 /// <summary>
198 /// Fired when a client is removed from a scene.
199 /// </summary>
200 /// <remarks>
201 /// At the point of firing, the scene still contains the client's scene presence.
202 /// </remarks>
195 public event ClientClosed OnClientClosed; 203 public event ClientClosed OnClientClosed;
196 204
197 public delegate void NewScript(UUID clientID, SceneObjectPart part, UUID itemID); 205 public delegate void NewScript(UUID clientID, SceneObjectPart part, UUID itemID);
diff --git a/OpenSim/Region/OptionalModules/Avatar/Voice/VivoxVoice/VivoxVoiceModule.cs b/OpenSim/Region/OptionalModules/Avatar/Voice/VivoxVoice/VivoxVoiceModule.cs
index 0be0a19..4dbac1d 100644
--- a/OpenSim/Region/OptionalModules/Avatar/Voice/VivoxVoice/VivoxVoiceModule.cs
+++ b/OpenSim/Region/OptionalModules/Avatar/Voice/VivoxVoice/VivoxVoiceModule.cs
@@ -221,15 +221,12 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.VivoxVoice
221 } 221 }
222 } 222 }
223 223
224 // Called to indicate that the module has been added to the region
225 public void AddRegion(Scene scene) 224 public void AddRegion(Scene scene)
226 { 225 {
227
228 if (m_pluginEnabled) 226 if (m_pluginEnabled)
229 { 227 {
230 lock (vlock) 228 lock (vlock)
231 { 229 {
232
233 string channelId; 230 string channelId;
234 231
235 string sceneUUID = scene.RegionInfo.RegionID.ToString(); 232 string sceneUUID = scene.RegionInfo.RegionID.ToString();
@@ -273,23 +270,22 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.VivoxVoice
273 } 270 }
274 } 271 }
275 272
276
277 // Create a dictionary entry unconditionally. This eliminates the 273 // Create a dictionary entry unconditionally. This eliminates the
278 // need to check for a parent in the core code. The end result is 274 // need to check for a parent in the core code. The end result is
279 // the same, if the parent table entry is an empty string, then 275 // the same, if the parent table entry is an empty string, then
280 // region channels will be created as first-level channels. 276 // region channels will be created as first-level channels.
281 277 lock (m_parents)
282 lock (m_parents) 278 {
283 if (m_parents.ContainsKey(sceneUUID)) 279 if (m_parents.ContainsKey(sceneUUID))
284 { 280 {
285 RemoveRegion(scene); 281 RemoveRegion(scene);
286 m_parents.Add(sceneUUID, channelId); 282 m_parents.Add(sceneUUID, channelId);
287 } 283 }
288 else 284 else
289 { 285 {
290 m_parents.Add(sceneUUID, channelId); 286 m_parents.Add(sceneUUID, channelId);
291 } 287 }
292 288 }
293 } 289 }
294 290
295 // we need to capture scene in an anonymous method 291 // we need to capture scene in an anonymous method
@@ -298,26 +294,20 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.VivoxVoice
298 { 294 {
299 OnRegisterCaps(scene, agentID, caps); 295 OnRegisterCaps(scene, agentID, caps);
300 }; 296 };
301
302 } 297 }
303
304 } 298 }
305 299
306 // Called to indicate that all loadable modules have now been added
307 public void RegionLoaded(Scene scene) 300 public void RegionLoaded(Scene scene)
308 { 301 {
309 // Do nothing. 302 // Do nothing.
310 } 303 }
311 304
312 // Called to indicate that the region is going away.
313 public void RemoveRegion(Scene scene) 305 public void RemoveRegion(Scene scene)
314 { 306 {
315
316 if (m_pluginEnabled) 307 if (m_pluginEnabled)
317 { 308 {
318 lock (vlock) 309 lock (vlock)
319 { 310 {
320
321 string channelId; 311 string channelId;
322 312
323 string sceneUUID = scene.RegionInfo.RegionID.ToString(); 313 string sceneUUID = scene.RegionInfo.RegionID.ToString();
@@ -328,10 +318,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.VivoxVoice
328 // iteration over the set of chidren identified. 318 // iteration over the set of chidren identified.
329 // This assumes that there is just one directory per 319 // This assumes that there is just one directory per
330 // region. 320 // region.
331
332 if (VivoxTryGetDirectory(sceneUUID + "D", out channelId)) 321 if (VivoxTryGetDirectory(sceneUUID + "D", out channelId))
333 { 322 {
334
335 m_log.DebugFormat("[VivoxVoice]: region {0}: uuid {1}: located directory id {2}", 323 m_log.DebugFormat("[VivoxVoice]: region {0}: uuid {1}: located directory id {2}",
336 sceneName, sceneUUID, channelId); 324 sceneName, sceneUUID, channelId);
337 325
@@ -360,7 +348,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.VivoxVoice
360 348
361 lock (m_parents) 349 lock (m_parents)
362 { 350 {
363 if (m_parents.ContainsKey(sceneUUID)) 351 if (m_parents.ContainsKey(sceneUUID))
364 { 352 {
365 m_parents.Remove(sceneUUID); 353 m_parents.Remove(sceneUUID);
366 } 354 }
@@ -459,11 +447,11 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.VivoxVoice
459 { 447 {
460 try 448 try
461 { 449 {
462
463 ScenePresence avatar = null; 450 ScenePresence avatar = null;
464 string avatarName = null; 451 string avatarName = null;
465 452
466 if (scene == null) throw new Exception("[VivoxVoice][PROVISIONVOICE] Invalid scene"); 453 if (scene == null)
454 throw new Exception("[VivoxVoice][PROVISIONVOICE]: Invalid scene");
467 455
468 avatar = scene.GetScenePresence(agentID); 456 avatar = scene.GetScenePresence(agentID);
469 while (avatar == null) 457 while (avatar == null)
@@ -566,7 +554,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.VivoxVoice
566 } 554 }
567 } 555 }
568 } 556 }
569 } while (retry); 557 }
558 while (retry);
570 559
571 if (code != "OK") 560 if (code != "OK")
572 { 561 {
@@ -676,7 +665,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.VivoxVoice
676 } 665 }
677 } 666 }
678 667
679
680 /// <summary> 668 /// <summary>
681 /// Callback for a client request for a private chat channel 669 /// Callback for a client request for a private chat channel
682 /// </summary> 670 /// </summary>
@@ -698,10 +686,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.VivoxVoice
698 return "<llsd>true</llsd>"; 686 return "<llsd>true</llsd>";
699 } 687 }
700 688
701
702 private string RegionGetOrCreateChannel(Scene scene, LandData land) 689 private string RegionGetOrCreateChannel(Scene scene, LandData land)
703 { 690 {
704
705 string channelUri = null; 691 string channelUri = null;
706 string channelId = null; 692 string channelId = null;
707 693
@@ -709,11 +695,11 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.VivoxVoice
709 string landName; 695 string landName;
710 string parentId; 696 string parentId;
711 697
712 lock (m_parents) parentId = m_parents[scene.RegionInfo.RegionID.ToString()]; 698 lock (m_parents)
699 parentId = m_parents[scene.RegionInfo.RegionID.ToString()];
713 700
714 // Create parcel voice channel. If no parcel exists, then the voice channel ID is the same 701 // Create parcel voice channel. If no parcel exists, then the voice channel ID is the same
715 // as the directory ID. Otherwise, it reflects the parcel's ID. 702 // as the directory ID. Otherwise, it reflects the parcel's ID.
716
717 if (land.LocalID != 1 && (land.Flags & (uint)ParcelFlags.UseEstateVoiceChan) == 0) 703 if (land.LocalID != 1 && (land.Flags & (uint)ParcelFlags.UseEstateVoiceChan) == 0)
718 { 704 {
719 landName = String.Format("{0}:{1}", scene.RegionInfo.RegionName, land.Name); 705 landName = String.Format("{0}:{1}", scene.RegionInfo.RegionName, land.Name);
@@ -741,8 +727,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.VivoxVoice
741 727
742 m_log.DebugFormat("[VivoxVoice]: Region:Parcel \"{0}\": parent channel id {1}: retrieved parcel channel_uri {2} ", 728 m_log.DebugFormat("[VivoxVoice]: Region:Parcel \"{0}\": parent channel id {1}: retrieved parcel channel_uri {2} ",
743 landName, parentId, channelUri); 729 landName, parentId, channelUri);
744
745
746 } 730 }
747 731
748 return channelUri; 732 return channelUri;
@@ -761,7 +745,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.VivoxVoice
761 return VivoxCall(requrl, false); 745 return VivoxCall(requrl, false);
762 } 746 }
763 747
764
765 private static readonly string m_vivoxLogoutPath = "https://{0}/api2/viv_signout.php?auth_token={1}"; 748 private static readonly string m_vivoxLogoutPath = "https://{0}/api2/viv_signout.php?auth_token={1}";
766 749
767 /// <summary> 750 /// <summary>
@@ -828,7 +811,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.VivoxVoice
828 /// 811 ///
829 /// In this case the call handles parent and description as optional values. 812 /// In this case the call handles parent and description as optional values.
830 /// </summary> 813 /// </summary>
831
832 private bool VivoxTryCreateChannel(string parent, string channelId, string description, out string channelUri) 814 private bool VivoxTryCreateChannel(string parent, string channelId, string description, out string channelUri)
833 { 815 {
834 string requrl = String.Format(m_vivoxChannelPath, m_vivoxServer, "create", channelId, m_authToken); 816 string requrl = String.Format(m_vivoxChannelPath, m_vivoxServer, "create", channelId, m_authToken);
@@ -864,7 +846,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.VivoxVoice
864 /// channel name space. 846 /// channel name space.
865 /// The parent and description are optional values. 847 /// The parent and description are optional values.
866 /// </summary> 848 /// </summary>
867
868 private bool VivoxTryCreateDirectory(string dirId, string description, out string channelId) 849 private bool VivoxTryCreateDirectory(string dirId, string description, out string channelId)
869 { 850 {
870 string requrl = String.Format(m_vivoxChannelPath, m_vivoxServer, "create", dirId, m_authToken); 851 string requrl = String.Format(m_vivoxChannelPath, m_vivoxServer, "create", dirId, m_authToken);
@@ -901,7 +882,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.VivoxVoice
901 /// are required in a later phase. 882 /// are required in a later phase.
902 /// In this case the call handles parent and description as optional values. 883 /// In this case the call handles parent and description as optional values.
903 /// </summary> 884 /// </summary>
904
905 private bool VivoxTryGetChannel(string channelParent, string channelName, 885 private bool VivoxTryGetChannel(string channelParent, string channelName,
906 out string channelId, out string channelUri) 886 out string channelId, out string channelUri)
907 { 887 {
@@ -1044,6 +1024,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.VivoxVoice
1044 // return VivoxCall(requrl, true); 1024 // return VivoxCall(requrl, true);
1045 // } 1025 // }
1046 1026
1027 private static readonly string m_vivoxChannelDel = "https://{0}/api2/viv_chan_mod.php?mode={1}&chan_id={2}&auth_token={3}";
1028
1047 /// <summary> 1029 /// <summary>
1048 /// Delete a channel. 1030 /// Delete a channel.
1049 /// Once again, there a multitude of options possible. In the simplest case 1031 /// Once again, there a multitude of options possible. In the simplest case
@@ -1056,8 +1038,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.VivoxVoice
1056 /// In this case the call handles parent and description as optional values. 1038 /// In this case the call handles parent and description as optional values.
1057 /// </summary> 1039 /// </summary>
1058 1040
1059 private static readonly string m_vivoxChannelDel = "https://{0}/api2/viv_chan_mod.php?mode={1}&chan_id={2}&auth_token={3}";
1060
1061 private XmlElement VivoxDeleteChannel(string parent, string channelid) 1041 private XmlElement VivoxDeleteChannel(string parent, string channelid)
1062 { 1042 {
1063 string requrl = String.Format(m_vivoxChannelDel, m_vivoxServer, "delete", channelid, m_authToken); 1043 string requrl = String.Format(m_vivoxChannelDel, m_vivoxServer, "delete", channelid, m_authToken);
@@ -1068,12 +1048,12 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.VivoxVoice
1068 return VivoxCall(requrl, true); 1048 return VivoxCall(requrl, true);
1069 } 1049 }
1070 1050
1051 private static readonly string m_vivoxChannelSearch = "https://{0}/api2/viv_chan_search.php?&cond_chanparent={1}&auth_token={2}";
1052
1071 /// <summary> 1053 /// <summary>
1072 /// Return information on channels in the given directory 1054 /// Return information on channels in the given directory
1073 /// </summary> 1055 /// </summary>
1074 1056
1075 private static readonly string m_vivoxChannelSearch = "https://{0}/api2/viv_chan_search.php?&cond_chanparent={1}&auth_token={2}";
1076
1077 private XmlElement VivoxListChildren(string channelid) 1057 private XmlElement VivoxListChildren(string channelid)
1078 { 1058 {
1079 string requrl = String.Format(m_vivoxChannelSearch, m_vivoxServer, channelid, m_authToken); 1059 string requrl = String.Format(m_vivoxChannelSearch, m_vivoxServer, channelid, m_authToken);
@@ -1118,7 +1098,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.VivoxVoice
1118 /// The outcome of the call can be determined by examining the 1098 /// The outcome of the call can be determined by examining the
1119 /// status value in the hash table. 1099 /// status value in the hash table.
1120 /// </summary> 1100 /// </summary>
1121
1122 private XmlElement VivoxCall(string requrl, bool admin) 1101 private XmlElement VivoxCall(string requrl, bool admin)
1123 { 1102 {
1124 1103
@@ -1164,7 +1143,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.VivoxVoice
1164 /// <summary> 1143 /// <summary>
1165 /// Just say if it worked. 1144 /// Just say if it worked.
1166 /// </summary> 1145 /// </summary>
1167
1168 private bool IsOK(XmlElement resp) 1146 private bool IsOK(XmlElement resp)
1169 { 1147 {
1170 string status; 1148 string status;