Add the XInventoryServicesConnector, a new inventory connector without the cruft

of the old one that makes inventory crash on folder creation. This is just
the connector part, the handler is still ont he todo list.
mysql-performance
Melanie 2010-01-05 04:22:03 +00:00
parent be41ba6670
commit aca01f5415
2 changed files with 187 additions and 15 deletions

View File

@ -108,14 +108,14 @@ namespace OpenSim.Server.Handlers.Presence
out info.RegionID)) out info.RegionID))
return FailureResult(); return FailureResult();
foreach (KeyValuePair<string, string> kvp in request) foreach (KeyValuePair<string, object> kvp in request)
{ {
if (kvp.Key == "METHOD" || if (kvp.Key == "METHOD" ||
kvp.Key == "PrincipalID" || kvp.Key == "PrincipalID" ||
kvp.Key == "RegionID") kvp.Key == "RegionID")
continue; continue;
info.Data[kvp.Key] = kvp.Value; info.Data[kvp.Key] = kvp.Value.ToString();
} }
if (m_PresenceService.Report(info)) if (m_PresenceService.Report(info))

View File

@ -96,19 +96,55 @@ namespace OpenSim.Services.Connectors
return bool.Parse(ret["RESULT"].ToString()); return bool.Parse(ret["RESULT"].ToString());
} }
public List<InventoryFolderBase> GetInventorySkeleton(UUID userId) public List<InventoryFolderBase> GetInventorySkeleton(UUID principalID)
{ {
return null; Dictionary<string,object> ret = MakeRequest("GETINVENTORYSKELETON",
new Dictionary<string,object> {
{ "PRINCIPAL", principalID.ToString() }
});
if (ret == null)
return null;
List<InventoryFolderBase> folders = new List<InventoryFolderBase>();
foreach (Object o in ret.Values)
folders.Add(BuildFolder((Dictionary<string,object>)o));
return folders;
} }
public InventoryFolderBase GetRootFolder(UUID principalID) public InventoryFolderBase GetRootFolder(UUID principalID)
{ {
return null; Dictionary<string,object> ret = MakeRequest("GETROOTFOLDER",
new Dictionary<string,object> {
{ "PRINCIPAL", principalID.ToString() }
});
if (ret == null)
return null;
if (ret.Count == 0)
return null;
return BuildFolder(ret);
} }
public InventoryFolderBase GetFolderForType(UUID principalID, AssetType type) public InventoryFolderBase GetFolderForType(UUID principalID, AssetType type)
{ {
return null; Dictionary<string,object> ret = MakeRequest("GETFOLDERFORTYPE",
new Dictionary<string,object> {
{ "PRINCIPAL", principalID.ToString() },
{ "TYPE", ((int)type).ToString() }
});
if (ret == null)
return null;
if (ret.Count == 0)
return null;
return BuildFolder(ret);
} }
public InventoryCollection GetFolderContent(UUID principalID, UUID folderID) public InventoryCollection GetFolderContent(UUID principalID, UUID folderID)
@ -205,8 +241,28 @@ namespace OpenSim.Services.Connectors
public bool AddItem(InventoryItemBase item) public bool AddItem(InventoryItemBase item)
{ {
Dictionary<string,object> ret = MakeRequest("CREATEUSERINVENTORY", Dictionary<string,object> ret = MakeRequest("ADDITEM",
new Dictionary<string,object> { new Dictionary<string,object> {
{ "AssetID", item.AssetID.ToString() },
{ "AssetType", item.AssetType.ToString() },
{ "Name", item.Name.ToString() },
{ "Owner", item.Owner.ToString() },
{ "ID", item.ID.ToString() },
{ "InvType", item.InvType.ToString() },
{ "Folder", item.Folder.ToString() },
{ "CreatorId", item.CreatorId.ToString() },
{ "Description", item.Description.ToString() },
{ "NextPermissions", item.NextPermissions.ToString() },
{ "CurrentPermissions", item.CurrentPermissions.ToString() },
{ "BasePermissions", item.BasePermissions.ToString() },
{ "EveryOnePermissions", item.EveryOnePermissions.ToString() },
{ "GroupPermissions", item.GroupPermissions.ToString() },
{ "GroupID", item.GroupID.ToString() },
{ "GroupOwned", item.GroupOwned.ToString() },
{ "SalePrice", item.SalePrice.ToString() },
{ "SaleType", item.SaleType.ToString() },
{ "Flags", item.Flags.ToString() },
{ "CreationDate", item.CreationDate.ToString() }
}); });
if (ret == null) if (ret == null)
@ -217,8 +273,28 @@ namespace OpenSim.Services.Connectors
public bool UpdateItem(InventoryItemBase item) public bool UpdateItem(InventoryItemBase item)
{ {
Dictionary<string,object> ret = MakeRequest("CREATEUSERINVENTORY", Dictionary<string,object> ret = MakeRequest("UPDATEITEM",
new Dictionary<string,object> { new Dictionary<string,object> {
{ "AssetID", item.AssetID.ToString() },
{ "AssetType", item.AssetType.ToString() },
{ "Name", item.Name.ToString() },
{ "Owner", item.Owner.ToString() },
{ "ID", item.ID.ToString() },
{ "InvType", item.InvType.ToString() },
{ "Folder", item.Folder.ToString() },
{ "CreatorId", item.CreatorId.ToString() },
{ "Description", item.Description.ToString() },
{ "NextPermissions", item.NextPermissions.ToString() },
{ "CurrentPermissions", item.CurrentPermissions.ToString() },
{ "BasePermissions", item.BasePermissions.ToString() },
{ "EveryOnePermissions", item.EveryOnePermissions.ToString() },
{ "GroupPermissions", item.GroupPermissions.ToString() },
{ "GroupID", item.GroupID.ToString() },
{ "GroupOwned", item.GroupOwned.ToString() },
{ "SalePrice", item.SalePrice.ToString() },
{ "SaleType", item.SaleType.ToString() },
{ "Flags", item.Flags.ToString() },
{ "CreationDate", item.CreationDate.ToString() }
}); });
if (ret == null) if (ret == null)
@ -227,9 +303,28 @@ namespace OpenSim.Services.Connectors
return bool.Parse(ret["RESULT"].ToString()); return bool.Parse(ret["RESULT"].ToString());
} }
public bool MoveItems(UUID ownerID, List<InventoryItemBase> items) public bool MoveItems(UUID principalID, List<InventoryItemBase> items)
{ {
return false; List<string> idlist = new List<string>();
List<string> destlist = new List<string>();
foreach (InventoryItemBase item in items)
{
idlist.Add(item.ID.ToString());
destlist.Add(item.Folder.ToString());
}
Dictionary<string,object> ret = MakeRequest("MOVEITEMS",
new Dictionary<string,object> {
{ "PrincipalID", principalID.ToString() },
{ "IDLIST", idlist },
{ "DESTLIST", destlist }
});
if (ret == null)
return false;
return bool.Parse(ret["RESULT"].ToString());
} }
public bool DeleteItems(UUID principalID, List<UUID> itemIDs) public bool DeleteItems(UUID principalID, List<UUID> itemIDs)
@ -253,17 +348,52 @@ namespace OpenSim.Services.Connectors
public InventoryItemBase GetItem(InventoryItemBase item) public InventoryItemBase GetItem(InventoryItemBase item)
{ {
return null; Dictionary<string,object> ret = MakeRequest("GETITEM",
new Dictionary<string,object> {
{ "ID", item.ID.ToString() }
});
if (ret == null)
return null;
if (ret.Count == 0)
return null;
return BuildItem(ret);
} }
public InventoryFolderBase GetFolder(InventoryFolderBase folder) public InventoryFolderBase GetFolder(InventoryFolderBase folder)
{ {
return null; Dictionary<string,object> ret = MakeRequest("GETFOLDER",
new Dictionary<string,object> {
{ "ID", folder.ID.ToString() }
});
if (ret == null)
return null;
if (ret.Count == 0)
return null;
return BuildFolder(ret);
} }
public List<InventoryItemBase> GetActiveGestures(UUID userId) public List<InventoryItemBase> GetActiveGestures(UUID principalID)
{ {
return null; Dictionary<string,object> ret = MakeRequest("GETACTIVEGESTURES",
new Dictionary<string,object> {
{ "PRINCIPAL", principalID.ToString() }
});
if (ret == null)
return null;
List<InventoryItemBase> items = new List<InventoryItemBase>();
foreach (Object o in ret.Values)
items.Add(BuildItem((Dictionary<string,object>)o));
return items;
} }
public int GetAssetPermissions(UUID principalID, UUID assetID) public int GetAssetPermissions(UUID principalID, UUID assetID)
@ -275,7 +405,7 @@ namespace OpenSim.Services.Connectors
}); });
if (ret == null) if (ret == null)
return false; return 0;
return int.Parse(ret["RESULT"].ToString()); return int.Parse(ret["RESULT"].ToString());
} }
@ -313,5 +443,47 @@ namespace OpenSim.Services.Connectors
return replyData; return replyData;
} }
InventoryFolderBase BuildFolder(Dictionary<string,object> data)
{
InventoryFolderBase folder = new InventoryFolderBase();
folder.ParentID = new UUID(data["ParentID"].ToString());
folder.Type = short.Parse(data["Type"].ToString());
folder.Version = ushort.Parse(data["Version"].ToString());
folder.Name = data["Name"].ToString();
folder.Owner = new UUID(data["Owner"].ToString());
folder.ID = new UUID(data["ID"].ToString());
return folder;
}
InventoryItemBase BuildItem(Dictionary<string,object> data)
{
InventoryItemBase item = new InventoryItemBase();
item.AssetID = new UUID(data["AssetID"].ToString());
item.AssetType = int.Parse(data["AssetType"].ToString());
item.Name = data["Name"].ToString();
item.Owner = new UUID(data["Owner"].ToString());
item.ID = new UUID(data["ID"].ToString());
item.InvType = int.Parse(data["InvType"].ToString());
item.Folder = new UUID(data["Folder"].ToString());
item.CreatorId = data["CreatorId"].ToString();
item.Description = data["Description"].ToString();
item.NextPermissions = uint.Parse(data["NextPermissions"].ToString());
item.CurrentPermissions = uint.Parse(data["CurrentPermissions"].ToString());
item.BasePermissions = uint.Parse(data["BasePermissions"].ToString());
item.EveryOnePermissions = uint.Parse(data["EveryOnePermissions"].ToString());
item.GroupPermissions = uint.Parse(data["GroupPermissions"].ToString());
item.GroupID = new UUID(data["GroupID"].ToString());
item.GroupOwned = bool.Parse(data["GroupOwned"].ToString());
item.SalePrice = int.Parse(data["SalePrice"].ToString());
item.SaleType = byte.Parse(data["SaleType"].ToString());
item.Flags = uint.Parse(data["Flags"].ToString());
item.CreationDate = int.Parse(data["CreationDate"].ToString());
return item;
}
} }
} }