aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Grid/InventoryServer
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Grid/InventoryServer')
-rw-r--r--OpenSim/Grid/InventoryServer/GridInventoryService.cs104
-rw-r--r--OpenSim/Grid/InventoryServer/Main.cs34
2 files changed, 134 insertions, 4 deletions
diff --git a/OpenSim/Grid/InventoryServer/GridInventoryService.cs b/OpenSim/Grid/InventoryServer/GridInventoryService.cs
new file mode 100644
index 0000000..dda2f61
--- /dev/null
+++ b/OpenSim/Grid/InventoryServer/GridInventoryService.cs
@@ -0,0 +1,104 @@
1using System;
2using System.Collections.Generic;
3using System.Text;
4using OpenSim.Framework;
5using OpenSim.Framework.Communications;
6using libsecondlife;
7
8namespace OpenSim.Grid.InventoryServer
9{
10 public class GridInventoryService : InventoryServiceBase
11 {
12 public override void RequestInventoryForUser(LLUUID userID, InventoryFolderInfo folderCallBack,
13 InventoryItemInfo itemCallBack)
14 {
15
16 }
17
18 private bool TryGetUsersInventory(LLUUID userID, out List<InventoryFolderBase> folderList, out List<InventoryItemBase> itemsList)
19 {
20 List<InventoryFolderBase> folders = RequestFirstLevelFolders(userID);
21 List<InventoryItemBase> allItems = new List<InventoryItemBase>();
22
23 if (folders != null)
24 {
25 foreach (InventoryFolderBase folder in folders)
26 {
27 if (folder.parentID != LLUUID.Zero)
28 {
29 List<InventoryItemBase> items = RequestFolderItems(folder.folderID);
30 if (items != null)
31 {
32 allItems.InsertRange(0, items);
33 }
34 }
35 }
36 }
37
38 folderList = folders;
39 itemsList = allItems;
40 if (folderList != null)
41 {
42 return true;
43 }
44 else
45 {
46 return false;
47 }
48 }
49
50 public InventoryCollection GetUserInventory(LLUUID userID)
51 {
52 InventoryCollection invCollection = new InventoryCollection();
53 List<InventoryFolderBase> folders;
54 List<InventoryItemBase> allItems;
55 if (TryGetUsersInventory(userID, out folders, out allItems))
56 {
57 invCollection.AllItems = allItems;
58 invCollection.Folders = folders;
59 invCollection.UserID = userID;
60 }
61 return invCollection;
62 }
63
64 public bool CreateUsersInventory(LLUUID user)
65 {
66 CreateNewUserInventory(user);
67 return true;
68 }
69
70
71 public override void AddNewInventoryFolder(LLUUID userID, InventoryFolderBase folder)
72 {
73 AddFolder(folder);
74 }
75
76 public override void AddNewInventoryItem(LLUUID userID, InventoryItemBase item)
77 {
78 AddItem(item);
79 }
80
81 public bool AddInventoryFolder( InventoryFolderBase folder)
82 {
83 AddNewInventoryFolder(folder.agentID, folder);
84 return true;
85 }
86
87 public bool AddInventoryItem( InventoryItemBase item)
88 {
89 AddNewInventoryItem(item.avatarID, item);
90 return true;
91 }
92
93 public override void DeleteInventoryItem(LLUUID userID, InventoryItemBase item)
94 {
95 DeleteItem(item);
96 }
97
98 public bool DeleteInvItem( InventoryItemBase item)
99 {
100 DeleteInventoryItem(item.avatarID, item);
101 return true;
102 }
103 }
104}
diff --git a/OpenSim/Grid/InventoryServer/Main.cs b/OpenSim/Grid/InventoryServer/Main.cs
index 1bc396b..8d232c2 100644
--- a/OpenSim/Grid/InventoryServer/Main.cs
+++ b/OpenSim/Grid/InventoryServer/Main.cs
@@ -47,6 +47,7 @@ namespace OpenSim.Grid.InventoryServer
47 LogBase m_console; 47 LogBase m_console;
48 InventoryManager m_inventoryManager; 48 InventoryManager m_inventoryManager;
49 InventoryConfig m_config; 49 InventoryConfig m_config;
50 GridInventoryService m_inventoryService;
50 51
51 public const string LogName = "INVENTORY"; 52 public const string LogName = "INVENTORY";
52 53
@@ -69,13 +70,35 @@ namespace OpenSim.Grid.InventoryServer
69 { 70 {
70 MainLog.Instance.Notice("Initialising inventory manager..."); 71 MainLog.Instance.Notice("Initialising inventory manager...");
71 m_config = new InventoryConfig(LogName, (Path.Combine(Util.configDir(), "InventoryServer_Config.xml"))); 72 m_config = new InventoryConfig(LogName, (Path.Combine(Util.configDir(), "InventoryServer_Config.xml")));
72 73
73 m_inventoryManager = new InventoryManager(); 74 m_inventoryService = new GridInventoryService();
74 m_inventoryManager.AddDatabasePlugin(m_config.DatabaseProvider); 75 // m_inventoryManager = new InventoryManager();
76 m_inventoryService.AddPlugin(m_config.DatabaseProvider);
77
75 MainLog.Instance.Notice(LogName, "Starting HTTP server ..."); 78 MainLog.Instance.Notice(LogName, "Starting HTTP server ...");
76 BaseHttpServer httpServer = new BaseHttpServer(m_config.HttpPort); 79 BaseHttpServer httpServer = new BaseHttpServer(m_config.HttpPort);
80 httpServer.AddStreamHandler(
81 new RestDeserialisehandler<LLUUID, InventoryCollection>("POST", "/GetInventory/",
82 m_inventoryService.GetUserInventory));
83 httpServer.AddStreamHandler(
84 new RestDeserialisehandler<LLUUID, bool>("POST", "/CreateInventory/",
85 m_inventoryService.CreateUsersInventory));
86 httpServer.AddStreamHandler(
87 new RestDeserialisehandler<InventoryFolderBase, bool>("POST", "/NewFolder/",
88 m_inventoryService.AddInventoryFolder));
89
90 httpServer.AddStreamHandler(
91 new RestDeserialisehandler<InventoryItemBase, bool>("POST", "/NewItem/",
92 m_inventoryService.AddInventoryItem));
93 httpServer.AddStreamHandler(
94 new RestDeserialisehandler<InventoryItemBase, bool>("POST", "/DeleteItem/",
95 m_inventoryService.DeleteInvItem));
77 96
78 httpServer.AddStreamHandler(new InventoryManager.GetInventory(m_inventoryManager)); 97 httpServer.AddStreamHandler(
98 new RestDeserialisehandler<LLUUID, List<InventoryFolderBase>>("POST", "/RootFolders/",
99 m_inventoryService.RequestFirstLevelFolders));
100
101 // httpServer.AddStreamHandler(new InventoryManager.GetInventory(m_inventoryManager));
79 102
80 httpServer.Start(); 103 httpServer.Start();
81 MainLog.Instance.Notice(LogName, "Started HTTP server"); 104 MainLog.Instance.Notice(LogName, "Started HTTP server");
@@ -96,6 +119,9 @@ namespace OpenSim.Grid.InventoryServer
96 switch (cmd) 119 switch (cmd)
97 { 120 {
98 case "quit": 121 case "quit":
122 case "add-user":
123 m_inventoryService.CreateUsersInventory(LLUUID.Random());
124 break;
99 case "shutdown": 125 case "shutdown":
100 m_console.Close(); 126 m_console.Close();
101 Environment.Exit(0); 127 Environment.Exit(0);