diff options
Pulled out HelloNeighbour into its own service, INeighbourService, which may get more functions as we go along. It's a very simple service and service connectors, and it served primarily to establish the design of services that dependent on Scenes and that must always have a local connector. More refactoring coming, as this showed how to do it right.
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs index 8cc5cd8..833f804 100644 --- a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs +++ b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs | |||
@@ -39,6 +39,7 @@ using OpenSim.Framework.Communications; | |||
39 | using OpenSim.Framework.Communications.Cache; | 39 | using OpenSim.Framework.Communications.Cache; |
40 | using OpenSim.Framework.Communications.Capabilities; | 40 | using OpenSim.Framework.Communications.Capabilities; |
41 | using OpenSim.Region.Framework.Interfaces; | 41 | using OpenSim.Region.Framework.Interfaces; |
42 | using OpenSim.Services.Interfaces; | ||
42 | using OSD = OpenMetaverse.StructuredData.OSD; | 43 | using OSD = OpenMetaverse.StructuredData.OSD; |
43 | 44 | ||
44 | namespace OpenSim.Region.Framework.Scenes | 45 | namespace OpenSim.Region.Framework.Scenes |
@@ -485,7 +486,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
485 | 486 | ||
486 | #endregion | 487 | #endregion |
487 | 488 | ||
488 | public delegate void InformNeighbourThatRegionUpDelegate(RegionInfo region, ulong regionhandle); | 489 | public delegate void InformNeighbourThatRegionUpDelegate(INeighbourService nService, RegionInfo region, ulong regionhandle); |
489 | 490 | ||
490 | private void InformNeighborsThatRegionisUpCompleted(IAsyncResult iar) | 491 | private void InformNeighborsThatRegionisUpCompleted(IAsyncResult iar) |
491 | { | 492 | { |
@@ -498,7 +499,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
498 | /// </summary> | 499 | /// </summary> |
499 | /// <param name="region"></param> | 500 | /// <param name="region"></param> |
500 | /// <param name="regionhandle"></param> | 501 | /// <param name="regionhandle"></param> |
501 | private void InformNeighboursThatRegionIsUpAsync(RegionInfo region, ulong regionhandle) | 502 | private void InformNeighboursThatRegionIsUpAsync(INeighbourService neighbourService, RegionInfo region, ulong regionhandle) |
502 | { | 503 | { |
503 | m_log.Info("[INTERGRID]: Starting to inform neighbors that I'm here"); | 504 | m_log.Info("[INTERGRID]: Starting to inform neighbors that I'm here"); |
504 | //RegionUpData regiondata = new RegionUpData(region.RegionLocX, region.RegionLocY, region.ExternalHostName, region.InternalEndPoint.Port); | 505 | //RegionUpData regiondata = new RegionUpData(region.RegionLocX, region.RegionLocY, region.ExternalHostName, region.InternalEndPoint.Port); |
@@ -506,7 +507,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
506 | //bool regionAccepted = | 507 | //bool regionAccepted = |
507 | // m_commsProvider.InterRegion.RegionUp(new SerializableRegionInfo(region), regionhandle); | 508 | // m_commsProvider.InterRegion.RegionUp(new SerializableRegionInfo(region), regionhandle); |
508 | 509 | ||
509 | bool regionAccepted = m_interregionCommsOut.SendHelloNeighbour(regionhandle, region); | 510 | //bool regionAccepted = m_interregionCommsOut.SendHelloNeighbour(regionhandle, region); |
511 | bool regionAccepted = false; | ||
512 | if (neighbourService != null) | ||
513 | regionAccepted = neighbourService.HelloNeighbour(regionhandle, region); | ||
514 | else | ||
515 | m_log.DebugFormat("[SCS]: No neighbour service provided for informing neigbhours of this region"); | ||
510 | 516 | ||
511 | if (regionAccepted) | 517 | if (regionAccepted) |
512 | { | 518 | { |
@@ -527,7 +533,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
527 | /// Called by scene when region is initialized (not always when it's listening for agents) | 533 | /// Called by scene when region is initialized (not always when it's listening for agents) |
528 | /// This is an inter-region message that informs the surrounding neighbors that the sim is up. | 534 | /// This is an inter-region message that informs the surrounding neighbors that the sim is up. |
529 | /// </summary> | 535 | /// </summary> |
530 | public void InformNeighborsThatRegionisUp(RegionInfo region) | 536 | public void InformNeighborsThatRegionisUp(INeighbourService neighbourService, RegionInfo region) |
531 | { | 537 | { |
532 | //m_log.Info("[INTER]: " + debugRegionName + ": SceneCommunicationService: Sending InterRegion Notification that region is up " + region.RegionName); | 538 | //m_log.Info("[INTER]: " + debugRegionName + ": SceneCommunicationService: Sending InterRegion Notification that region is up " + region.RegionName); |
533 | 539 | ||
@@ -541,7 +547,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
541 | { | 547 | { |
542 | InformNeighbourThatRegionUpDelegate d = InformNeighboursThatRegionIsUpAsync; | 548 | InformNeighbourThatRegionUpDelegate d = InformNeighboursThatRegionIsUpAsync; |
543 | 549 | ||
544 | d.BeginInvoke(region, neighbours[i].RegionHandle, | 550 | d.BeginInvoke(neighbourService, region, neighbours[i].RegionHandle, |
545 | InformNeighborsThatRegionisUpCompleted, | 551 | InformNeighborsThatRegionisUpCompleted, |
546 | d); | 552 | d); |
547 | } | 553 | } |