From 6d51eef9cee86c74f00fd149327a378053a597b2 Mon Sep 17 00:00:00 2001 From: Charles Krinke Date: Wed, 28 May 2008 02:06:56 +0000 Subject: Thank you, Grumly57 kindly for: This patch proposes a new function : osOpenRemoteDataChannel(key channeID) that allow to open an XMLRPC channel for remote_data event. The difference is that the channelID can be customized instead of being randomly generated. --- .../Modules/Scripting/XMLRPC/XMLRPCModule.cs | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'OpenSim/Region/Environment/Modules/Scripting') diff --git a/OpenSim/Region/Environment/Modules/Scripting/XMLRPC/XMLRPCModule.cs b/OpenSim/Region/Environment/Modules/Scripting/XMLRPC/XMLRPCModule.cs index bf21dd3..aa7a20f 100644 --- a/OpenSim/Region/Environment/Modules/Scripting/XMLRPC/XMLRPCModule.cs +++ b/OpenSim/Region/Environment/Modules/Scripting/XMLRPC/XMLRPCModule.cs @@ -160,6 +160,10 @@ namespace OpenSim.Region.Environment.Modules.Scripting.XMLRPC * * Generate a LLUUID channel key and add it and * the prim id to dictionary + * + * A custom channel key can be proposed. + * Otherwise, passing LLUUID.Zero will generate + * and return a random channel * * First check if there is a channel assigned for * this itemID. If there is, then someone called @@ -169,9 +173,9 @@ namespace OpenSim.Region.Environment.Modules.Scripting.XMLRPC * * ********************************************/ - public LLUUID OpenXMLRPCChannel(uint localID, LLUUID itemID) + public LLUUID OpenXMLRPCChannel(uint localID, LLUUID itemID, LLUUID channelID) { - LLUUID channel = new LLUUID(); + LLUUID newChannel = LLUUID.Zero; //Is a dupe? foreach (RPCChannelInfo ci in m_openChannels.Values) @@ -179,22 +183,22 @@ namespace OpenSim.Region.Environment.Modules.Scripting.XMLRPC if (ci.GetItemID().Equals(itemID)) { // return the original channel ID for this item - channel = ci.GetChannelID(); + newChannel = ci.GetChannelID(); break; } } - if (channel == LLUUID.Zero) + if (newChannel == LLUUID.Zero) { - channel = LLUUID.Random(); - RPCChannelInfo rpcChanInfo = new RPCChannelInfo(localID, itemID, channel); + newChannel = (channelID == LLUUID.Zero) ? LLUUID.Random() : channelID; + RPCChannelInfo rpcChanInfo = new RPCChannelInfo(localID, itemID, newChannel); lock (XMLRPCListLock) { - m_openChannels.Add(channel, rpcChanInfo); + m_openChannels.Add(newChannel, rpcChanInfo); } } - return channel; + return newChannel; } // Delete channels based on itemID -- cgit v1.1