aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Grid/MessagingServer/Main.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Grid/MessagingServer/Main.cs')
-rw-r--r--OpenSim/Grid/MessagingServer/Main.cs293
1 files changed, 0 insertions, 293 deletions
diff --git a/OpenSim/Grid/MessagingServer/Main.cs b/OpenSim/Grid/MessagingServer/Main.cs
deleted file mode 100644
index f2631a7..0000000
--- a/OpenSim/Grid/MessagingServer/Main.cs
+++ /dev/null
@@ -1,293 +0,0 @@
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
28using System;
29using System.Collections.Generic;
30using System.IO;
31using System.Reflection;
32using log4net;
33using Nini.Config;
34using log4net.Config;
35using OpenSim.Framework;
36using OpenSim.Framework.Console;
37using OpenSim.Framework.Servers;
38using OpenSim.Framework.Servers.HttpServer;
39using OpenSim.Grid.Framework;
40using OpenSim.Grid.MessagingServer.Modules;
41
42namespace OpenSim.Grid.MessagingServer
43{
44 /// <summary>
45 /// </summary>
46 public class OpenMessage_Main : BaseOpenSimServer , IGridServiceCore
47 {
48 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
49
50 private MessageServerConfig Cfg;
51 private MessageService msgsvc;
52
53 private MessageRegionModule m_regionModule;
54 private InterMessageUserServerModule m_userServerModule;
55
56 private UserDataBaseService m_userDataBaseService;
57
58 // private UUID m_lastCreatedUser = UUID.Random();
59
60 protected static string m_consoleType = "local";
61 protected static IConfigSource m_config = null;
62 protected static string m_configFile = "MessagingServer_Config.xml";
63
64 public static void Main(string[] args)
65 {
66 ArgvConfigSource argvSource = new ArgvConfigSource(args);
67 argvSource.AddSwitch("Startup", "console", "c");
68 argvSource.AddSwitch("Startup", "xmlfile", "x");
69
70 IConfig startupConfig = argvSource.Configs["Startup"];
71 if (startupConfig != null)
72 {
73 m_consoleType = startupConfig.GetString("console", "local");
74 m_configFile = startupConfig.GetString("xmlfile", "MessagingServer_Config.xml");
75 }
76
77 m_config = argvSource;
78
79 XmlConfigurator.Configure();
80
81 m_log.Info("[SERVER]: Launching MessagingServer...");
82
83 OpenMessage_Main messageserver = new OpenMessage_Main();
84
85 messageserver.Startup();
86 messageserver.Work();
87 }
88
89 public OpenMessage_Main()
90 {
91 switch (m_consoleType)
92 {
93 case "rest":
94 m_console = new RemoteConsole("Messaging");
95 break;
96 case "basic":
97 m_console = new CommandConsole("Messaging");
98 break;
99 default:
100 m_console = new LocalConsole("Messaging");
101 break;
102 }
103 MainConsole.Instance = m_console;
104 }
105
106 private void Work()
107 {
108 m_console.Output("Enter help for a list of commands\n");
109
110 while (true)
111 {
112 m_console.Prompt();
113 }
114 }
115
116 private void registerWithUserServer()
117 {
118 if (m_userServerModule.registerWithUserServer())
119 {
120 if (m_httpServer == null)
121 {
122 m_log.Info("[SERVER]: Starting HTTP process");
123 m_httpServer = new BaseHttpServer(Cfg.HttpPort);
124
125 if (m_console is RemoteConsole)
126 {
127 RemoteConsole c = (RemoteConsole)m_console;
128 c.SetServer(m_httpServer);
129 IConfig netConfig = m_config.AddConfig("Network");
130 netConfig.Set("ConsoleUser", Cfg.ConsoleUser);
131 netConfig.Set("ConsolePass", Cfg.ConsolePass);
132 c.ReadConfig(m_config);
133 }
134
135 m_httpServer.AddXmlRPCHandler("login_to_simulator", msgsvc.UserLoggedOn);
136 m_httpServer.AddXmlRPCHandler("logout_of_simulator", msgsvc.UserLoggedOff);
137 m_httpServer.AddXmlRPCHandler("get_presence_info_bulk", msgsvc.GetPresenceInfoBulk);
138 m_httpServer.AddXmlRPCHandler("process_region_shutdown", msgsvc.ProcessRegionShutdown);
139 m_httpServer.AddXmlRPCHandler("agent_location", msgsvc.AgentLocation);
140 m_httpServer.AddXmlRPCHandler("agent_leaving", msgsvc.AgentLeaving);
141
142 m_httpServer.AddXmlRPCHandler("region_startup", m_regionModule.RegionStartup);
143 m_httpServer.AddXmlRPCHandler("region_shutdown", m_regionModule.RegionShutdown);
144
145 m_httpServer.Start();
146 }
147 m_log.Info("[SERVER]: Userserver registration was successful");
148 }
149 else
150 {
151 m_log.Error("[STARTUP]: Unable to connect to User Server");
152 }
153
154 }
155
156 private void deregisterFromUserServer()
157 {
158 m_userServerModule.deregisterWithUserServer();
159// if (m_httpServer != null)
160// {
161 // try a completely fresh registration, with fresh handlers, too
162// m_httpServer.Stop();
163// m_httpServer = null;
164// }
165 m_console.Output("[SERVER]: Deregistered from userserver.");
166 }
167
168 protected override void StartupSpecific()
169 {
170 Cfg = new MessageServerConfig("MESSAGING SERVER", (Path.Combine(Util.configDir(), m_configFile)));
171
172 m_userDataBaseService = new UserDataBaseService();
173 m_userDataBaseService.AddPlugin(Cfg.DatabaseProvider, Cfg.DatabaseConnect);
174
175 //Register the database access service so modules can fetch it
176 // RegisterInterface<UserDataBaseService>(m_userDataBaseService);
177
178 m_userServerModule = new InterMessageUserServerModule(Cfg, this);
179 m_userServerModule.Initialise();
180
181 msgsvc = new MessageService(Cfg, this, m_userDataBaseService);
182 msgsvc.Initialise();
183
184 m_regionModule = new MessageRegionModule(Cfg, this);
185 m_regionModule.Initialise();
186
187 registerWithUserServer();
188
189 m_userServerModule.PostInitialise();
190 msgsvc.PostInitialise();
191 m_regionModule.PostInitialise();
192
193 m_log.Info("[SERVER]: Messageserver 0.5 - Startup complete");
194
195 base.StartupSpecific();
196
197 m_console.Commands.AddCommand("messageserver", false, "clear cache",
198 "clear cache",
199 "Clear presence cache", HandleClearCache);
200
201 m_console.Commands.AddCommand("messageserver", false, "register",
202 "register",
203 "Re-register with user server(s)", HandleRegister);
204 }
205
206 public void do_create(string what)
207 {
208 //switch (what)
209 //{
210 // case "user":
211 // try
212 // {
213 // //userID =
214 // //m_userManager.AddUserProfile(tempfirstname, templastname, tempMD5Passwd, regX, regY);
215 // } catch (Exception ex)
216 // {
217 // m_console.Error("[SERVER]: Error creating user: {0}", ex.ToString());
218 // }
219
220 // try
221 // {
222 // //RestObjectPoster.BeginPostObject<Guid>(m_userManager._config.InventoryUrl + "CreateInventory/",
223 // //userID.Guid);
224 // }
225 // catch (Exception ex)
226 // {
227 // m_console.Error("[SERVER]: Error creating inventory for user: {0}", ex.ToString());
228 // }
229 // // m_lastCreatedUser = userID;
230 // break;
231 //}
232 }
233
234 private void HandleClearCache(string module, string[] cmd)
235 {
236 int entries = m_regionModule.ClearRegionCache();
237 m_console.Output("Region cache cleared! Cleared " +
238 entries.ToString() + " entries");
239 }
240
241 private void HandleRegister(string module, string[] cmd)
242 {
243 deregisterFromUserServer();
244 registerWithUserServer();
245 }
246
247 public override void ShutdownSpecific()
248 {
249 m_userServerModule.deregisterWithUserServer();
250 }
251
252 #region IUGAIMCore
253 protected Dictionary<Type, object> m_moduleInterfaces = new Dictionary<Type, object>();
254
255 /// <summary>
256 /// Register an Module interface.
257 /// </summary>
258 /// <typeparam name="T"></typeparam>
259 /// <param name="iface"></param>
260 public void RegisterInterface<T>(T iface)
261 {
262 lock (m_moduleInterfaces)
263 {
264 if (!m_moduleInterfaces.ContainsKey(typeof(T)))
265 {
266 m_moduleInterfaces.Add(typeof(T), iface);
267 }
268 }
269 }
270
271 public bool TryGet<T>(out T iface)
272 {
273 if (m_moduleInterfaces.ContainsKey(typeof(T)))
274 {
275 iface = (T)m_moduleInterfaces[typeof(T)];
276 return true;
277 }
278 iface = default(T);
279 return false;
280 }
281
282 public T Get<T>()
283 {
284 return (T)m_moduleInterfaces[typeof(T)];
285 }
286
287 public BaseHttpServer GetHttpServer()
288 {
289 return m_httpServer;
290 }
291 #endregion
292 }
293}