diff options
-rw-r--r-- | OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | 30 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Modules/Framework/EventQueue/EventQueueHelper.cs | 83 | ||||
-rw-r--r-- | prebuild.xml | 1 |
3 files changed, 112 insertions, 2 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 8257508..7b80f45 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | |||
@@ -35,6 +35,7 @@ using System.Timers; | |||
35 | using System.Xml; | 35 | using System.Xml; |
36 | using OpenMetaverse; | 36 | using OpenMetaverse; |
37 | using OpenMetaverse.Packets; | 37 | using OpenMetaverse.Packets; |
38 | using OpenMetaverse.StructuredData; | ||
38 | using log4net; | 39 | using log4net; |
39 | using OpenSim.Framework; | 40 | using OpenSim.Framework; |
40 | using OpenSim.Framework.Client; | 41 | using OpenSim.Framework.Client; |
@@ -1182,6 +1183,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1182 | string fromName, byte dialog, uint timeStamp, | 1183 | string fromName, byte dialog, uint timeStamp, |
1183 | UUID transactionID, bool fromGroup, byte[] binaryBucket) | 1184 | UUID transactionID, bool fromGroup, byte[] binaryBucket) |
1184 | { | 1185 | { |
1186 | |||
1185 | if (((Scene)(m_scene)).Permissions.CanInstantMessage(fromAgent, toAgent)) | 1187 | if (((Scene)(m_scene)).Permissions.CanInstantMessage(fromAgent, toAgent)) |
1186 | { | 1188 | { |
1187 | ImprovedInstantMessagePacket msg | 1189 | ImprovedInstantMessagePacket msg |
@@ -1205,8 +1207,32 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1205 | msg.MessageBlock.Message = Utils.StringToBytes(message); | 1207 | msg.MessageBlock.Message = Utils.StringToBytes(message); |
1206 | msg.MessageBlock.BinaryBucket = binaryBucket; | 1208 | msg.MessageBlock.BinaryBucket = binaryBucket; |
1207 | 1209 | ||
1208 | //System.Console.WriteLine("SendInstantMessage: " + msg); | 1210 | if (message.StartsWith("[grouptest]")) |
1209 | OutPacket(msg, ThrottleOutPacketType.Task); | 1211 | { // this block is test code for implementing group IM - delete when group IM is finished |
1212 | IEventQueue eq = Scene.RequestModuleInterface<IEventQueue>(); | ||
1213 | if (eq != null) | ||
1214 | { | ||
1215 | dialog = 17; | ||
1216 | |||
1217 | //OSD Item = Environment.EventQueueHelper.ChatterboxInvitation( | ||
1218 | // new UUID("00000000-68f9-1111-024e-222222111123"), | ||
1219 | // "Test Group", fromAgent, message, toAgent, fromName, dialog, 0, | ||
1220 | // false, 0, new Vector3(), 1, transactionID, fromGroup, | ||
1221 | // Utils.StringToBytes("Test Group")); | ||
1222 | |||
1223 | OSD Item = Environment.EventQueueHelper.ChatterboxInvitation( | ||
1224 | new UUID("00000000-68f9-1111-024e-222222111123"), | ||
1225 | "Test Group", fromAgent, message, toAgent, fromName, dialog, 0, | ||
1226 | false, 0, new Vector3(), 1, transactionID, fromGroup, binaryBucket); | ||
1227 | |||
1228 | eq.Enqueue(Item, toAgent); | ||
1229 | m_log.Info("########### eq chatterbox invitation #############\n" + Item); | ||
1230 | } | ||
1231 | |||
1232 | System.Console.WriteLine("SendInstantMessage: " + msg); | ||
1233 | } | ||
1234 | else | ||
1235 | OutPacket(msg, ThrottleOutPacketType.Task); | ||
1210 | } | 1236 | } |
1211 | } | 1237 | } |
1212 | 1238 | ||
diff --git a/OpenSim/Region/Environment/Modules/Framework/EventQueue/EventQueueHelper.cs b/OpenSim/Region/Environment/Modules/Framework/EventQueue/EventQueueHelper.cs index 0ffa8aa..5f471e5 100644 --- a/OpenSim/Region/Environment/Modules/Framework/EventQueue/EventQueueHelper.cs +++ b/OpenSim/Region/Environment/Modules/Framework/EventQueue/EventQueueHelper.cs | |||
@@ -28,6 +28,7 @@ | |||
28 | using System; | 28 | using System; |
29 | using System.Net; | 29 | using System.Net; |
30 | using OpenMetaverse; | 30 | using OpenMetaverse; |
31 | using OpenMetaverse.Packets; | ||
31 | using OpenMetaverse.StructuredData; | 32 | using OpenMetaverse.StructuredData; |
32 | 33 | ||
33 | namespace OpenSim.Region.Environment | 34 | namespace OpenSim.Region.Environment |
@@ -192,5 +193,87 @@ namespace OpenSim.Region.Environment | |||
192 | { | 193 | { |
193 | return buildEvent("FAKEEVENT", new OSDMap()); | 194 | return buildEvent("FAKEEVENT", new OSDMap()); |
194 | } | 195 | } |
196 | |||
197 | public static OSD AgentParams(UUID agentID, bool checkEstate, int godLevel, bool limitedToEstate) | ||
198 | { | ||
199 | OSDMap body = new OSDMap(4); | ||
200 | |||
201 | body.Add("agent_id", new OSDUUID(agentID)); | ||
202 | body.Add("check_estate", new OSDInteger(checkEstate ? 1 : 0)); | ||
203 | body.Add("god_level", new OSDInteger(godLevel)); | ||
204 | body.Add("limited_to_estate", new OSDInteger(limitedToEstate ? 1 : 0)); | ||
205 | |||
206 | return body; | ||
207 | } | ||
208 | |||
209 | public static OSD InstantMessageParams(UUID fromAgent, string message, UUID toAgent, | ||
210 | string fromName, byte dialog, uint timeStamp, bool offline, int parentEstateID, | ||
211 | Vector3 position, uint ttl, UUID transactionID, bool fromGroup, byte[] binaryBucket) | ||
212 | { | ||
213 | OSDMap messageParams = new OSDMap(15); | ||
214 | messageParams.Add("type", new OSDInteger((int)dialog)); | ||
215 | |||
216 | OSDArray positionArray = new OSDArray(3); | ||
217 | positionArray.Add(OSD.FromReal(position.X)); | ||
218 | positionArray.Add(OSD.FromReal(position.Y)); | ||
219 | positionArray.Add(OSD.FromReal(position.Z)); | ||
220 | messageParams.Add("position", positionArray); | ||
221 | |||
222 | messageParams.Add("region_id", new OSDUUID(UUID.Zero)); | ||
223 | messageParams.Add("to_id", new OSDUUID(toAgent)); | ||
224 | messageParams.Add("source", new OSDInteger(0)); | ||
225 | |||
226 | OSDMap data = new OSDMap(1); | ||
227 | data.Add("binary_bucket", OSD.FromBinary(binaryBucket)); | ||
228 | messageParams.Add("data", data); | ||
229 | messageParams.Add("message", new OSDString(message)); | ||
230 | messageParams.Add("id", new OSDUUID(transactionID)); | ||
231 | messageParams.Add("from_name", new OSDString(fromName)); | ||
232 | messageParams.Add("timestamp", new OSDInteger((int)timeStamp)); | ||
233 | messageParams.Add("offline", new OSDInteger(offline ? 1 : 0)); | ||
234 | messageParams.Add("parent_estate_id", new OSDInteger(parentEstateID)); | ||
235 | messageParams.Add("ttl", new OSDInteger((int)ttl)); | ||
236 | messageParams.Add("from_id", new OSDUUID(fromAgent)); | ||
237 | messageParams.Add("from_group", new OSDInteger(fromGroup ? 1 : 0)); | ||
238 | |||
239 | return messageParams; | ||
240 | } | ||
241 | |||
242 | public static OSD InstantMessage(UUID fromAgent, string message, UUID toAgent, | ||
243 | string fromName, byte dialog, uint timeStamp, bool offline, int parentEstateID, | ||
244 | Vector3 position, uint ttl, UUID transactionID, bool fromGroup, byte[] binaryBucket, | ||
245 | bool checkEstate, int godLevel, bool limitedToEstate) | ||
246 | { | ||
247 | OSDMap im = new OSDMap(2); | ||
248 | im.Add("message_params", InstantMessageParams(fromAgent, message, toAgent, | ||
249 | fromName, dialog, timeStamp, offline, parentEstateID, | ||
250 | position, ttl, transactionID, fromGroup, binaryBucket)); | ||
251 | |||
252 | im.Add("agent_params", AgentParams(fromAgent, checkEstate, godLevel, limitedToEstate)); | ||
253 | |||
254 | return im; | ||
255 | } | ||
256 | |||
257 | |||
258 | public static OSD ChatterboxInvitation(UUID sessionID, string sessionName, | ||
259 | UUID fromAgent, string message, UUID toAgent, string fromName, byte dialog, | ||
260 | uint timeStamp, bool offline, int parentEstateID, Vector3 position, | ||
261 | uint ttl, UUID transactionID, bool fromGroup, byte[] binaryBucket) | ||
262 | { | ||
263 | OSDMap body = new OSDMap(5); | ||
264 | body.Add("session_id", new OSDUUID(sessionID)); | ||
265 | body.Add("from_name", new OSDString(fromName)); | ||
266 | body.Add("session_name", new OSDString(sessionName)); | ||
267 | body.Add("from_id", new OSDUUID(fromAgent)); | ||
268 | |||
269 | body.Add("instantmessage", InstantMessage(fromAgent, message, toAgent, | ||
270 | fromName, dialog, timeStamp, offline, parentEstateID, position, | ||
271 | ttl, transactionID, fromGroup, binaryBucket, true, 0, true)); | ||
272 | |||
273 | OSDMap chatterboxInvitation = new OSDMap(2); | ||
274 | chatterboxInvitation.Add("message", new OSDString("ChatterBoxInvitation")); | ||
275 | chatterboxInvitation.Add("body", body); | ||
276 | return chatterboxInvitation; | ||
277 | } | ||
195 | } | 278 | } |
196 | } | 279 | } |
diff --git a/prebuild.xml b/prebuild.xml index 8dbfea5..1381228 100644 --- a/prebuild.xml +++ b/prebuild.xml | |||
@@ -1059,6 +1059,7 @@ | |||
1059 | <Reference name="System" localCopy="false"/> | 1059 | <Reference name="System" localCopy="false"/> |
1060 | <Reference name="System.Xml"/> | 1060 | <Reference name="System.Xml"/> |
1061 | <Reference name="OpenMetaverseTypes.dll"/> | 1061 | <Reference name="OpenMetaverseTypes.dll"/> |
1062 | <Reference name="OpenMetaverse.StructuredData.dll"/> | ||
1062 | <Reference name="OpenMetaverse.dll"/> | 1063 | <Reference name="OpenMetaverse.dll"/> |
1063 | <Reference name="OpenSim.Region.Environment"/> | 1064 | <Reference name="OpenSim.Region.Environment"/> |
1064 | <Reference name="OpenSim.Framework"/> | 1065 | <Reference name="OpenSim.Framework"/> |