From 8143c597fc5f62ec0d931d2d5b887730e06aec04 Mon Sep 17 00:00:00 2001 From: lbsa71 Date: Thu, 27 Sep 2007 13:25:45 +0000 Subject: * Tleiades grid mode inventory (#444) - thanx Tleiades! * updated to rev 1413 on libsecondlife.dll and libsecondlife.dll.config (#423) --- OpenSim/Grid/InventoryServer/Main.cs | 113 ++++++++++++++++++++++++++++++----- 1 file changed, 97 insertions(+), 16 deletions(-) (limited to 'OpenSim/Grid/InventoryServer/Main.cs') diff --git a/OpenSim/Grid/InventoryServer/Main.cs b/OpenSim/Grid/InventoryServer/Main.cs index 97addb0..392c741 100644 --- a/OpenSim/Grid/InventoryServer/Main.cs +++ b/OpenSim/Grid/InventoryServer/Main.cs @@ -31,49 +31,130 @@ using System.Collections.Generic; using System.Reflection; using System.IO; using System.Text; +using System.Xml; + using libsecondlife; -using OpenSim.Framework.User; -using OpenSim.Framework.Sims; -using OpenSim.Framework.Inventory; using OpenSim.Framework.Interfaces; using OpenSim.Framework.Console; -using OpenSim.Servers; using OpenSim.Framework.Utilities; +using OpenSim.Framework.Configuration; +using OpenSim.Framework.Data; +using InventoryCategory = OpenSim.Framework.Data.InventoryCategory; -namespace OpenGridServices.InventoryServer +namespace OpenSim.Grid.InventoryServer { - public class OpenInventory_Main : BaseServer, conscmd_callback + + public class OpenInventory_Main : conscmd_callback { - ConsoleBase m_console; - InventoryManager m_inventoryManager; + public const string MainLogName = "INVENTORY"; + + private InventoryConfig m_config; + LogBase m_console; + InventoryManager m_inventoryManager; ///connection the database backend + InventoryService m_inventoryService; ///Remoting interface, where messages arrive + [STAThread] public static void Main(string[] args) { + Console.WriteLine("Launching InventoryServer..."); + + OpenInventory_Main inventoryServer = new OpenInventory_Main(); + + inventoryServer.Startup(); + +// inventoryServer.RunCmd("load", new string[] { "library", "inventory_library.xml" }); +// inventoryServer.RunCmd("load", new string[] { "default", "inventory_default.xml" }); + + inventoryServer.Work(); } public OpenInventory_Main() { - m_console = new ConsoleBase("opengrid-inventory-console.log", "OpenInventory", this, false); - MainConsole.Instance = m_console; + + if (!Directory.Exists(Util.logDir())) + { + Directory.CreateDirectory(Util.logDir()); + } + + m_console = new LogBase(Path.Combine(Util.logDir(), "opensim-inventory-console.log"), "OpenInventory", this, false); + MainLog.Instance = m_console; + } + + private void Work() + { + m_console.Notice(OpenInventory_Main.MainLogName, "Enter help for a list of commands\n"); + + while (true) + { + m_console.MainLogPrompt(); + } } public void Startup() { - MainConsole.Instance.Notice("Initialising inventory manager..."); + MainLog.Instance.Verbose(OpenInventory_Main.MainLogName, "Initialising inventory manager..."); + + m_config = new InventoryConfig(OpenInventory_Main.MainLogName, (Path.Combine(Util.configDir(), "InventoryServer_Config.xml"))); + + // instantiate the manager, responsible for doing the actual storage m_inventoryManager = new InventoryManager(); + m_inventoryManager.AddDatabasePlugin(m_config.DatabaseProvider); + + m_inventoryService = new InventoryService(m_inventoryManager, m_config); - MainConsole.Instance.Notice("Starting HTTP server"); - BaseHttpServer httpServer = new BaseHttpServer(8004); + // Dig out the embedded version number of this assembly + Assembly assembly = Assembly.GetExecutingAssembly(); + string serverExeName = assembly.ManifestModule.Name; + Version serverExeVersion = AssemblyName.GetAssemblyName(serverExeName).Version; - httpServer.AddXmlRPCHandler("rootfolders", m_inventoryManager.XmlRpcInventoryRequest); - //httpServer.AddRestHandler("GET","/rootfolders/",Rest + m_console.Status(OpenInventory_Main.MainLogName, "Inventoryserver {0}.{1}.{2}.{3} - Startup complete", serverExeVersion.Major, serverExeVersion.Minor, serverExeVersion.Revision, serverExeVersion.Build); } - public void RunCmd(string cmd, string[] cmdparams) + + public void Load(string[] cmdparams) { + string cmd = cmdparams[0]; + string fileName = cmdparams[1]; + + if (cmdparams.Length != 2) + { + cmd = "help"; + } + switch (cmd) { + case "library": + InventoryServiceSingleton.Instance.loadInventoryFromXmlFile(InventoryCategory.Library, fileName); + break; + case "default": + InventoryServiceSingleton.Instance.loadInventoryFromXmlFile(InventoryCategory.Default, fileName); + break; + case "user": + InventoryServiceSingleton.Instance.loadInventoryFromXmlFile(InventoryCategory.User, fileName); + break; + case "help": + m_console.Notice("load library , load library inventory, shared between all users"); + m_console.Notice("load default , load template inventory, used when creating a new user inventory"); + m_console.Notice("load user , load inventory for a specific users, warning this will reset the contents of the inventory"); + break; + } + } + + public void RunCmd(string cmd, string[] cmdparams) + { + switch (cmd) + { + case "help": + m_console.Notice("load - load verious inventories, use \"load help\", to see a list of commands"); + m_console.Notice("shutdown - shutdown the grid (USE CAUTION!)"); + m_console.Notice("quit - shutdown the grid (USE CAUTION!)"); + break; + case "load": + Load(cmdparams); + break; + case "quit": case "shutdown": + MainLog.Instance.Verbose(OpenInventory_Main.MainLogName, "Shutting down inventory server"); m_console.Close(); Environment.Exit(0); break; -- cgit v1.1