aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs63
-rw-r--r--OpenSim/Services/Connectors/Inventory/XInventoryServicesConnector.cs11
2 files changed, 47 insertions, 27 deletions
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs
index 9179dc7..e13ee42 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs
@@ -62,6 +62,11 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
62 62
63 private InventoryCache m_Cache = new InventoryCache(); 63 private InventoryCache m_Cache = new InventoryCache();
64 64
65 /// <summary>
66 /// Used to serialize inventory requests.
67 /// </summary>
68 private object m_Lock = new object();
69
65 protected IUserManagement m_UserManagement; 70 protected IUserManagement m_UserManagement;
66 protected IUserManagement UserManagementModule 71 protected IUserManagement UserManagementModule
67 { 72 {
@@ -301,7 +306,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
301 306
302 public bool CreateUserInventory(UUID userID) 307 public bool CreateUserInventory(UUID userID)
303 { 308 {
304 return m_LocalGridInventoryService.CreateUserInventory(userID); 309 lock (m_Lock)
310 return m_LocalGridInventoryService.CreateUserInventory(userID);
305 } 311 }
306 312
307 public List<InventoryFolderBase> GetInventorySkeleton(UUID userID) 313 public List<InventoryFolderBase> GetInventorySkeleton(UUID userID)
@@ -309,7 +315,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
309 string invURL = GetInventoryServiceURL(userID); 315 string invURL = GetInventoryServiceURL(userID);
310 316
311 if (invURL == null) // not there, forward to local inventory connector to resolve 317 if (invURL == null) // not there, forward to local inventory connector to resolve
312 return m_LocalGridInventoryService.GetInventorySkeleton(userID); 318 lock (m_Lock)
319 return m_LocalGridInventoryService.GetInventorySkeleton(userID);
313 320
314 IInventoryService connector = GetConnector(invURL); 321 IInventoryService connector = GetConnector(invURL);
315 322
@@ -326,7 +333,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
326 string invURL = GetInventoryServiceURL(userID); 333 string invURL = GetInventoryServiceURL(userID);
327 334
328 if (invURL == null) // not there, forward to local inventory connector to resolve 335 if (invURL == null) // not there, forward to local inventory connector to resolve
329 return m_LocalGridInventoryService.GetRootFolder(userID); 336 lock (m_Lock)
337 return m_LocalGridInventoryService.GetRootFolder(userID);
330 338
331 IInventoryService connector = GetConnector(invURL); 339 IInventoryService connector = GetConnector(invURL);
332 340
@@ -347,7 +355,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
347 string invURL = GetInventoryServiceURL(userID); 355 string invURL = GetInventoryServiceURL(userID);
348 356
349 if (invURL == null) // not there, forward to local inventory connector to resolve 357 if (invURL == null) // not there, forward to local inventory connector to resolve
350 return m_LocalGridInventoryService.GetFolderForType(userID, type); 358 lock (m_Lock)
359 return m_LocalGridInventoryService.GetFolderForType(userID, type);
351 360
352 IInventoryService connector = GetConnector(invURL); 361 IInventoryService connector = GetConnector(invURL);
353 362
@@ -365,7 +374,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
365 string invURL = GetInventoryServiceURL(userID); 374 string invURL = GetInventoryServiceURL(userID);
366 375
367 if (invURL == null) // not there, forward to local inventory connector to resolve 376 if (invURL == null) // not there, forward to local inventory connector to resolve
368 return m_LocalGridInventoryService.GetFolderContent(userID, folderID); 377 lock (m_Lock)
378 return m_LocalGridInventoryService.GetFolderContent(userID, folderID);
369 379
370 InventoryCollection c = m_Cache.GetFolderContent(userID, folderID); 380 InventoryCollection c = m_Cache.GetFolderContent(userID, folderID);
371 if (c != null) 381 if (c != null)
@@ -375,8 +385,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
375 } 385 }
376 386
377 IInventoryService connector = GetConnector(invURL); 387 IInventoryService connector = GetConnector(invURL);
378 return connector.GetFolderContent(userID, folderID);
379 388
389 return connector.GetFolderContent(userID, folderID);
380 } 390 }
381 391
382 public List<InventoryItemBase> GetFolderItems(UUID userID, UUID folderID) 392 public List<InventoryItemBase> GetFolderItems(UUID userID, UUID folderID)
@@ -386,7 +396,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
386 string invURL = GetInventoryServiceURL(userID); 396 string invURL = GetInventoryServiceURL(userID);
387 397
388 if (invURL == null) // not there, forward to local inventory connector to resolve 398 if (invURL == null) // not there, forward to local inventory connector to resolve
389 return m_LocalGridInventoryService.GetFolderItems(userID, folderID); 399 lock (m_Lock)
400 return m_LocalGridInventoryService.GetFolderItems(userID, folderID);
390 401
391 List<InventoryItemBase> items = m_Cache.GetFolderItems(userID, folderID); 402 List<InventoryItemBase> items = m_Cache.GetFolderItems(userID, folderID);
392 if (items != null) 403 if (items != null)
@@ -396,8 +407,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
396 } 407 }
397 408
398 IInventoryService connector = GetConnector(invURL); 409 IInventoryService connector = GetConnector(invURL);
399 return connector.GetFolderItems(userID, folderID);
400 410
411 return connector.GetFolderItems(userID, folderID);
401 } 412 }
402 413
403 public bool AddFolder(InventoryFolderBase folder) 414 public bool AddFolder(InventoryFolderBase folder)
@@ -410,7 +421,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
410 string invURL = GetInventoryServiceURL(folder.Owner); 421 string invURL = GetInventoryServiceURL(folder.Owner);
411 422
412 if (invURL == null) // not there, forward to local inventory connector to resolve 423 if (invURL == null) // not there, forward to local inventory connector to resolve
413 return m_LocalGridInventoryService.AddFolder(folder); 424 lock (m_Lock)
425 return m_LocalGridInventoryService.AddFolder(folder);
414 426
415 IInventoryService connector = GetConnector(invURL); 427 IInventoryService connector = GetConnector(invURL);
416 428
@@ -427,7 +439,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
427 string invURL = GetInventoryServiceURL(folder.Owner); 439 string invURL = GetInventoryServiceURL(folder.Owner);
428 440
429 if (invURL == null) // not there, forward to local inventory connector to resolve 441 if (invURL == null) // not there, forward to local inventory connector to resolve
430 return m_LocalGridInventoryService.UpdateFolder(folder); 442 lock (m_Lock)
443 return m_LocalGridInventoryService.UpdateFolder(folder);
431 444
432 IInventoryService connector = GetConnector(invURL); 445 IInventoryService connector = GetConnector(invURL);
433 446
@@ -446,7 +459,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
446 string invURL = GetInventoryServiceURL(ownerID); 459 string invURL = GetInventoryServiceURL(ownerID);
447 460
448 if (invURL == null) // not there, forward to local inventory connector to resolve 461 if (invURL == null) // not there, forward to local inventory connector to resolve
449 return m_LocalGridInventoryService.DeleteFolders(ownerID, folderIDs); 462 lock (m_Lock)
463 return m_LocalGridInventoryService.DeleteFolders(ownerID, folderIDs);
450 464
451 IInventoryService connector = GetConnector(invURL); 465 IInventoryService connector = GetConnector(invURL);
452 466
@@ -463,7 +477,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
463 string invURL = GetInventoryServiceURL(folder.Owner); 477 string invURL = GetInventoryServiceURL(folder.Owner);
464 478
465 if (invURL == null) // not there, forward to local inventory connector to resolve 479 if (invURL == null) // not there, forward to local inventory connector to resolve
466 return m_LocalGridInventoryService.MoveFolder(folder); 480 lock (m_Lock)
481 return m_LocalGridInventoryService.MoveFolder(folder);
467 482
468 IInventoryService connector = GetConnector(invURL); 483 IInventoryService connector = GetConnector(invURL);
469 484
@@ -480,7 +495,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
480 string invURL = GetInventoryServiceURL(folder.Owner); 495 string invURL = GetInventoryServiceURL(folder.Owner);
481 496
482 if (invURL == null) // not there, forward to local inventory connector to resolve 497 if (invURL == null) // not there, forward to local inventory connector to resolve
483 return m_LocalGridInventoryService.PurgeFolder(folder); 498 lock (m_Lock)
499 return m_LocalGridInventoryService.PurgeFolder(folder);
484 500
485 IInventoryService connector = GetConnector(invURL); 501 IInventoryService connector = GetConnector(invURL);
486 502
@@ -497,7 +513,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
497 string invURL = GetInventoryServiceURL(item.Owner); 513 string invURL = GetInventoryServiceURL(item.Owner);
498 514
499 if (invURL == null) // not there, forward to local inventory connector to resolve 515 if (invURL == null) // not there, forward to local inventory connector to resolve
500 return m_LocalGridInventoryService.AddItem(item); 516 lock (m_Lock)
517 return m_LocalGridInventoryService.AddItem(item);
501 518
502 IInventoryService connector = GetConnector(invURL); 519 IInventoryService connector = GetConnector(invURL);
503 520
@@ -514,7 +531,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
514 string invURL = GetInventoryServiceURL(item.Owner); 531 string invURL = GetInventoryServiceURL(item.Owner);
515 532
516 if (invURL == null) // not there, forward to local inventory connector to resolve 533 if (invURL == null) // not there, forward to local inventory connector to resolve
517 return m_LocalGridInventoryService.UpdateItem(item); 534 lock (m_Lock)
535 return m_LocalGridInventoryService.UpdateItem(item);
518 536
519 IInventoryService connector = GetConnector(invURL); 537 IInventoryService connector = GetConnector(invURL);
520 538
@@ -533,7 +551,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
533 string invURL = GetInventoryServiceURL(ownerID); 551 string invURL = GetInventoryServiceURL(ownerID);
534 552
535 if (invURL == null) // not there, forward to local inventory connector to resolve 553 if (invURL == null) // not there, forward to local inventory connector to resolve
536 return m_LocalGridInventoryService.MoveItems(ownerID, items); 554 lock (m_Lock)
555 return m_LocalGridInventoryService.MoveItems(ownerID, items);
537 556
538 IInventoryService connector = GetConnector(invURL); 557 IInventoryService connector = GetConnector(invURL);
539 558
@@ -552,7 +571,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
552 string invURL = GetInventoryServiceURL(ownerID); 571 string invURL = GetInventoryServiceURL(ownerID);
553 572
554 if (invURL == null) // not there, forward to local inventory connector to resolve 573 if (invURL == null) // not there, forward to local inventory connector to resolve
555 return m_LocalGridInventoryService.DeleteItems(ownerID, itemIDs); 574 lock (m_Lock)
575 return m_LocalGridInventoryService.DeleteItems(ownerID, itemIDs);
556 576
557 IInventoryService connector = GetConnector(invURL); 577 IInventoryService connector = GetConnector(invURL);
558 578
@@ -568,7 +588,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
568 string invURL = GetInventoryServiceURL(item.Owner); 588 string invURL = GetInventoryServiceURL(item.Owner);
569 589
570 if (invURL == null) // not there, forward to local inventory connector to resolve 590 if (invURL == null) // not there, forward to local inventory connector to resolve
571 return m_LocalGridInventoryService.GetItem(item); 591 lock (m_Lock)
592 return m_LocalGridInventoryService.GetItem(item);
572 593
573 IInventoryService connector = GetConnector(invURL); 594 IInventoryService connector = GetConnector(invURL);
574 595
@@ -585,7 +606,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
585 string invURL = GetInventoryServiceURL(folder.Owner); 606 string invURL = GetInventoryServiceURL(folder.Owner);
586 607
587 if (invURL == null) // not there, forward to local inventory connector to resolve 608 if (invURL == null) // not there, forward to local inventory connector to resolve
588 return m_LocalGridInventoryService.GetFolder(folder); 609 lock (m_Lock)
610 return m_LocalGridInventoryService.GetFolder(folder);
589 611
590 IInventoryService connector = GetConnector(invURL); 612 IInventoryService connector = GetConnector(invURL);
591 613
@@ -609,7 +631,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
609 string invURL = GetInventoryServiceURL(userID); 631 string invURL = GetInventoryServiceURL(userID);
610 632
611 if (invURL == null) // not there, forward to local inventory connector to resolve 633 if (invURL == null) // not there, forward to local inventory connector to resolve
612 return m_LocalGridInventoryService.GetAssetPermissions(userID, assetID); 634 lock (m_Lock)
635 return m_LocalGridInventoryService.GetAssetPermissions(userID, assetID);
613 636
614 IInventoryService connector = GetConnector(invURL); 637 IInventoryService connector = GetConnector(invURL);
615 638
diff --git a/OpenSim/Services/Connectors/Inventory/XInventoryServicesConnector.cs b/OpenSim/Services/Connectors/Inventory/XInventoryServicesConnector.cs
index 93f9d48..574de89 100644
--- a/OpenSim/Services/Connectors/Inventory/XInventoryServicesConnector.cs
+++ b/OpenSim/Services/Connectors/Inventory/XInventoryServicesConnector.cs
@@ -62,8 +62,6 @@ namespace OpenSim.Services.Connectors
62 /// </remarks> 62 /// </remarks>
63 private int m_requestTimeoutSecs = -1; 63 private int m_requestTimeoutSecs = -1;
64 64
65 private object m_Lock = new object();
66
67 public XInventoryServicesConnector() 65 public XInventoryServicesConnector()
68 { 66 {
69 } 67 }
@@ -533,11 +531,10 @@ namespace OpenSim.Services.Connectors
533 531
534 RequestsMade++; 532 RequestsMade++;
535 533
536 string reply = string.Empty; 534 string reply
537 lock (m_Lock) 535 = SynchronousRestFormsRequester.MakeRequest(
538 reply = SynchronousRestFormsRequester.MakeRequest("POST", 536 "POST", m_ServerURI + "/xinventory",
539 m_ServerURI + "/xinventory", 537 ServerUtils.BuildQueryString(sendData), m_requestTimeoutSecs, m_Auth);
540 ServerUtils.BuildQueryString(sendData), m_requestTimeoutSecs, m_Auth);
541 538
542 Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse( 539 Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(
543 reply); 540 reply);