OpenSim
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros
GroupsServiceBase.cs
Go to the documentation of this file.
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 OpenSimulator 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;
29 using System.Reflection;
30 using Nini.Config;
31 using OpenSim.Framework;
32 using OpenSim.Data;
33 using OpenSim.Services.Interfaces;
34 using OpenSim.Services.Base;
35 
36 namespace OpenSim.Groups
37 {
39  {
40  protected IGroupsData m_Database = null;
41  protected IGridUserData m_GridUserService = null;
42 
43  public GroupsServiceBase(IConfigSource config, string cName)
44  : base(config)
45  {
46  string dllName = String.Empty;
47  string connString = String.Empty;
48  string realm = "os_groups";
49  string usersRealm = "GridUser";
50  string configName = (cName == string.Empty) ? "Groups" : cName;
51 
52  //
53  // Try reading the [DatabaseService] section, if it exists
54  //
55  IConfig dbConfig = config.Configs["DatabaseService"];
56  if (dbConfig != null)
57  {
58  if (dllName == String.Empty)
59  dllName = dbConfig.GetString("StorageProvider", String.Empty);
60  if (connString == String.Empty)
61  connString = dbConfig.GetString("ConnectionString", String.Empty);
62  }
63 
64  //
65  // [Groups] section overrides [DatabaseService], if it exists
66  //
67  IConfig groupsConfig = config.Configs[configName];
68  if (groupsConfig != null)
69  {
70  dllName = groupsConfig.GetString("StorageProvider", dllName);
71  connString = groupsConfig.GetString("ConnectionString", connString);
72  realm = groupsConfig.GetString("Realm", realm);
73  }
74 
75  //
76  // We tried, but this doesn't exist. We can't proceed.
77  //
78  if (dllName.Equals(String.Empty))
79  throw new Exception("No StorageProvider configured");
80 
81  m_Database = LoadPlugin<IGroupsData>(dllName, new Object[] { connString, realm });
82  if (m_Database == null)
83  throw new Exception("Could not find a storage interface in the given module " + dllName);
84 
85  //
86  // [GridUserService] section overrides [DatabaseService], if it exists
87  //
88  IConfig usersConfig = config.Configs["GridUserService"];
89  if (usersConfig != null)
90  {
91  dllName = usersConfig.GetString("StorageProvider", dllName);
92  connString = usersConfig.GetString("ConnectionString", connString);
93  usersRealm = usersConfig.GetString("Realm", usersRealm);
94  }
95 
96  m_GridUserService = LoadPlugin<IGridUserData>(dllName, new Object[] { connString, usersRealm });
97  if (m_GridUserService == null)
98  throw new Exception("Could not find a storage inferface for the given users module " + dllName);
99  }
100  }
101 }
An interface for connecting to the user grid datastore
GroupsServiceBase(IConfigSource config, string cName)