aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authordiva2009-06-15 00:17:17 +0000
committerdiva2009-06-15 00:17:17 +0000
commit54d44e370b1c6995a887e17823c9de645d1e72bb (patch)
tree5b470056344f5f831bdefbb483e3ef5f14790433
parentFactoring out "land_data" / RequestLandData that was hanging off of IGridServ... (diff)
downloadopensim-SC_OLD-54d44e370b1c6995a887e17823c9de645d1e72bb.zip
opensim-SC_OLD-54d44e370b1c6995a887e17823c9de645d1e72bb.tar.gz
opensim-SC_OLD-54d44e370b1c6995a887e17823c9de645d1e72bb.tar.bz2
opensim-SC_OLD-54d44e370b1c6995a887e17823c9de645d1e72bb.tar.xz
Removing the OpenSim.SimulatorServices project. All of those region modules are now in CoreModules/ServiceConnectorsIn, where they belong.
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml6
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsIn/Asset/RegionAssetService.cs (renamed from OpenSim/SimulatorServices/RegionAssetService.cs)216
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsIn/Inventory/RegionInventoryService.cs (renamed from OpenSim/SimulatorServices/RegionInventoryService.cs)215
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsIn/Land/LandServiceInConnectorModule.cs (renamed from OpenSim/SimulatorServices/LandServiceInConnectorModule.cs)2
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsIn/Neighbour/NeighbourServiceInConnectorModule.cs (renamed from OpenSim/SimulatorServices/NeighbourServiceInConnectorModule.cs)274
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsIn/Simulation/SimulationServiceInConnectorModule.cs (renamed from OpenSim/SimulatorServices/SimulationService.cs)225
-rw-r--r--OpenSim/SimulatorServices/Resources/SimulatorServices.addin.xml17
-rw-r--r--bin/config-include/StandaloneHypergrid.ini6
-rw-r--r--prebuild.xml36
9 files changed, 488 insertions, 509 deletions
diff --git a/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml b/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml
index 1c79bf4..74fdc0d 100644
--- a/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml
+++ b/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml
@@ -30,6 +30,12 @@
30 <RegionModule id="RemoteNeighbourServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Neighbour.RemoteNeighbourServicesConnector" /> 30 <RegionModule id="RemoteNeighbourServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Neighbour.RemoteNeighbourServicesConnector" />
31 <RegionModule id="LocalLandServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Land.LocalLandServicesConnector" /> 31 <RegionModule id="LocalLandServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Land.LocalLandServicesConnector" />
32 <RegionModule id="RemoteLandServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Land.RemoteLandServicesConnector" /> 32 <RegionModule id="RemoteLandServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Land.RemoteLandServicesConnector" />
33 <!-- Service connectors IN modules -->
34 <RegionModule id="RegionAssetService" type="OpenSim.Region.CoreModules.ServiceConnectorsIn.Asset.RegionAssetService" />
35 <RegionModule id="RegionInventoryService" type="OpenSim.Region.CoreModules.ServiceConnectorsIn.Inventory.RegionInventoryService" />
36 <RegionModule id="LandServiceInConnectorModule" type="OpenSim.Region.CoreModules.ServiceConnectorsIn.Land.LandServiceInConnectorModule" />
37 <RegionModule id="NeighbourServiceInConnectorModule" type="OpenSim.Region.CoreModules.ServiceConnectorsIn.Neighbour.NeighbourServiceInConnectorModule" /> \
38
33 </Extension> 39 </Extension>
34 40
35 <Extension path = "/OpenSim/WindModule"> 41 <Extension path = "/OpenSim/WindModule">
diff --git a/OpenSim/SimulatorServices/RegionAssetService.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Asset/RegionAssetService.cs
index b8e1adc..d4bd299 100644
--- a/OpenSim/SimulatorServices/RegionAssetService.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Asset/RegionAssetService.cs
@@ -1,103 +1,113 @@
1/* 1/*
2 * Copyright (c) Contributors, http://opensimulator.org/ 2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders. 3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright 7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright 9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution. 11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the 12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products 13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission. 14 * derived from this software without specific prior written permission.
15 * 15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY 16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY 19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27 27
28using System; 28using System;
29using System.Reflection; 29using System.Reflection;
30using System.Collections.Generic; 30using System.Collections.Generic;
31using log4net; 31using log4net;
32using Nini.Config; 32using Nini.Config;
33using OpenSim.Framework; 33using OpenSim.Framework;
34using OpenSim.Framework.Servers.HttpServer; 34using OpenSim.Framework.Servers.HttpServer;
35using OpenSim.Region.Framework.Scenes; 35using OpenSim.Region.Framework.Scenes;
36using OpenSim.Region.Framework.Interfaces; 36using OpenSim.Region.Framework.Interfaces;
37using OpenSim.Server.Base; 37using OpenSim.Server.Base;
38using OpenSim.Server.Handlers.Base; 38using OpenSim.Server.Handlers.Base;
39 39
40namespace OpenSim.SimulatorServices 40namespace OpenSim.Region.CoreModules.ServiceConnectorsIn.Asset
41{ 41{
42 public class RegionAssetService : ISharedRegionModule 42 public class RegionAssetService : ISharedRegionModule
43 { 43 {
44 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 44 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
45 private static bool enabled = false; 45 private static bool m_Enabled = false;
46 46
47 private IConfigSource m_Config; 47 private IConfigSource m_Config;
48 bool m_Registered = false; 48 bool m_Registered = false;
49 49
50 #region IRegionModule interface 50 #region IRegionModule interface
51 51
52 public void Initialise(IConfigSource config) 52 public void Initialise(IConfigSource config)
53 { 53 {
54 // This module is only on for standalones in hypergrid mode 54 //// This module is only on for standalones in hypergrid mode
55 enabled = ((!config.Configs["Startup"].GetBoolean("gridmode", true)) && 55 //enabled = ((!config.Configs["Startup"].GetBoolean("gridmode", true)) &&
56 config.Configs["Startup"].GetBoolean("hypergrid", true)) || 56 // config.Configs["Startup"].GetBoolean("hypergrid", true)) ||
57 ((config.Configs["MXP"] != null) && config.Configs["MXP"].GetBoolean("Enabled", true)); 57 // ((config.Configs["MXP"] != null) && config.Configs["MXP"].GetBoolean("Enabled", true));
58 m_log.DebugFormat("[RegionAssetService]: enabled? {0}", enabled); 58 //m_log.DebugFormat("[RegionAssetService]: enabled? {0}", enabled);
59 m_Config = config; 59 m_Config = config;
60 } 60 IConfig moduleConfig = config.Configs["Modules"];
61 61 if (moduleConfig != null)
62 public void PostInitialise() 62 {
63 { 63 m_Enabled = moduleConfig.GetBoolean("AssetServiceInConnector", false);
64 } 64 if (m_Enabled)
65 65 {
66 public void Close() 66 m_log.Info("[ASSET IN CONNECTOR]: AssetServiceInConnector enabled");
67 { 67 }
68 } 68
69 69 }
70 public string Name 70 }
71 { 71
72 get { return "RegionAssetService"; } 72 public void PostInitialise()
73 } 73 {
74 74 }
75 public void AddRegion(Scene scene) 75
76 { 76 public void Close()
77 if (!enabled) 77 {
78 return; 78 }
79 79
80 if (!m_Registered) 80 public string Name
81 { 81 {
82 m_Registered = true; 82 get { return "RegionAssetService"; }
83 83 }
84 m_log.Info("[RegionAssetService]: Starting..."); 84
85 85 public void AddRegion(Scene scene)
86 Object[] args = new Object[] { m_Config, scene.CommsManager.HttpServer }; 86 {
87 87 if (!m_Enabled)
88 ServerUtils.LoadPlugin<IServiceConnector>("OpenSim.Server.Handlers.dll:AssetServiceConnector", args); 88 return;
89 } 89
90 } 90 if (!m_Registered)
91 91 {
92 public void RemoveRegion(Scene scene) 92 m_Registered = true;
93 { 93
94 } 94 m_log.Info("[RegionAssetService]: Starting...");
95 95
96 public void RegionLoaded(Scene scene) 96 Object[] args = new Object[] { m_Config, scene.CommsManager.HttpServer };
97 { 97
98 } 98 ServerUtils.LoadPlugin<IServiceConnector>("OpenSim.Server.Handlers.dll:AssetServiceConnector", args);
99 99 }
100 #endregion 100 }
101 101
102 } 102 public void RemoveRegion(Scene scene)
103} 103 {
104 }
105
106 public void RegionLoaded(Scene scene)
107 {
108 }
109
110 #endregion
111
112 }
113}
diff --git a/OpenSim/SimulatorServices/RegionInventoryService.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Inventory/RegionInventoryService.cs
index d95058e..129b40c 100644
--- a/OpenSim/SimulatorServices/RegionInventoryService.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Inventory/RegionInventoryService.cs
@@ -1,102 +1,113 @@
1/* 1/*
2 * Copyright (c) Contributors, http://opensimulator.org/ 2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders. 3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright 7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright 9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution. 11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the 12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products 13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission. 14 * derived from this software without specific prior written permission.
15 * 15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY 16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY 19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27 27
28using System; 28using System;
29using System.Reflection; 29using System.Reflection;
30using System.Collections.Generic; 30using System.Collections.Generic;
31using log4net; 31using log4net;
32using Nini.Config; 32using Nini.Config;
33using OpenSim.Framework; 33using OpenSim.Framework;
34using OpenSim.Framework.Servers.HttpServer; 34using OpenSim.Framework.Servers.HttpServer;
35using OpenSim.Region.Framework.Scenes; 35using OpenSim.Region.Framework.Scenes;
36using OpenSim.Region.Framework.Interfaces; 36using OpenSim.Region.Framework.Interfaces;
37using OpenSim.Server.Base; 37using OpenSim.Server.Base;
38using OpenSim.Server.Handlers.Base; 38using OpenSim.Server.Handlers.Base;
39 39
40namespace OpenSim.SimulatorServices 40namespace OpenSim.Region.CoreModules.ServiceConnectorsIn.Inventory
41{ 41{
42 public class RegionInventoryService : ISharedRegionModule 42 public class RegionInventoryService : ISharedRegionModule
43 { 43 {
44 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 44 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
45 private static bool enabled = false; 45 private static bool m_Enabled = false;
46 46
47 private IConfigSource m_Config; 47 private IConfigSource m_Config;
48 bool m_Registered = false; 48 bool m_Registered = false;
49 49
50 #region IRegionModule interface 50 #region IRegionModule interface
51 51
52 public void Initialise(IConfigSource config) 52 public void Initialise(IConfigSource config)
53 { 53 {
54 // This module is only on for standalones in hypergrid mode 54 //// This module is only on for standalones in hypergrid mode
55 enabled = (!config.Configs["Startup"].GetBoolean("gridmode", true)) && 55 //enabled = (!config.Configs["Startup"].GetBoolean("gridmode", true)) &&
56 config.Configs["Startup"].GetBoolean("hypergrid", true); 56 // config.Configs["Startup"].GetBoolean("hypergrid", true);
57 m_log.DebugFormat("[RegionInventoryService]: enabled? {0}", enabled); 57 //m_log.DebugFormat("[RegionInventoryService]: enabled? {0}", enabled);
58 m_Config = config; 58 m_Config = config;
59 } 59 IConfig moduleConfig = config.Configs["Modules"];
60 60 if (moduleConfig != null)
61 public void PostInitialise() 61 {
62 { 62 m_Enabled = moduleConfig.GetBoolean("InventoryServiceInConnector", false);
63 } 63 if (m_Enabled)
64 64 {
65 public void Close() 65 m_log.Info("[INVENTORY IN CONNECTOR]: Inventory Service In Connector enabled");
66 { 66 }
67 } 67
68 68 }
69 public string Name 69
70 { 70 }
71 get { return "RegionInventoryService"; } 71
72 } 72 public void PostInitialise()
73 73 {
74 public void AddRegion(Scene scene) 74 }
75 { 75
76 if (!enabled) 76 public void Close()
77 return; 77 {
78 78 }
79 if (!m_Registered) 79
80 { 80 public string Name
81 m_Registered = true; 81 {
82 82 get { return "RegionInventoryService"; }
83 m_log.Info("[RegionInventoryService]: Starting..."); 83 }
84 84
85 Object[] args = new Object[] { m_Config, scene.CommsManager.HttpServer }; 85 public void AddRegion(Scene scene)
86 86 {
87 ServerUtils.LoadPlugin<IServiceConnector>("OpenSim.Server.Handlers.dll:InventoryServiceInConnector", args); 87 if (!m_Enabled)
88 } 88 return;
89 } 89
90 90 if (!m_Registered)
91 public void RemoveRegion(Scene scene) 91 {
92 { 92 m_Registered = true;
93 } 93
94 94 m_log.Info("[RegionInventoryService]: Starting...");
95 public void RegionLoaded(Scene scene) 95
96 { 96 Object[] args = new Object[] { m_Config, scene.CommsManager.HttpServer };
97 } 97
98 98 ServerUtils.LoadPlugin<IServiceConnector>("OpenSim.Server.Handlers.dll:InventoryServiceInConnector", args);
99 #endregion 99 }
100 100 }
101 } 101
102} 102 public void RemoveRegion(Scene scene)
103 {
104 }
105
106 public void RegionLoaded(Scene scene)
107 {
108 }
109
110 #endregion
111
112 }
113}
diff --git a/OpenSim/SimulatorServices/LandServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Land/LandServiceInConnectorModule.cs
index 58d276d..9b6cb4d 100644
--- a/OpenSim/SimulatorServices/LandServiceInConnectorModule.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Land/LandServiceInConnectorModule.cs
@@ -39,7 +39,7 @@ using OpenSim.Server.Handlers.Base;
39using OpenSim.Services.Interfaces; 39using OpenSim.Services.Interfaces;
40 40
41 41
42namespace OpenSim.SimulatorServices 42namespace OpenSim.Region.CoreModules.ServiceConnectorsIn.Land
43{ 43{
44 public class LandServiceInConnectorModule : ISharedRegionModule, ILandService 44 public class LandServiceInConnectorModule : ISharedRegionModule, ILandService
45 { 45 {
diff --git a/OpenSim/SimulatorServices/NeighbourServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Neighbour/NeighbourServiceInConnectorModule.cs
index 8da2e45..1662fd8 100644
--- a/OpenSim/SimulatorServices/NeighbourServiceInConnectorModule.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Neighbour/NeighbourServiceInConnectorModule.cs
@@ -1,137 +1,137 @@
1/* 1/*
2 * Copyright (c) Contributors, http://opensimulator.org/ 2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders. 3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright 7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright 9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution. 11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the 12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products 13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission. 14 * derived from this software without specific prior written permission.
15 * 15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY 16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY 19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27 27
28using System; 28using System;
29using System.Reflection; 29using System.Reflection;
30using System.Collections.Generic; 30using System.Collections.Generic;
31using log4net; 31using log4net;
32using Nini.Config; 32using Nini.Config;
33using OpenSim.Framework; 33using OpenSim.Framework;
34using OpenSim.Framework.Servers.HttpServer; 34using OpenSim.Framework.Servers.HttpServer;
35using OpenSim.Region.Framework.Scenes; 35using OpenSim.Region.Framework.Scenes;
36using OpenSim.Region.Framework.Interfaces; 36using OpenSim.Region.Framework.Interfaces;
37using OpenSim.Server.Base; 37using OpenSim.Server.Base;
38using OpenSim.Server.Handlers.Base; 38using OpenSim.Server.Handlers.Base;
39using OpenSim.Services.Interfaces; 39using OpenSim.Services.Interfaces;
40 40
41 41
42namespace OpenSim.SimulatorServices 42namespace OpenSim.Region.CoreModules.ServiceConnectorsIn.Neighbour
43{ 43{
44 public class NeighbourServiceInConnectorModule : ISharedRegionModule, INeighbourService 44 public class NeighbourServiceInConnectorModule : ISharedRegionModule, INeighbourService
45 { 45 {
46 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 46 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
47 private static bool m_Enabled = false; 47 private static bool m_Enabled = false;
48 private static bool m_Registered = false; 48 private static bool m_Registered = false;
49 49
50 private IConfigSource m_Config; 50 private IConfigSource m_Config;
51 private List<Scene> m_Scenes = new List<Scene>(); 51 private List<Scene> m_Scenes = new List<Scene>();
52 52
53 #region IRegionModule interface 53 #region IRegionModule interface
54 54
55 public void Initialise(IConfigSource config) 55 public void Initialise(IConfigSource config)
56 { 56 {
57 m_Config = config; 57 m_Config = config;
58 58
59 IConfig moduleConfig = config.Configs["Modules"]; 59 IConfig moduleConfig = config.Configs["Modules"];
60 if (moduleConfig != null) 60 if (moduleConfig != null)
61 { 61 {
62 m_Enabled = moduleConfig.GetBoolean("NeighbourServiceInConnector", false); 62 m_Enabled = moduleConfig.GetBoolean("NeighbourServiceInConnector", false);
63 if (m_Enabled) 63 if (m_Enabled)
64 { 64 {
65 m_log.Info("[NEIGHBOUR IN CONNECTOR]: NeighbourServiceInConnector enabled"); 65 m_log.Info("[NEIGHBOUR IN CONNECTOR]: NeighbourServiceInConnector enabled");
66 } 66 }
67 67
68 } 68 }
69 69
70 } 70 }
71 71
72 public void PostInitialise() 72 public void PostInitialise()
73 { 73 {
74 if (!m_Enabled) 74 if (!m_Enabled)
75 return; 75 return;
76 76
77 m_log.Info("[NEIGHBOUR IN CONNECTOR]: Starting..."); 77 m_log.Info("[NEIGHBOUR IN CONNECTOR]: Starting...");
78 } 78 }
79 79
80 public void Close() 80 public void Close()
81 { 81 {
82 } 82 }
83 83
84 public string Name 84 public string Name
85 { 85 {
86 get { return "NeighbourServiceInConnectorModule"; } 86 get { return "NeighbourServiceInConnectorModule"; }
87 } 87 }
88 88
89 public void AddRegion(Scene scene) 89 public void AddRegion(Scene scene)
90 { 90 {
91 if (!m_Enabled) 91 if (!m_Enabled)
92 return; 92 return;
93 93
94 if (!m_Registered) 94 if (!m_Registered)
95 { 95 {
96 m_Registered = true; 96 m_Registered = true;
97 Object[] args = new Object[] { m_Config, scene.CommsManager.HttpServer, this, scene }; 97 Object[] args = new Object[] { m_Config, scene.CommsManager.HttpServer, this, scene };
98 ServerUtils.LoadPlugin<IServiceConnector>("OpenSim.Server.Handlers.dll:NeighbourServiceInConnector", args); 98 ServerUtils.LoadPlugin<IServiceConnector>("OpenSim.Server.Handlers.dll:NeighbourServiceInConnector", args);
99 } 99 }
100 100
101 m_Scenes.Add(scene); 101 m_Scenes.Add(scene);
102 102
103 } 103 }
104 104
105 public void RemoveRegion(Scene scene) 105 public void RemoveRegion(Scene scene)
106 { 106 {
107 if (m_Enabled && m_Scenes.Contains(scene)) 107 if (m_Enabled && m_Scenes.Contains(scene))
108 m_Scenes.Remove(scene); 108 m_Scenes.Remove(scene);
109 } 109 }
110 110
111 public void RegionLoaded(Scene scene) 111 public void RegionLoaded(Scene scene)
112 { 112 {
113 } 113 }
114 114
115 #endregion 115 #endregion
116 116
117 #region INeighbourService 117 #region INeighbourService
118 118
119 public bool HelloNeighbour(ulong regionHandle, RegionInfo thisRegion) 119 public bool HelloNeighbour(ulong regionHandle, RegionInfo thisRegion)
120 { 120 {
121 m_log.DebugFormat("[NEIGHBOUR IN CONNECTOR]: HelloNeighbour from {0}, to {1}. Count = {2}", 121 m_log.DebugFormat("[NEIGHBOUR IN CONNECTOR]: HelloNeighbour from {0}, to {1}. Count = {2}",
122 thisRegion.RegionName, regionHandle, m_Scenes.Count); 122 thisRegion.RegionName, regionHandle, m_Scenes.Count);
123 foreach (Scene s in m_Scenes) 123 foreach (Scene s in m_Scenes)
124 { 124 {
125 if (s.RegionInfo.RegionHandle == regionHandle) 125 if (s.RegionInfo.RegionHandle == regionHandle)
126 { 126 {
127 m_log.Debug("[NEIGHBOUR IN CONNECTOR]: Found region to SendHelloNeighbour"); 127 m_log.Debug("[NEIGHBOUR IN CONNECTOR]: Found region to SendHelloNeighbour");
128 return s.IncomingHelloNeighbour(thisRegion); 128 return s.IncomingHelloNeighbour(thisRegion);
129 } 129 }
130 } 130 }
131 m_log.DebugFormat("[NEIGHBOUR IN CONNECTOR]: region handle {0} not found", regionHandle); 131 m_log.DebugFormat("[NEIGHBOUR IN CONNECTOR]: region handle {0} not found", regionHandle);
132 return false; 132 return false;
133 } 133 }
134 134
135 #endregion INeighbourService 135 #endregion INeighbourService
136 } 136 }
137} 137}
diff --git a/OpenSim/SimulatorServices/SimulationService.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Simulation/SimulationServiceInConnectorModule.cs
index 0aaacfd..4f92244 100644
--- a/OpenSim/SimulatorServices/SimulationService.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Simulation/SimulationServiceInConnectorModule.cs
@@ -1,112 +1,113 @@
1/* 1/*
2 * Copyright (c) Contributors, http://opensimulator.org/ 2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders. 3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright 7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright 9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution. 11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the 12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products 13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission. 14 * derived from this software without specific prior written permission.
15 * 15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY 16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY 19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27 27
28using System; 28using System;
29using System.Reflection; 29using System.Reflection;
30using System.Collections.Generic; 30using System.Collections.Generic;
31using log4net; 31using log4net;
32using Nini.Config; 32using Nini.Config;
33using OpenSim.Framework; 33using OpenSim.Framework;
34using OpenSim.Framework.Servers.HttpServer; 34using OpenSim.Framework.Servers.HttpServer;
35using OpenSim.Region.Framework.Scenes; 35using OpenSim.Region.Framework.Scenes;
36using OpenSim.Region.Framework.Interfaces; 36using OpenSim.Region.Framework.Interfaces;
37using OpenSim.Server.Base; 37using OpenSim.Server.Base;
38using OpenSim.Server.Handlers.Base; 38using OpenSim.Server.Handlers.Base;
39 39
40 40
41namespace OpenSim.SimulatorServices 41namespace OpenSim.Region.CoreModules.ServiceConnectorsIn.Simulation
42{ 42{
43 public class SimulationService : ISharedRegionModule 43 // Under construction
44 { 44 public class SimulationServiceInConnectorModule : ISharedRegionModule
45 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 45 {
46 private static bool m_Enabled = false; 46 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
47 47 private static bool m_Enabled = false;
48 private IConfigSource m_Config; 48
49 bool m_Registered = false; 49 private IConfigSource m_Config;
50 50 bool m_Registered = false;
51 #region IRegionModule interface 51
52 52 #region IRegionModule interface
53 public void Initialise(IConfigSource config) 53
54 { 54 public void Initialise(IConfigSource config)
55 m_Config = config; 55 {
56 56 m_Config = config;
57 IConfig moduleConfig = config.Configs["Modules"]; 57
58 if (moduleConfig != null) 58 IConfig moduleConfig = config.Configs["Modules"];
59 { 59 if (moduleConfig != null)
60 string name = moduleConfig.GetString("SimulationService", ""); 60 {
61 if (name == Name) 61 string name = moduleConfig.GetString("SimulationService", "");
62 { 62 if (name == Name)
63 m_Enabled = true; 63 {
64 m_log.Info("[SIM SERVICE]: SimulationService enabled"); 64 m_Enabled = true;
65 65 m_log.Info("[SIM SERVICE]: SimulationService enabled");
66 } 66
67 } 67 }
68 68 }
69 } 69
70 70 }
71 public void PostInitialise() 71
72 { 72 public void PostInitialise()
73 } 73 {
74 74 }
75 public void Close() 75
76 { 76 public void Close()
77 } 77 {
78 78 }
79 public string Name 79
80 { 80 public string Name
81 get { return "SimulationService"; } 81 {
82 } 82 get { return "SimulationService"; }
83 83 }
84 public void AddRegion(Scene scene) 84
85 { 85 public void AddRegion(Scene scene)
86 if (!m_Enabled) 86 {
87 return; 87 if (!m_Enabled)
88 88 return;
89 if (!m_Registered) 89
90 { 90 if (!m_Registered)
91 m_Registered = true; 91 {
92 92 m_Registered = true;
93 m_log.Info("[SIM SERVICE]: Starting..."); 93
94 94 m_log.Info("[SIM SERVICE]: Starting...");
95 Object[] args = new Object[] { m_Config, scene.CommsManager.HttpServer, scene }; 95
96 96 Object[] args = new Object[] { m_Config, scene.CommsManager.HttpServer, scene };
97 ServerUtils.LoadPlugin<IServiceConnector>("OpenSim.Server.Handlers.dll:SimulationServiceInConnector", args); 97
98 } 98 ServerUtils.LoadPlugin<IServiceConnector>("OpenSim.Server.Handlers.dll:SimulationServiceInConnector", args);
99 } 99 }
100 100 }
101 public void RemoveRegion(Scene scene) 101
102 { 102 public void RemoveRegion(Scene scene)
103 } 103 {
104 104 }
105 public void RegionLoaded(Scene scene) 105
106 { 106 public void RegionLoaded(Scene scene)
107 } 107 {
108 108 }
109 #endregion 109
110 110 #endregion
111 } 111
112} 112 }
113}
diff --git a/OpenSim/SimulatorServices/Resources/SimulatorServices.addin.xml b/OpenSim/SimulatorServices/Resources/SimulatorServices.addin.xml
deleted file mode 100644
index 18b9423..0000000
--- a/OpenSim/SimulatorServices/Resources/SimulatorServices.addin.xml
+++ /dev/null
@@ -1,17 +0,0 @@
1<Addin id="OpenSim.SimulatorServices" version="0.2">
2 <Runtime>
3 <Import assembly="OpenSim.SimulatorServices.dll"/>
4 </Runtime>
5
6 <Dependencies>
7 <Addin id="OpenSim" version="0.5" />
8 </Dependencies>
9
10 <Extension path = "/OpenSim/RegionModules">
11 <RegionModule id="RegionAssetService" type="OpenSim.SimulatorServices.RegionAssetService" />
12 <RegionModule id="RegionInventoryService" type="OpenSim.SimulatorServices.RegionInventoryService" />
13 <RegionModule id="NeighbourServiceInConnectorModule" type="OpenSim.SimulatorServices.NeighbourServiceInConnectorModule" />
14 <RegionModule id="LandServiceInConnectorModule" type="OpenSim.SimulatorServices.LandServiceInConnectorModule" />
15 </Extension>
16
17</Addin>
diff --git a/bin/config-include/StandaloneHypergrid.ini b/bin/config-include/StandaloneHypergrid.ini
index d8aec49..a21251c 100644
--- a/bin/config-include/StandaloneHypergrid.ini
+++ b/bin/config-include/StandaloneHypergrid.ini
@@ -11,9 +11,11 @@
11 AssetServices = "HGAssetBroker" 11 AssetServices = "HGAssetBroker"
12 InventoryServices = "HGInventoryBroker" 12 InventoryServices = "HGInventoryBroker"
13 NeighbourServices = "LocalNeighbourServicesConnector" 13 NeighbourServices = "LocalNeighbourServicesConnector"
14 InventoryServiceInConnector = true
15 AssetServiceInConnector = true
14 16
15[AssetService] 17[AssetService]
16 ; For the RegionAssetService 18 ; For the AssetServiceInConnector
17 LocalServiceModule = "OpenSim.Services.AssetService.dll:AssetService" 19 LocalServiceModule = "OpenSim.Services.AssetService.dll:AssetService"
18 20
19 ; For HGAssetBroker 21 ; For HGAssetBroker
@@ -21,7 +23,7 @@
21 HypergridAssetService = "OpenSim.Services.AssetService.dll:HGAssetService" 23 HypergridAssetService = "OpenSim.Services.AssetService.dll:HGAssetService"
22 24
23[InventoryService] 25[InventoryService]
24 ; For the RegionInventoryService 26 ; For the InventoryServiceInConnector
25 LocalServiceModule = "OpenSim.Services.InventoryService.dll:InventoryService" 27 LocalServiceModule = "OpenSim.Services.InventoryService.dll:InventoryService"
26 28
27 ; For HGInventoryBroker 29 ; For HGInventoryBroker
diff --git a/prebuild.xml b/prebuild.xml
index 6a17b9d..312b90a 100644
--- a/prebuild.xml
+++ b/prebuild.xml
@@ -1547,6 +1547,7 @@
1547 <Reference name="OpenSim.Data" /> 1547 <Reference name="OpenSim.Data" />
1548 <Reference name="OpenSim.Region.Framework" /> 1548 <Reference name="OpenSim.Region.Framework" />
1549 <Reference name="OpenSim.Server.Base" /> 1549 <Reference name="OpenSim.Server.Base" />
1550 <Reference name="OpenSim.Server.Handlers" />
1550 <Reference name="OpenSim.Services.Connectors" /> 1551 <Reference name="OpenSim.Services.Connectors" />
1551 <Reference name="OpenSim.Services.Base" /> 1552 <Reference name="OpenSim.Services.Base" />
1552 <Reference name="OpenSim.Services.Interfaces" /> 1553 <Reference name="OpenSim.Services.Interfaces" />
@@ -1657,41 +1658,6 @@
1657 </Files> 1658 </Files>
1658 </Project> 1659 </Project>
1659 1660
1660 <Project name="OpenSim.SimulatorServices" path="OpenSim/SimulatorServices" type="Library">
1661 <Configuration name="Debug">
1662 <Options>
1663 <OutputPath>../../bin/</OutputPath>
1664 </Options>
1665 </Configuration>
1666 <Configuration name="Release">
1667 <Options>
1668 <OutputPath>../../bin/</OutputPath>
1669 </Options>
1670 </Configuration>
1671
1672 <ReferencePath>../../bin/</ReferencePath>
1673 <Reference name="System"/>
1674 <Reference name="OpenSim.Framework"/>
1675 <Reference name="OpenSim.Framework.Communications"/>
1676 <Reference name="OpenSim.Framework.Servers.HttpServer" />
1677 <Reference name="OpenSim.Region.Framework" />
1678 <Reference name="OpenSim.Services.Interfaces"/>
1679 <Reference name="OpenSim.Server.Base"/>
1680 <Reference name="OpenSim.Server.Handlers"/>
1681 <Reference name="Mono.Addins.dll" />
1682 <Reference name="XMLRPC.dll"/>
1683 <Reference name="Nini.dll" />
1684 <Reference name="log4net.dll"/>
1685
1686
1687 <Files>
1688 <Match pattern="*.cs" recurse="true">
1689 <Exclude name="Tests" pattern="Tests" />
1690 </Match>
1691 <Match pattern="*.addin.xml" path="Resources" buildAction="EmbeddedResource" recurse="true"/>
1692 </Files>
1693 </Project>
1694
1695 <Project name="OpenSim.Region.Communications.Hypergrid" path="OpenSim/Region/Communications/Hypergrid" type="Library"> 1661 <Project name="OpenSim.Region.Communications.Hypergrid" path="OpenSim/Region/Communications/Hypergrid" type="Library">
1696 <Configuration name="Debug"> 1662 <Configuration name="Debug">
1697 <Options> 1663 <Options>