aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/OptionalModules/Avatar/Voice/VivoxVoice
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/OptionalModules/Avatar/Voice/VivoxVoice')
-rw-r--r--OpenSim/Region/OptionalModules/Avatar/Voice/VivoxVoice/VivoxVoiceModule.cs70
1 files changed, 24 insertions, 46 deletions
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;