aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs72
1 files changed, 72 insertions, 0 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs
index 0a67689..64ec356 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs
@@ -79,6 +79,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
79 79
80 scene.EventManager.OnNewClient += OnNewClient; 80 scene.EventManager.OnNewClient += OnNewClient;
81 scene.EventManager.OnClientClosed += ClientLoggedOut; 81 scene.EventManager.OnClientClosed += ClientLoggedOut;
82 scene.EventManager.OnIncomingInstantMessage += OnGridInstantMessage;
82 } 83 }
83 } 84 }
84 85
@@ -384,5 +385,76 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
384 if (m_AgentRegions.ContainsKey(agentID)) 385 if (m_AgentRegions.ContainsKey(agentID))
385 m_AgentRegions.Remove(agentID); 386 m_AgentRegions.Remove(agentID);
386 } 387 }
388
389 /// <summary>
390 ///
391 /// </summary>
392 /// <param name="msg"></param>
393 private void OnGridInstantMessage(GridInstantMessage msg)
394 {
395 Scene scene = FindClientScene(new UUID(msg.toAgentID));
396
397 // Find agent to deliver to
398 //
399 ScenePresence user = scene.GetScenePresence(new UUID(msg.toAgentID));
400
401 if (user == null) // Shouldn't happen
402 {
403 m_log.Debug("[INVENTORY TRANSFER] Can't find recipient");
404 return;
405 }
406
407 CachedUserInfo userInfo =
408 scene.CommsManager.UserProfileCacheService.
409 GetUserDetails(user.ControllingClient.AgentId);
410
411 if (userInfo == null)
412 {
413 m_log.Debug("[INVENTORY TRANSFER] Can't find user info of recipient");
414 return;
415 }
416
417 AssetType assetType = (AssetType)msg.binaryBucket[0];
418
419 if (AssetType.Folder == assetType)
420 {
421 // Folders not implemented yet
422 //
423 return;
424 }
425 else
426 {
427 UUID itemID = new UUID(msg.binaryBucket, 1);
428
429 // Fetch from database
430 //
431 if (!userInfo.QueryItem(itemID))
432 {
433 m_log.Debug("[INVENTORY TRANSFER] Can't find item to give");
434 return;
435 }
436
437 // Get item info
438 //
439 InventoryItemBase item = userInfo.RootFolder.FindItem(itemID);
440 if (item == null)
441 {
442 m_log.Debug("[INVENTORY TRANSFER] Can't retrieve item to give");
443 return;
444 }
445
446 // Update item to viewer (makes it appear in proper folder)
447 //
448 user.ControllingClient.SendBulkUpdateInventory(item);
449
450 // Deliver message
451 //
452 user.ControllingClient.SendInstantMessage(
453 new UUID(msg.fromAgentID), msg.message,
454 new UUID(msg.toAgentID),
455 msg.fromAgentName, msg.dialog, msg.timestamp,
456 itemID, false, msg.binaryBucket);
457 }
458 }
387 } 459 }
388} 460}