merge LocalNeighbourServicesConnector and RemoteNeighbourServicesConnector in single NeighbourServicesOutConnector

0.9.0-post-fixes
UbitUmarov 2017-05-31 01:29:38 +01:00
parent 0fa3af96a4
commit e5991124dd
8 changed files with 40 additions and 208 deletions

View File

@ -25,44 +25,32 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
using System;
using System.Collections.Generic;
using System.Reflection;
using log4net; using log4net;
using Mono.Addins; using Mono.Addins;
using System;
using System.Reflection;
using System.Collections.Generic;
using Nini.Config; using Nini.Config;
using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
using OpenSim.Server.Base; using OpenSim.Services.Connectors;
using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes; using OpenSim.Region.Framework.Scenes;
using OpenSim.Services.Interfaces; using OpenSim.Services.Interfaces;
namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Neighbour namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Neighbour
{ {
[Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "LocalNeighbourServicesConnector")] [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "NeighbourServicesOutConnector")]
public class LocalNeighbourServicesConnector : public class NeighbourServicesOutConnector :
ISharedRegionModule, INeighbourService NeighbourServicesConnector, ISharedRegionModule, INeighbourService
{ {
private static readonly ILog m_log = private static readonly ILog m_log =
LogManager.GetLogger( LogManager.GetLogger(
MethodBase.GetCurrentMethod().DeclaringType); MethodBase.GetCurrentMethod().DeclaringType);
private List<Scene> m_Scenes = new List<Scene>(); private List<Scene> m_Scenes = new List<Scene>();
private bool m_Enabled = false; private bool m_Enabled = false;
public LocalNeighbourServicesConnector()
{
}
public LocalNeighbourServicesConnector(List<Scene> scenes)
{
m_Scenes = scenes;
}
#region ISharedRegionModule
public Type ReplaceableInterface public Type ReplaceableInterface
{ {
get { return null; } get { return null; }
@ -70,7 +58,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Neighbour
public string Name public string Name
{ {
get { return "LocalNeighbourServicesConnector"; } get { return "NeighbourServicesOutConnector"; }
} }
public void Initialise(IConfigSource source) public void Initialise(IConfigSource source)
@ -78,39 +66,32 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Neighbour
IConfig moduleConfig = source.Configs["Modules"]; IConfig moduleConfig = source.Configs["Modules"];
if (moduleConfig != null) if (moduleConfig != null)
{ {
string name = moduleConfig.GetString("NeighbourServices", this.Name); string name = moduleConfig.GetString("NeighbourServices");
if (name == Name) if (name == Name)
{ {
// m_Enabled rules whether this module registers as INeighbourService or not
m_Enabled = true; m_Enabled = true;
m_log.Info("[NEIGHBOUR CONNECTOR]: Local neighbour connector enabled"); m_log.Info("[NEIGHBOUR CONNECTOR]: Neighbour out connector enabled");
} }
} }
} }
public void PostInitialise()
{
}
public void Close() public void Close()
{ {
} }
public void AddRegion(Scene scene) public void AddRegion(Scene scene)
{ {
m_Scenes.Add(scene);
if (!m_Enabled) if (!m_Enabled)
return; return;
m_Scenes.Add(scene);
scene.RegisterModuleInterface<INeighbourService>(this); scene.RegisterModuleInterface<INeighbourService>(this);
} }
public void RegionLoaded(Scene scene)
{
m_log.Info("[NEIGHBOUR CONNECTOR]: Local neighbour connector enabled for region " + scene.RegionInfo.RegionName);
}
public void PostInitialise()
{
}
public void RemoveRegion(Scene scene) public void RemoveRegion(Scene scene)
{ {
// Always remove // Always remove
@ -118,28 +99,36 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Neighbour
m_Scenes.Remove(scene); m_Scenes.Remove(scene);
} }
#endregion ISharedRegionModule public void RegionLoaded(Scene scene)
{
if (!m_Enabled)
return;
m_GridService = scene.GridService;
m_log.InfoFormat("[NEIGHBOUR CONNECTOR]: Enabled out neighbours for region {0}", scene.RegionInfo.RegionName);
}
#region INeighbourService #region INeighbourService
public OpenSim.Services.Interfaces.GridRegion HelloNeighbour(ulong regionHandle, RegionInfo thisRegion) public override GridRegion HelloNeighbour(ulong regionHandle, RegionInfo thisRegion)
{ {
uint x, y; if (!m_Enabled)
Util.RegionHandleToRegionLoc(regionHandle, out x, out y); return null;
foreach (Scene s in m_Scenes) foreach (Scene s in m_Scenes)
{ {
if (s.RegionInfo.RegionHandle == regionHandle) if (s.RegionInfo.RegionHandle == regionHandle)
{ {
m_log.DebugFormat("[LOCAL NEIGHBOUR SERVICE CONNECTOR]: HelloNeighbour from region {0} to neighbour {1} at {2}-{3}", // uint x, y;
thisRegion.RegionName, s.Name, x, y ); // Util.RegionHandleToRegionLoc(regionHandle, out x, out y);
// m_log.DebugFormat("[NEIGHBOUR SERVICE OUT CONNECTOR]: HelloNeighbour from region {0} to neighbour {1} at {2}-{3}",
//m_log.Debug("[NEIGHBOUR CONNECTOR]: Found region to SendHelloNeighbour"); // thisRegion.RegionName, s.Name, x, y );
return s.IncomingHelloNeighbour(thisRegion); return s.IncomingHelloNeighbour(thisRegion);
} }
} }
//m_log.DebugFormat("[NEIGHBOUR CONNECTOR]: region handle {0} not found", regionHandle);
return null; return base.HelloNeighbour(regionHandle, thisRegion);
} }
#endregion INeighbourService #endregion INeighbourService

View File

@ -1,157 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using log4net;
using Mono.Addins;
using System;
using System.Collections.Generic;
using System.Reflection;
using Nini.Config;
using OpenSim.Framework;
using OpenSim.Services.Connectors;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes;
using OpenSim.Services.Interfaces;
using OpenSim.Server.Base;
namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Neighbour
{
[Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "RemoteNeighbourServicesConnector")]
public class RemoteNeighbourServicesConnector :
NeighbourServicesConnector, ISharedRegionModule, INeighbourService
{
private static readonly ILog m_log =
LogManager.GetLogger(
MethodBase.GetCurrentMethod().DeclaringType);
private bool m_Enabled = false;
private LocalNeighbourServicesConnector m_LocalService;
//private string serviceDll;
//private List<Scene> m_Scenes = new List<Scene>();
public Type ReplaceableInterface
{
get { return null; }
}
public string Name
{
get { return "RemoteNeighbourServicesConnector"; }
}
public void Initialise(IConfigSource source)
{
IConfig moduleConfig = source.Configs["Modules"];
if (moduleConfig != null)
{
string name = moduleConfig.GetString("NeighbourServices");
if (name == Name)
{
m_LocalService = new LocalNeighbourServicesConnector();
//IConfig neighbourConfig = source.Configs["NeighbourService"];
//if (neighbourConfig == null)
//{
// m_log.Error("[NEIGHBOUR CONNECTOR]: NeighbourService missing from OpenSim.ini");
// return;
//}
//serviceDll = neighbourConfig.GetString("LocalServiceModule", String.Empty);
//if (serviceDll == String.Empty)
//{
// m_log.Error("[NEIGHBOUR CONNECTOR]: No LocalServiceModule named in section NeighbourService");
// return;
//}
m_Enabled = true;
m_log.Info("[NEIGHBOUR CONNECTOR]: Remote Neighbour connector enabled");
}
}
}
public void PostInitialise()
{
//if (m_Enabled)
//{
// Object[] args = new Object[] { m_Scenes };
// m_LocalService =
// ServerUtils.LoadPlugin<INeighbourService>(serviceDll,
// args);
// if (m_LocalService == null)
// {
// m_log.Error("[NEIGHBOUR CONNECTOR]: Can't load neighbour service");
// Unregister();
// return;
// }
//}
}
public void Close()
{
}
public void AddRegion(Scene scene)
{
if (!m_Enabled)
return;
m_LocalService.AddRegion(scene);
scene.RegisterModuleInterface<INeighbourService>(this);
}
public void RemoveRegion(Scene scene)
{
if (m_Enabled)
m_LocalService.RemoveRegion(scene);
}
public void RegionLoaded(Scene scene)
{
if (!m_Enabled)
return;
m_GridService = scene.GridService;
m_log.InfoFormat("[NEIGHBOUR CONNECTOR]: Enabled remote neighbours for region {0}", scene.RegionInfo.RegionName);
}
#region INeighbourService
public override GridRegion HelloNeighbour(ulong regionHandle, RegionInfo thisRegion)
{
GridRegion region = m_LocalService.HelloNeighbour(regionHandle, thisRegion);
if (region != null)
return region;
return base.HelloNeighbour(regionHandle, thisRegion);
}
#endregion INeighbourService
}
}

View File

@ -12,7 +12,7 @@
InventoryServices = "RemoteXInventoryServicesConnector" InventoryServices = "RemoteXInventoryServicesConnector"
GridServices = "RemoteGridServicesConnector" GridServices = "RemoteGridServicesConnector"
AvatarServices = "RemoteAvatarServicesConnector" AvatarServices = "RemoteAvatarServicesConnector"
NeighbourServices = "RemoteNeighbourServicesConnector" NeighbourServices = "NeighbourServicesOutConnector"
AuthenticationServices = "RemoteAuthenticationServicesConnector" AuthenticationServices = "RemoteAuthenticationServicesConnector"
AuthorizationServices = "LocalAuthorizationServicesConnector" AuthorizationServices = "LocalAuthorizationServicesConnector"
PresenceServices = "RemotePresenceServicesConnector" PresenceServices = "RemotePresenceServicesConnector"

View File

@ -15,7 +15,7 @@
InventoryServices = "HGInventoryBroker" InventoryServices = "HGInventoryBroker"
GridServices = "RemoteGridServicesConnector" GridServices = "RemoteGridServicesConnector"
AvatarServices = "RemoteAvatarServicesConnector" AvatarServices = "RemoteAvatarServicesConnector"
NeighbourServices = "RemoteNeighbourServicesConnector" NeighbourServices = "NeighbourServicesOutConnector"
AuthenticationServices = "RemoteAuthenticationServicesConnector" AuthenticationServices = "RemoteAuthenticationServicesConnector"
AuthorizationServices = "LocalAuthorizationServicesConnector" AuthorizationServices = "LocalAuthorizationServicesConnector"
PresenceServices = "RemotePresenceServicesConnector" PresenceServices = "RemotePresenceServicesConnector"

View File

@ -29,7 +29,7 @@
InventoryServices = "HGInventoryBroker" InventoryServices = "HGInventoryBroker"
AvatarServices = "SimianAvatarServiceConnector" AvatarServices = "SimianAvatarServiceConnector"
NeighbourServices = "RemoteNeighbourServicesConnector" NeighbourServices = "NeighbourServicesOutConnector"
SimulationServices = "RemoteSimulationConnectorModule" SimulationServices = "RemoteSimulationConnectorModule"
EntityTransferModule = "HGEntityTransferModule" EntityTransferModule = "HGEntityTransferModule"
InventoryAccessModule = "HGInventoryAccessModule" InventoryAccessModule = "HGInventoryAccessModule"

View File

@ -29,7 +29,7 @@
InventoryServices = "SimianInventoryServiceConnector" InventoryServices = "SimianInventoryServiceConnector"
AvatarServices = "SimianAvatarServiceConnector" AvatarServices = "SimianAvatarServiceConnector"
NeighbourServices = "RemoteNeighbourServicesConnector" NeighbourServices = "NeighbourServicesOutConnector"
SimulationServices = "RemoteSimulationConnectorModule" SimulationServices = "RemoteSimulationConnectorModule"
EntityTransferModule = "BasicEntityTransferModule" EntityTransferModule = "BasicEntityTransferModule"
InventoryAccessModule = "BasicInventoryAccessModule" InventoryAccessModule = "BasicInventoryAccessModule"

View File

@ -7,7 +7,7 @@
[Modules] [Modules]
AssetServices = "LocalAssetServicesConnector" AssetServices = "LocalAssetServicesConnector"
InventoryServices = "LocalInventoryServicesConnector" InventoryServices = "LocalInventoryServicesConnector"
NeighbourServices = "LocalNeighbourServicesConnector" NeighbourServices = "NeighbourServicesOutConnector"
AuthenticationServices = "LocalAuthenticationServicesConnector" AuthenticationServices = "LocalAuthenticationServicesConnector"
AuthorizationServices = "LocalAuthorizationServicesConnector" AuthorizationServices = "LocalAuthorizationServicesConnector"
GridServices = "LocalGridServicesConnector" GridServices = "LocalGridServicesConnector"

View File

@ -10,7 +10,7 @@
[Modules] [Modules]
AssetServices = "HGAssetBroker" AssetServices = "HGAssetBroker"
InventoryServices = "HGInventoryBroker" InventoryServices = "HGInventoryBroker"
NeighbourServices = "LocalNeighbourServicesConnector" NeighbourServices = "NeighbourServicesOutConnector"
AuthenticationServices = "LocalAuthenticationServicesConnector" AuthenticationServices = "LocalAuthenticationServicesConnector"
AuthorizationServices = "LocalAuthorizationServicesConnector" AuthorizationServices = "LocalAuthorizationServicesConnector"
GridServices = "LocalGridServicesConnector" GridServices = "LocalGridServicesConnector"