Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim
commit
4fbdc538c7
|
@ -1294,14 +1294,7 @@ namespace OpenSim
|
|||
{
|
||||
try
|
||||
{
|
||||
if (cmdparams.Length > 2)
|
||||
{
|
||||
m_sceneManager.LoadArchiveToCurrentScene(cmdparams[2]);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_sceneManager.LoadArchiveToCurrentScene(DEFAULT_OAR_BACKUP_FILENAME);
|
||||
}
|
||||
m_sceneManager.LoadArchiveToCurrentScene(cmdparams);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
@ -1315,14 +1308,7 @@ namespace OpenSim
|
|||
/// <param name="cmdparams"></param>
|
||||
protected void SaveOar(string module, string[] cmdparams)
|
||||
{
|
||||
if (cmdparams.Length > 2)
|
||||
{
|
||||
m_sceneManager.SaveCurrentSceneToArchive(cmdparams[2]);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_sceneManager.SaveCurrentSceneToArchive(DEFAULT_OAR_BACKUP_FILENAME);
|
||||
}
|
||||
m_sceneManager.SaveCurrentSceneToArchive(cmdparams);
|
||||
}
|
||||
|
||||
private static string CombineParams(string[] commandParams, int pos)
|
||||
|
|
|
@ -75,11 +75,6 @@ namespace OpenSim
|
|||
/// </value>
|
||||
protected const string DEFAULT_PRIM_BACKUP_FILENAME = "prim-backup.xml";
|
||||
|
||||
/// <value>
|
||||
/// The file used to load and save an opensimulator archive if no filename has been specified
|
||||
/// </value>
|
||||
protected const string DEFAULT_OAR_BACKUP_FILENAME = "region.oar";
|
||||
|
||||
public ConfigSettings ConfigurationSettings
|
||||
{
|
||||
get { return m_configSettings; }
|
||||
|
|
|
@ -8130,8 +8130,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
//lsrp.RequestData.RequestFlags;
|
||||
//lsrp.RequestData.Filter;
|
||||
|
||||
return true;
|
||||
// return true;
|
||||
}
|
||||
|
||||
private bool HandleRequestRegionInfo(IClientAPI sender, Packet Pack)
|
||||
{
|
||||
RequestRegionInfoPacket.AgentDataBlock mPacket = ((RequestRegionInfoPacket)Pack).AgentData;
|
||||
|
@ -8152,6 +8153,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool HandleEstateCovenantRequest(IClientAPI sender, Packet Pack)
|
||||
{
|
||||
|
||||
|
|
|
@ -121,45 +121,51 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
|
|||
|
||||
byte[] data;
|
||||
TarArchiveReader.TarEntryType entryType;
|
||||
while ((data = archive.ReadEntry(out filePath, out entryType)) != null)
|
||||
|
||||
try
|
||||
{
|
||||
if (filePath.StartsWith(ArchiveConstants.ASSETS_PATH))
|
||||
while ((data = archive.ReadEntry(out filePath, out entryType)) != null)
|
||||
{
|
||||
if (LoadAsset(filePath, data))
|
||||
successfulAssetRestores++;
|
||||
else
|
||||
failedAssetRestores++;
|
||||
|
||||
if ((successfulAssetRestores) % 50 == 0)
|
||||
m_log.DebugFormat(
|
||||
"[INVENTORY ARCHIVER]: Loaded {0} assets...",
|
||||
successfulAssetRestores);
|
||||
}
|
||||
else if (filePath.StartsWith(ArchiveConstants.INVENTORY_PATH))
|
||||
{
|
||||
InventoryFolderBase foundFolder
|
||||
= ReplicateArchivePathToUserInventory(
|
||||
filePath, TarArchiveReader.TarEntryType.TYPE_DIRECTORY == entryType,
|
||||
rootDestinationFolder, foldersCreated, nodesLoaded);
|
||||
|
||||
if (TarArchiveReader.TarEntryType.TYPE_DIRECTORY != entryType)
|
||||
if (filePath.StartsWith(ArchiveConstants.ASSETS_PATH))
|
||||
{
|
||||
InventoryItemBase item = LoadItem(data, foundFolder);
|
||||
if (LoadAsset(filePath, data))
|
||||
successfulAssetRestores++;
|
||||
else
|
||||
failedAssetRestores++;
|
||||
|
||||
if (item != null)
|
||||
if ((successfulAssetRestores) % 50 == 0)
|
||||
m_log.DebugFormat(
|
||||
"[INVENTORY ARCHIVER]: Loaded {0} assets...",
|
||||
successfulAssetRestores);
|
||||
}
|
||||
else if (filePath.StartsWith(ArchiveConstants.INVENTORY_PATH))
|
||||
{
|
||||
InventoryFolderBase foundFolder
|
||||
= ReplicateArchivePathToUserInventory(
|
||||
filePath, TarArchiveReader.TarEntryType.TYPE_DIRECTORY == entryType,
|
||||
rootDestinationFolder, foldersCreated, nodesLoaded);
|
||||
|
||||
if (TarArchiveReader.TarEntryType.TYPE_DIRECTORY != entryType)
|
||||
{
|
||||
successfulItemRestores++;
|
||||
InventoryItemBase item = LoadItem(data, foundFolder);
|
||||
|
||||
// If we're loading an item directly into the given destination folder then we need to record
|
||||
// it separately from any loaded root folders
|
||||
if (rootDestinationFolder == foundFolder)
|
||||
nodesLoaded.Add(item);
|
||||
if (item != null)
|
||||
{
|
||||
successfulItemRestores++;
|
||||
|
||||
// If we're loading an item directly into the given destination folder then we need to record
|
||||
// it separately from any loaded root folders
|
||||
if (rootDestinationFolder == foundFolder)
|
||||
nodesLoaded.Add(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
archive.Close();
|
||||
finally
|
||||
{
|
||||
archive.Close();
|
||||
}
|
||||
|
||||
m_log.DebugFormat(
|
||||
"[INVENTORY ARCHIVER]: Successfully loaded {0} assets with {1} failures",
|
||||
|
|
|
@ -118,18 +118,18 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
|
|||
|
||||
protected void ReceivedAllAssets(ICollection<UUID> assetsFoundUuids, ICollection<UUID> assetsNotFoundUuids)
|
||||
{
|
||||
// We're almost done. Just need to write out the control file now
|
||||
m_archiveWriter.WriteFile(ArchiveConstants.CONTROL_FILE_PATH, Create0p1ControlFile());
|
||||
m_log.InfoFormat("[ARCHIVER]: Added control file to archive.");
|
||||
|
||||
Exception reportedException = null;
|
||||
bool succeeded = true;
|
||||
|
||||
try
|
||||
{
|
||||
// We're almost done. Just need to write out the control file now
|
||||
m_archiveWriter.WriteFile(ArchiveConstants.CONTROL_FILE_PATH, Create0p1ControlFile());
|
||||
m_log.InfoFormat("[ARCHIVER]: Added control file to archive.");
|
||||
|
||||
m_archiveWriter.Close();
|
||||
}
|
||||
catch (IOException e)
|
||||
catch (Exception e)
|
||||
{
|
||||
m_saveStream.Close();
|
||||
reportedException = e;
|
||||
|
@ -261,29 +261,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
|
|||
//inventoryItem = m_userInfo.RootFolder.FindItemByPath(m_invPath);
|
||||
}
|
||||
|
||||
m_archiveWriter = new TarArchiveWriter(m_saveStream);
|
||||
|
||||
if (inventoryFolder != null)
|
||||
{
|
||||
m_log.DebugFormat(
|
||||
"[INVENTORY ARCHIVER]: Found folder {0} {1} at {2}",
|
||||
inventoryFolder.Name, inventoryFolder.ID, m_invPath);
|
||||
|
||||
//recurse through all dirs getting dirs and files
|
||||
SaveInvFolder(inventoryFolder, ArchiveConstants.INVENTORY_PATH, !foundStar);
|
||||
}
|
||||
else if (inventoryItem != null)
|
||||
{
|
||||
m_log.DebugFormat(
|
||||
"[INVENTORY ARCHIVER]: Found item {0} {1} at {2}",
|
||||
inventoryItem.Name, inventoryItem.ID, m_invPath);
|
||||
|
||||
SaveInvItem(inventoryItem, ArchiveConstants.INVENTORY_PATH);
|
||||
}
|
||||
else
|
||||
if (null == inventoryFolder && null == inventoryItem)
|
||||
{
|
||||
// We couldn't find the path indicated
|
||||
m_saveStream.Close();
|
||||
string errorMessage = string.Format("Aborted save. Could not find inventory path {0}", m_invPath);
|
||||
m_log.ErrorFormat("[INVENTORY ARCHIVER]: {0}", errorMessage);
|
||||
m_module.TriggerInventoryArchiveSaved(
|
||||
|
@ -292,8 +272,36 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
|
|||
return;
|
||||
}
|
||||
|
||||
// Don't put all this profile information into the archive right now.
|
||||
//SaveUsers();
|
||||
m_archiveWriter = new TarArchiveWriter(m_saveStream);
|
||||
|
||||
try
|
||||
{
|
||||
if (inventoryFolder != null)
|
||||
{
|
||||
m_log.DebugFormat(
|
||||
"[INVENTORY ARCHIVER]: Found folder {0} {1} at {2}",
|
||||
inventoryFolder.Name, inventoryFolder.ID, m_invPath);
|
||||
|
||||
//recurse through all dirs getting dirs and files
|
||||
SaveInvFolder(inventoryFolder, ArchiveConstants.INVENTORY_PATH, !foundStar);
|
||||
}
|
||||
else if (inventoryItem != null)
|
||||
{
|
||||
m_log.DebugFormat(
|
||||
"[INVENTORY ARCHIVER]: Found item {0} {1} at {2}",
|
||||
inventoryItem.Name, inventoryItem.ID, m_invPath);
|
||||
|
||||
SaveInvItem(inventoryItem, ArchiveConstants.INVENTORY_PATH);
|
||||
}
|
||||
|
||||
// Don't put all this profile information into the archive right now.
|
||||
//SaveUsers();
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
m_archiveWriter.Close();
|
||||
throw;
|
||||
}
|
||||
|
||||
new AssetsRequest(
|
||||
new AssetsArchiver(m_archiveWriter), m_assetUuids.Keys,
|
||||
|
|
|
@ -92,12 +92,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
|
|||
scene.AddCommand(
|
||||
this, "load iar",
|
||||
"load iar <first> <last> <inventory path> <password> [<archive path>]",
|
||||
"Load user inventory archive. EXPERIMENTAL", HandleLoadInvConsoleCommand);
|
||||
"Load user inventory archive.", HandleLoadInvConsoleCommand);
|
||||
|
||||
scene.AddCommand(
|
||||
this, "save iar",
|
||||
"save iar <first> <last> <inventory path> <password> [<archive path>]",
|
||||
"Save user inventory archive. EXPERIMENTAL", HandleSaveInvConsoleCommand);
|
||||
"Save user inventory archive.", HandleSaveInvConsoleCommand);
|
||||
|
||||
m_aScene = scene;
|
||||
}
|
||||
|
|
|
@ -104,13 +104,12 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
|||
List<string> serialisedParcels = new List<string>();
|
||||
string filePath = "NONE";
|
||||
|
||||
TarArchiveReader archive = new TarArchiveReader(m_loadStream);
|
||||
byte[] data;
|
||||
TarArchiveReader.TarEntryType entryType;
|
||||
|
||||
try
|
||||
{
|
||||
TarArchiveReader archive = new TarArchiveReader(m_loadStream);
|
||||
|
||||
byte[] data;
|
||||
TarArchiveReader.TarEntryType entryType;
|
||||
|
||||
while ((data = archive.ReadEntry(out filePath, out entryType)) != null)
|
||||
{
|
||||
//m_log.DebugFormat(
|
||||
|
@ -152,8 +151,6 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
|||
}
|
||||
|
||||
//m_log.Debug("[ARCHIVER]: Reached end of archive");
|
||||
|
||||
archive.Close();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
@ -163,6 +160,10 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
|||
m_scene.EventManager.TriggerOarFileLoaded(m_requestId, m_errorMessage);
|
||||
return;
|
||||
}
|
||||
finally
|
||||
{
|
||||
archive.Close();
|
||||
}
|
||||
|
||||
m_log.InfoFormat("[ARCHIVER]: Restored {0} assets", successfulAssetRestores);
|
||||
|
||||
|
|
|
@ -79,6 +79,22 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
|||
|
||||
protected internal void ReceivedAllAssets(
|
||||
ICollection<UUID> assetsFoundUuids, ICollection<UUID> assetsNotFoundUuids)
|
||||
{
|
||||
try
|
||||
{
|
||||
Save(assetsFoundUuids, assetsNotFoundUuids);
|
||||
}
|
||||
finally
|
||||
{
|
||||
m_archiveWriter.Close();
|
||||
}
|
||||
|
||||
m_log.InfoFormat("[ARCHIVER]: Finished writing out OAR for {0}", m_scene.RegionInfo.RegionName);
|
||||
|
||||
m_scene.EventManager.TriggerOarFileSaved(m_requestId, String.Empty);
|
||||
}
|
||||
|
||||
protected internal void Save(ICollection<UUID> assetsFoundUuids, ICollection<UUID> assetsNotFoundUuids)
|
||||
{
|
||||
foreach (UUID uuid in assetsNotFoundUuids)
|
||||
{
|
||||
|
@ -143,12 +159,6 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
|||
}
|
||||
|
||||
m_log.InfoFormat("[ARCHIVER]: Added scene objects to archive.");
|
||||
|
||||
m_archiveWriter.Close();
|
||||
|
||||
m_log.InfoFormat("[ARCHIVER]: Finished writing out OAR for {0}", m_scene.RegionInfo.RegionName);
|
||||
|
||||
m_scene.EventManager.TriggerOarFileSaved(m_requestId, String.Empty);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -56,6 +56,12 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
|||
/// <summary>
|
||||
/// Constructor
|
||||
/// </summary>
|
||||
/// <param name="scene"></param>
|
||||
/// <param name="savePath">The path to which to save data.</param>
|
||||
/// <param name="requestId">The id associated with this request</param>
|
||||
/// <exception cref="System.IO.IOException">
|
||||
/// If there was a problem opening a stream for the file specified by the savePath
|
||||
/// </exception>
|
||||
public ArchiveWriteRequestPreparation(Scene scene, string savePath, Guid requestId)
|
||||
{
|
||||
m_scene = scene;
|
||||
|
|
|
@ -45,6 +45,11 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
|||
|
||||
private Scene m_scene;
|
||||
|
||||
/// <value>
|
||||
/// The file used to load and save an opensimulator archive if no filename has been specified
|
||||
/// </value>
|
||||
protected const string DEFAULT_OAR_BACKUP_FILENAME = "region.oar";
|
||||
|
||||
public string Name
|
||||
{
|
||||
get { return "RegionArchiverModule"; }
|
||||
|
@ -80,6 +85,38 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
|||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Load a whole region from an opensimulator archive.
|
||||
/// </summary>
|
||||
/// <param name="cmdparams"></param>
|
||||
public void HandleLoadOarConsoleCommand(string module, string[] cmdparams)
|
||||
{
|
||||
if (cmdparams.Length > 2)
|
||||
{
|
||||
DearchiveRegion(cmdparams[2]);
|
||||
}
|
||||
else
|
||||
{
|
||||
DearchiveRegion(DEFAULT_OAR_BACKUP_FILENAME);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Save a region to a file, including all the assets needed to restore it.
|
||||
/// </summary>
|
||||
/// <param name="cmdparams"></param>
|
||||
public void HandleSaveOarConsoleCommand(string module, string[] cmdparams)
|
||||
{
|
||||
if (cmdparams.Length > 2)
|
||||
{
|
||||
ArchiveRegion(cmdparams[2]);
|
||||
}
|
||||
else
|
||||
{
|
||||
ArchiveRegion(DEFAULT_OAR_BACKUP_FILENAME);
|
||||
}
|
||||
}
|
||||
|
||||
public void ArchiveRegion(string savePath)
|
||||
{
|
||||
ArchiveRegion(savePath, Guid.Empty);
|
||||
|
|
|
@ -35,6 +35,9 @@ namespace OpenSim.Region.Framework.Interfaces
|
|||
/// </summary>
|
||||
public interface IRegionArchiverModule
|
||||
{
|
||||
void HandleLoadOarConsoleCommand(string module, string[] cmdparams);
|
||||
void HandleSaveOarConsoleCommand(string module, string[] cmdparams);
|
||||
|
||||
/// <summary>
|
||||
/// Archive the region to the given path
|
||||
/// </summary>
|
||||
|
|
|
@ -241,24 +241,24 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
/// Save the current scene to an OpenSimulator archive. This archive will eventually include the prim's assets
|
||||
/// as well as the details of the prims themselves.
|
||||
/// </summary>
|
||||
/// <param name="filename"></param>
|
||||
public void SaveCurrentSceneToArchive(string filename)
|
||||
/// <param name="cmdparams"></param>
|
||||
public void SaveCurrentSceneToArchive(string[] cmdparams)
|
||||
{
|
||||
IRegionArchiverModule archiver = CurrentOrFirstScene.RequestModuleInterface<IRegionArchiverModule>();
|
||||
if (archiver != null)
|
||||
archiver.ArchiveRegion(filename);
|
||||
archiver.HandleSaveOarConsoleCommand(string.Empty, cmdparams);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Load an OpenSim archive into the current scene. This will load both the shapes of the prims and upload
|
||||
/// their assets to the asset service.
|
||||
/// </summary>
|
||||
/// <param name="filename"></param>
|
||||
public void LoadArchiveToCurrentScene(string filename)
|
||||
/// <param name="cmdparams"></param>
|
||||
public void LoadArchiveToCurrentScene(string[] cmdparams)
|
||||
{
|
||||
IRegionArchiverModule archiver = CurrentOrFirstScene.RequestModuleInterface<IRegionArchiverModule>();
|
||||
if (archiver != null)
|
||||
archiver.DearchiveRegion(filename);
|
||||
archiver.HandleLoadOarConsoleCommand(string.Empty, cmdparams);
|
||||
}
|
||||
|
||||
public string SaveCurrentSceneMapToXmlString()
|
||||
|
|
|
@ -36,7 +36,8 @@ namespace OpenSim.Tools.LSL.Compiler
|
|||
{
|
||||
class Program
|
||||
{
|
||||
private static Dictionary<KeyValuePair<int, int>, KeyValuePair<int, int>> m_positionMap;
|
||||
// Commented out because generated warning since m_positionMap could never be anything other than null
|
||||
// private static Dictionary<KeyValuePair<int, int>, KeyValuePair<int, int>> m_positionMap;
|
||||
private static CSharpCodeProvider CScodeProvider = new CSharpCodeProvider();
|
||||
|
||||
static void Main(string[] args)
|
||||
|
@ -210,16 +211,16 @@ namespace OpenSim.Tools.LSL.Compiler
|
|||
sfs.Close();
|
||||
|
||||
string posmap = String.Empty;
|
||||
if (m_positionMap != null)
|
||||
{
|
||||
foreach (KeyValuePair<KeyValuePair<int, int>, KeyValuePair<int, int>> kvp in m_positionMap)
|
||||
{
|
||||
KeyValuePair<int, int> k = kvp.Key;
|
||||
KeyValuePair<int, int> v = kvp.Value;
|
||||
posmap += String.Format("{0},{1},{2},{3}\n",
|
||||
k.Key, k.Value, v.Key, v.Value);
|
||||
}
|
||||
}
|
||||
// if (m_positionMap != null)
|
||||
// {
|
||||
// foreach (KeyValuePair<KeyValuePair<int, int>, KeyValuePair<int, int>> kvp in m_positionMap)
|
||||
// {
|
||||
// KeyValuePair<int, int> k = kvp.Key;
|
||||
// KeyValuePair<int, int> v = kvp.Value;
|
||||
// posmap += String.Format("{0},{1},{2},{3}\n",
|
||||
// k.Key, k.Value, v.Key, v.Value);
|
||||
// }
|
||||
// }
|
||||
|
||||
buf = enc.GetBytes(posmap);
|
||||
|
||||
|
@ -253,7 +254,8 @@ namespace OpenSim.Tools.LSL.Compiler
|
|||
|
||||
private static KeyValuePair<int, int> FindErrorPosition(int line, int col)
|
||||
{
|
||||
return FindErrorPosition(line, col, m_positionMap);
|
||||
//return FindErrorPosition(line, col, m_positionMap);
|
||||
return FindErrorPosition(line, col, null);
|
||||
}
|
||||
|
||||
private class kvpSorter : IComparer<KeyValuePair<int,int>>
|
||||
|
|
Loading…
Reference in New Issue