diff options
author | Mike Mazur | 2009-02-03 05:20:44 +0000 |
---|---|---|
committer | Mike Mazur | 2009-02-03 05:20:44 +0000 |
commit | d259238c748aafe366fd1d04e0248ef23116fd28 (patch) | |
tree | ec85d8863cffedda47d396d007459b5499bd8162 | |
parent | - move OpenSim/Framework/IUserData.cs to OpenSim/Data/IUserData.cs (diff) | |
download | opensim-SC-d259238c748aafe366fd1d04e0248ef23116fd28.zip opensim-SC-d259238c748aafe366fd1d04e0248ef23116fd28.tar.gz opensim-SC-d259238c748aafe366fd1d04e0248ef23116fd28.tar.bz2 opensim-SC-d259238c748aafe366fd1d04e0248ef23116fd28.tar.xz |
- moved data plugin loading code from various places to
OpenSim/Data/DataPluginFactory.cs
- removed dependencies on a few executable assemblies in
bin/OpenSim.Data.addin.xml
- trim trailing whitespace
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Data/DataPluginFactory.cs | 141 | ||||
-rw-r--r-- | OpenSim/Framework/Communications/InventoryServiceBase.cs | 20 | ||||
-rw-r--r-- | OpenSim/Framework/Communications/UserManagerBase.cs | 21 | ||||
-rw-r--r-- | OpenSim/Grid/AssetServer/Main.cs | 15 | ||||
-rw-r--r-- | OpenSim/Grid/GridServer/GridManager.cs | 43 | ||||
-rw-r--r-- | bin/OpenSim.Data.addin.xml | 19 |
6 files changed, 185 insertions, 74 deletions
diff --git a/OpenSim/Data/DataPluginFactory.cs b/OpenSim/Data/DataPluginFactory.cs new file mode 100644 index 0000000..5293e94 --- /dev/null +++ b/OpenSim/Data/DataPluginFactory.cs | |||
@@ -0,0 +1,141 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
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 | ||
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 | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using System.Collections.Generic; | ||
29 | using OpenSim.Framework; | ||
30 | |||
31 | namespace OpenSim.Data | ||
32 | { | ||
33 | /// <summary> | ||
34 | /// A static class containing a series of methods for obtaining handles to | ||
35 | /// database storage objects. | ||
36 | /// </summary> | ||
37 | // Yeah, it's not really a factory, but maybe it'll morph into one? | ||
38 | public static class DataPluginFactory | ||
39 | { | ||
40 | /// <summary> | ||
41 | /// Returns a list of new inventory data plugins. Plugins will be | ||
42 | /// requested in the order they were added. | ||
43 | /// </summary> | ||
44 | /// <param name="provider"> | ||
45 | /// The filename of the inventory server plugin DLL. | ||
46 | /// </param> | ||
47 | /// <param name="connect"> | ||
48 | /// The connection string for the storage backend. | ||
49 | /// </param> | ||
50 | public static List<IInventoryDataPlugin> LoadInventoryDataPlugins(string provider, string connect) | ||
51 | { | ||
52 | PluginLoader<IInventoryDataPlugin> loader = new PluginLoader<IInventoryDataPlugin> (new InventoryDataInitialiser(connect)); | ||
53 | |||
54 | // loader will try to load all providers (MySQL, MSSQL, etc) | ||
55 | // unless it is constrainted to the correct "Provider" entry in the addin.xml | ||
56 | loader.Add ("/OpenSim/InventoryData", new PluginProviderFilter(provider)); | ||
57 | loader.Load(); | ||
58 | |||
59 | return loader.Plugins; | ||
60 | } | ||
61 | |||
62 | /// <summary> | ||
63 | /// Returns a list of new user data plugins. Plugins will be requested | ||
64 | /// in the order they were added. | ||
65 | /// </summary> | ||
66 | /// <param name="provider"> | ||
67 | /// The filename of the user data plugin DLL. | ||
68 | /// </param> | ||
69 | /// <param name="connect"> | ||
70 | /// The connection string for the storage backend. | ||
71 | /// </param> | ||
72 | public static List<IUserDataPlugin> LoadUserDataPlugins(string provider, string connect) | ||
73 | { | ||
74 | PluginLoader<IUserDataPlugin> loader = new PluginLoader<IUserDataPlugin>(new UserDataInitialiser(connect)); | ||
75 | |||
76 | // loader will try to load all providers (MySQL, MSSQL, etc) | ||
77 | // unless it is constrainted to the correct "Provider" entry in the addin.xml | ||
78 | loader.Add("/OpenSim/UserData", new PluginProviderFilter(provider)); | ||
79 | loader.Load(); | ||
80 | |||
81 | return loader.Plugins; | ||
82 | } | ||
83 | |||
84 | /// <summary> | ||
85 | /// Returns a list of new grid data plugins. Plugins will be requested | ||
86 | /// in the order they were added. | ||
87 | /// </summary> | ||
88 | /// <param name="provider"> | ||
89 | /// The filename of the user data plugin DLL. | ||
90 | /// </param> | ||
91 | /// <param name="connect"> | ||
92 | /// The connection string for the storage backend. | ||
93 | /// </param> | ||
94 | public static List<IGridDataPlugin> LoadGridDataPlugins(string provider, string connect) | ||
95 | { | ||
96 | PluginLoader<IGridDataPlugin> loader = new PluginLoader<IGridDataPlugin>(new GridDataInitialiser(connect)); | ||
97 | |||
98 | // loader will try to load all providers (MySQL, MSSQL, etc) | ||
99 | // unless it is constrainted to the correct "Provider" entry in the addin.xml | ||
100 | loader.Add("/OpenSim/GridData", new PluginProviderFilter(provider)); | ||
101 | loader.Load(); | ||
102 | |||
103 | return loader.Plugins; | ||
104 | } | ||
105 | |||
106 | /// <summary> | ||
107 | /// Returns a list of new log data plugins. Plugins will be requested | ||
108 | /// in the order they were added. | ||
109 | /// </summary> | ||
110 | /// <param name="provider"> | ||
111 | /// The filename of the user data plugin DLL. | ||
112 | /// </param> | ||
113 | /// <param name="connect"> | ||
114 | /// The connection string for the storage backend. | ||
115 | /// </param> | ||
116 | public static List<ILogDataPlugin> LoadLogDataPlugins(string provider, string connect) | ||
117 | { | ||
118 | PluginLoader<ILogDataPlugin> loader = new PluginLoader<ILogDataPlugin>(new LogDataInitialiser(connect)); | ||
119 | |||
120 | // loader will try to load all providers (MySQL, MSSQL, etc) | ||
121 | // unless it is constrainted to the correct "Provider" entry in the addin.xml | ||
122 | loader.Add("/OpenSim/LogData", new PluginProviderFilter(provider)); | ||
123 | loader.Load(); | ||
124 | |||
125 | return loader.Plugins; | ||
126 | } | ||
127 | |||
128 | public static IAssetDataPlugin LoadAssetDataPlugin(string provider, string connect) | ||
129 | { | ||
130 | PluginLoader<IAssetDataPlugin> loader = new PluginLoader<IAssetDataPlugin> (new AssetDataInitialiser (connect)); | ||
131 | |||
132 | // loader will try to load all providers (MySQL, MSSQL, etc) | ||
133 | // unless it is constrainted to the correct "Provider" entry in the addin.xml | ||
134 | loader.Add ("/OpenSim/AssetData", new PluginProviderFilter (provider)); | ||
135 | loader.Load(); | ||
136 | |||
137 | return loader.Plugin; | ||
138 | } | ||
139 | |||
140 | } | ||
141 | } | ||
diff --git a/OpenSim/Framework/Communications/InventoryServiceBase.cs b/OpenSim/Framework/Communications/InventoryServiceBase.cs index ec5c493..a031bdf 100644 --- a/OpenSim/Framework/Communications/InventoryServiceBase.cs +++ b/OpenSim/Framework/Communications/InventoryServiceBase.cs | |||
@@ -59,20 +59,18 @@ namespace OpenSim.Framework.Communications | |||
59 | } | 59 | } |
60 | 60 | ||
61 | /// <summary> | 61 | /// <summary> |
62 | /// Adds a new inventory data plugin - plugins will be requested in the order they were loaded. | 62 | /// Adds a list of inventory data plugins, as described by `provider' |
63 | /// and `connect', to `m_plugins'. | ||
63 | /// </summary> | 64 | /// </summary> |
64 | /// <param name="provider">The filename of the inventory server plugin DLL</param> | 65 | /// <param name="provider"> |
66 | /// The filename of the inventory server plugin DLL. | ||
67 | /// </param> | ||
68 | /// <param name="connect"> | ||
69 | /// The connection string for the storage backend. | ||
70 | /// </param> | ||
65 | public void AddPlugin(string provider, string connect) | 71 | public void AddPlugin(string provider, string connect) |
66 | { | 72 | { |
67 | PluginLoader<IInventoryDataPlugin> loader = | 73 | m_plugins.AddRange(DataPluginFactory.LoadInventoryDataPlugins(provider, connect)); |
68 | new PluginLoader<IInventoryDataPlugin> (new InventoryDataInitialiser(connect)); | ||
69 | |||
70 | // loader will try to load all providers (MySQL, MSSQL, etc) | ||
71 | // unless it is constrainted to the correct "Provider" entry in the addin.xml | ||
72 | loader.Add ("/OpenSim/InventoryData", new PluginProviderFilter(provider)); | ||
73 | loader.Load(); | ||
74 | |||
75 | m_plugins.AddRange(loader.Plugins); | ||
76 | } | 74 | } |
77 | 75 | ||
78 | #endregion | 76 | #endregion |
diff --git a/OpenSim/Framework/Communications/UserManagerBase.cs b/OpenSim/Framework/Communications/UserManagerBase.cs index b12abb3..886900d 100644 --- a/OpenSim/Framework/Communications/UserManagerBase.cs +++ b/OpenSim/Framework/Communications/UserManagerBase.cs | |||
@@ -74,21 +74,18 @@ namespace OpenSim.Framework.Communications | |||
74 | } | 74 | } |
75 | 75 | ||
76 | /// <summary> | 76 | /// <summary> |
77 | /// Add a new user data plugin - plugins will be requested in the order they were added. | 77 | /// Adds a list of user data plugins, as described by `provider' and |
78 | /// `connect', to `_plugins'. | ||
78 | /// </summary> | 79 | /// </summary> |
79 | /// <param name="provider">The filename to the user data plugin DLL</param> | 80 | /// <param name="provider"> |
80 | /// <param name="connect"></param> | 81 | /// The filename of the inventory server plugin DLL. |
82 | /// </param> | ||
83 | /// <param name="connect"> | ||
84 | /// The connection string for the storage backend. | ||
85 | /// </param> | ||
81 | public void AddPlugin(string provider, string connect) | 86 | public void AddPlugin(string provider, string connect) |
82 | { | 87 | { |
83 | PluginLoader<IUserDataPlugin> loader = | 88 | _plugins.AddRange(DataPluginFactory.LoadUserDataPlugins(provider, connect)); |
84 | new PluginLoader<IUserDataPlugin>(new UserDataInitialiser(connect)); | ||
85 | |||
86 | // loader will try to load all providers (MySQL, MSSQL, etc) | ||
87 | // unless it is constrainted to the correct "Provider" entry in the addin.xml | ||
88 | loader.Add("/OpenSim/UserData", new PluginProviderFilter(provider)); | ||
89 | loader.Load(); | ||
90 | |||
91 | _plugins.AddRange(loader.Plugins); | ||
92 | } | 89 | } |
93 | 90 | ||
94 | #region Get UserProfile | 91 | #region Get UserProfile |
diff --git a/OpenSim/Grid/AssetServer/Main.cs b/OpenSim/Grid/AssetServer/Main.cs index 07fe0a4..060c473 100644 --- a/OpenSim/Grid/AssetServer/Main.cs +++ b/OpenSim/Grid/AssetServer/Main.cs | |||
@@ -112,24 +112,11 @@ namespace OpenSim.Grid.AssetServer | |||
112 | return null; | 112 | return null; |
113 | } | 113 | } |
114 | 114 | ||
115 | public IAssetDataPlugin LoadDatabasePlugin(string provider, string connect) | ||
116 | { | ||
117 | PluginLoader<IAssetDataPlugin> loader = | ||
118 | new PluginLoader<IAssetDataPlugin> (new AssetDataInitialiser (connect)); | ||
119 | |||
120 | // loader will try to load all providers (MySQL, MSSQL, etc) | ||
121 | // unless it is constrainted to the correct "Provider" entry in the addin.xml | ||
122 | loader.Add ("/OpenSim/AssetData", new PluginProviderFilter (provider)); | ||
123 | loader.Load(); | ||
124 | |||
125 | return loader.Plugin; | ||
126 | } | ||
127 | |||
128 | public void setupDB(AssetConfig config) | 115 | public void setupDB(AssetConfig config) |
129 | { | 116 | { |
130 | try | 117 | try |
131 | { | 118 | { |
132 | m_assetProvider = LoadDatabasePlugin(config.DatabaseProvider, config.DatabaseConnect); | 119 | m_assetProvider = DataPluginFactory.LoadAssetDataPlugin(config.DatabaseProvider, config.DatabaseConnect); |
133 | if (m_assetProvider == null) | 120 | if (m_assetProvider == null) |
134 | { | 121 | { |
135 | m_log.Error("[ASSET]: Failed to load a database plugin, server halting"); | 122 | m_log.Error("[ASSET]: Failed to load a database plugin, server halting"); |
diff --git a/OpenSim/Grid/GridServer/GridManager.cs b/OpenSim/Grid/GridServer/GridManager.cs index daee729..3fc0393 100644 --- a/OpenSim/Grid/GridServer/GridManager.cs +++ b/OpenSim/Grid/GridServer/GridManager.cs | |||
@@ -53,12 +53,12 @@ namespace OpenSim.Grid.GridServer | |||
53 | private List<MessageServerInfo> _MessageServers = new List<MessageServerInfo>(); | 53 | private List<MessageServerInfo> _MessageServers = new List<MessageServerInfo>(); |
54 | 54 | ||
55 | public GridConfig Config; | 55 | public GridConfig Config; |
56 | 56 | ||
57 | /// <value> | 57 | /// <value> |
58 | /// Used to notify old regions as to which OpenSim version to upgrade to | 58 | /// Used to notify old regions as to which OpenSim version to upgrade to |
59 | /// </value> | 59 | /// </value> |
60 | private string m_opensimVersion; | 60 | private string m_opensimVersion; |
61 | 61 | ||
62 | /// <summary> | 62 | /// <summary> |
63 | /// Constructor | 63 | /// Constructor |
64 | /// </summary> | 64 | /// </summary> |
@@ -71,27 +71,20 @@ namespace OpenSim.Grid.GridServer | |||
71 | } | 71 | } |
72 | 72 | ||
73 | /// <summary> | 73 | /// <summary> |
74 | /// Adds a new grid server plugin - grid servers will be requested in the order they were loaded. | 74 | /// Adds a list of grid and log data plugins, as described by |
75 | /// `provider' and `connect', to `_plugins' and `_logplugins', | ||
76 | /// respectively. | ||
75 | /// </summary> | 77 | /// </summary> |
76 | /// <param name="provider">The name of the grid server plugin DLL</param> | 78 | /// <param name="provider"> |
79 | /// The filename of the inventory server plugin DLL. | ||
80 | /// </param> | ||
81 | /// <param name="connect"> | ||
82 | /// The connection string for the storage backend. | ||
83 | /// </param> | ||
77 | public void AddPlugin(string provider, string connect) | 84 | public void AddPlugin(string provider, string connect) |
78 | { | 85 | { |
79 | PluginLoader<IGridDataPlugin> gridloader = | 86 | _plugins = DataPluginFactory.LoadGridDataPlugins(provider, connect); |
80 | new PluginLoader<IGridDataPlugin> (new GridDataInitialiser (connect)); | 87 | _logplugins = DataPluginFactory.LoadLogDataPlugins(provider, connect); |
81 | |||
82 | PluginLoader<ILogDataPlugin> logloader = | ||
83 | new PluginLoader<ILogDataPlugin> (new LogDataInitialiser (connect)); | ||
84 | |||
85 | // loader will try to load all providers (MySQL, MSSQL, etc) | ||
86 | // unless it is constrainted to the correct "Provider" entry in the addin.xml | ||
87 | gridloader.Add ("/OpenSim/GridData", new PluginProviderFilter (provider)); | ||
88 | logloader.Add ("/OpenSim/LogData", new PluginProviderFilter (provider)); | ||
89 | |||
90 | gridloader.Load(); | ||
91 | logloader.Load(); | ||
92 | |||
93 | _plugins = gridloader.Plugins; | ||
94 | _logplugins = logloader.Plugins; | ||
95 | } | 88 | } |
96 | 89 | ||
97 | /// <summary> | 90 | /// <summary> |
@@ -389,8 +382,8 @@ namespace OpenSim.Grid.GridServer | |||
389 | m_log.Debug("[LOGIN PRELUDE]: Invalid login parameters, sending back error response."); | 382 | m_log.Debug("[LOGIN PRELUDE]: Invalid login parameters, sending back error response."); |
390 | return ErrorResponse("Wrong format in login parameters. Please verify parameters." + e.ToString()); | 383 | return ErrorResponse("Wrong format in login parameters. Please verify parameters." + e.ToString()); |
391 | } | 384 | } |
392 | 385 | ||
393 | m_log.InfoFormat("[LOGIN BEGIN]: Received login request from simulator: {0}", sim.regionName); | 386 | m_log.InfoFormat("[LOGIN BEGIN]: Received login request from simulator: {0}", sim.regionName); |
394 | 387 | ||
395 | if (!Config.AllowRegionRegistration) | 388 | if (!Config.AllowRegionRegistration) |
396 | { | 389 | { |
@@ -399,12 +392,12 @@ namespace OpenSim.Grid.GridServer | |||
399 | sim.regionName); | 392 | sim.regionName); |
400 | 393 | ||
401 | return ErrorResponse("This grid is currently not accepting region registrations."); | 394 | return ErrorResponse("This grid is currently not accepting region registrations."); |
402 | } | 395 | } |
403 | 396 | ||
404 | int majorInterfaceVersion = 0; | 397 | int majorInterfaceVersion = 0; |
405 | if (requestData.ContainsKey("major_interface_version")) | 398 | if (requestData.ContainsKey("major_interface_version")) |
406 | int.TryParse((string)requestData["major_interface_version"], out majorInterfaceVersion); | 399 | int.TryParse((string)requestData["major_interface_version"], out majorInterfaceVersion); |
407 | 400 | ||
408 | if (majorInterfaceVersion != VersionInfo.MajorInterfaceVersion) | 401 | if (majorInterfaceVersion != VersionInfo.MajorInterfaceVersion) |
409 | { | 402 | { |
410 | return ErrorResponse( | 403 | return ErrorResponse( |
diff --git a/bin/OpenSim.Data.addin.xml b/bin/OpenSim.Data.addin.xml index 2a3db5f..65774ff 100644 --- a/bin/OpenSim.Data.addin.xml +++ b/bin/OpenSim.Data.addin.xml | |||
@@ -1,26 +1,21 @@ | |||
1 | <Addin id="OpenSim.Data" isroot="true" version="0.5"> | 1 | <Addin id="OpenSim.Data" isroot="true" version="0.5"> |
2 | <Runtime> | 2 | <Runtime> |
3 | <Import assembly="OpenSim.Grid.UserServer.exe"/> | 3 | <Import assembly="OpenSim.Data.dll" /> |
4 | <Import assembly="OpenSim.Grid.GridServer.exe"/> | 4 | <Import assembly="OpenSim.Framework.dll" /> |
5 | <Import assembly="OpenSim.Grid.AssetServer.exe"/> | ||
6 | <Import assembly="OpenSim.Grid.InventoryServer.exe"/> | ||
7 | <Import assembly="OpenSim.Grid.MessagingServer.exe"/> | ||
8 | <Import assembly="OpenSim.Data.dll"/> | ||
9 | <Import assembly="OpenSim.Framework.dll"/> | ||
10 | </Runtime> | 5 | </Runtime> |
11 | <ExtensionPoint path = "/OpenSim/GridData"> | 6 | <ExtensionPoint path = "/OpenSim/GridData"> |
12 | <ExtensionNode name="Plugin" type="OpenSim.Framework.PluginExtensionNode" objectType="OpenSim.Data.IGridDataPlugin"/> | 7 | <ExtensionNode name="Plugin" type="OpenSim.Framework.PluginExtensionNode" objectType="OpenSim.Data.IGridDataPlugin" /> |
13 | </ExtensionPoint> | 8 | </ExtensionPoint> |
14 | <ExtensionPoint path = "/OpenSim/LogData"> | 9 | <ExtensionPoint path = "/OpenSim/LogData"> |
15 | <ExtensionNode name="Plugin" type="OpenSim.Framework.PluginExtensionNode" objectType="OpenSim.Data.ILogDataPlugin"/> | 10 | <ExtensionNode name="Plugin" type="OpenSim.Framework.PluginExtensionNode" objectType="OpenSim.Data.ILogDataPlugin" /> |
16 | </ExtensionPoint> | 11 | </ExtensionPoint> |
17 | <ExtensionPoint path = "/OpenSim/AssetData"> | 12 | <ExtensionPoint path = "/OpenSim/AssetData"> |
18 | <ExtensionNode name="Plugin" type="OpenSim.Framework.PluginExtensionNode" objectType="OpenSim.Data.IAssetDataPlugin"/> | 13 | <ExtensionNode name="Plugin" type="OpenSim.Framework.PluginExtensionNode" objectType="OpenSim.Data.IAssetDataPlugin" /> |
19 | </ExtensionPoint> | 14 | </ExtensionPoint> |
20 | <ExtensionPoint path = "/OpenSim/InventoryData"> | 15 | <ExtensionPoint path = "/OpenSim/InventoryData"> |
21 | <ExtensionNode name="Plugin" type="OpenSim.Framework.PluginExtensionNode" objectType="OpenSim.Data.IInventoryDataPlugin"/> | 16 | <ExtensionNode name="Plugin" type="OpenSim.Framework.PluginExtensionNode" objectType="OpenSim.Data.IInventoryDataPlugin" /> |
22 | </ExtensionPoint> | 17 | </ExtensionPoint> |
23 | <ExtensionPoint path = "/OpenSim/UserData"> | 18 | <ExtensionPoint path = "/OpenSim/UserData"> |
24 | <ExtensionNode name="Plugin" type="OpenSim.Framework.PluginExtensionNode" objectType="OpenSim.Data.IUserDataPlugin"/> | 19 | <ExtensionNode name="Plugin" type="OpenSim.Framework.PluginExtensionNode" objectType="OpenSim.Data.IUserDataPlugin" /> |
25 | </ExtensionPoint> | 20 | </ExtensionPoint> |
26 | </Addin> | 21 | </Addin> |