Merge branch 'master' into careminster

avinationmerge
Melanie 2009-12-14 00:40:56 +00:00
commit 824d7190c2
10 changed files with 337 additions and 222 deletions

View File

@ -91,6 +91,9 @@ namespace OpenSim.Data.MySQL
rollbackStore = GridDataMySqlFile.ParseFileReadValue("rollback") == "true"; rollbackStore = GridDataMySqlFile.ParseFileReadValue("rollback") == "true";
opengridmode = GridDataMySqlFile.ParseFileReadValue("opengridmode") == "true"; opengridmode = GridDataMySqlFile.ParseFileReadValue("opengridmode") == "true";
if(rollbackStore)
m_log.Warn("[MysqlInventory] Enabling rollback mode in: " + rollbackDir);
database = database =
new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling,
settingPort); settingPort);

View File

@ -1007,6 +1007,26 @@ namespace OpenSim.Framework
return os; return os;
} }
public static string GetRuntimeInformation()
{
string ru = String.Empty;
if (Environment.OSVersion.Platform == PlatformID.Unix)
ru = "Unix/Mono";
else
if (Environment.OSVersion.Platform == PlatformID.MacOSX)
ru = "OSX/Mono";
else
{
if (Type.GetType("Mono.Runtime") != null)
ru = "Win/Mono";
else
ru = "Win/.NET";
}
return ru;
}
/// <summary> /// <summary>
/// Is the given string a UUID? /// Is the given string a UUID?
/// </summary> /// </summary>

View File

@ -332,7 +332,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
private AgentUpdateArgs lastarg; private AgentUpdateArgs lastarg;
private bool m_IsActive = true; private bool m_IsActive = true;
protected Dictionary<PacketType, PacketMethod> m_packetHandlers = new Dictionary<PacketType, PacketMethod>(); protected Dictionary<PacketType, PacketProcessor> m_packetHandlers = new Dictionary<PacketType, PacketProcessor>();
protected Dictionary<string, GenericMessage> m_genericPacketHandlers = new Dictionary<string, GenericMessage>(); //PauPaw:Local Generic Message handlers protected Dictionary<string, GenericMessage> m_genericPacketHandlers = new Dictionary<string, GenericMessage>(); //PauPaw:Local Generic Message handlers
protected Scene m_scene; protected Scene m_scene;
protected LLImageManager m_imageManager; protected LLImageManager m_imageManager;
@ -539,13 +539,18 @@ namespace OpenSim.Region.ClientStack.LindenUDP
} }
public bool AddLocalPacketHandler(PacketType packetType, PacketMethod handler) public bool AddLocalPacketHandler(PacketType packetType, PacketMethod handler)
{
return AddLocalPacketHandler(packetType, handler, true);
}
public bool AddLocalPacketHandler(PacketType packetType, PacketMethod handler, bool async)
{ {
bool result = false; bool result = false;
lock (m_packetHandlers) lock (m_packetHandlers)
{ {
if (!m_packetHandlers.ContainsKey(packetType)) if (!m_packetHandlers.ContainsKey(packetType))
{ {
m_packetHandlers.Add(packetType, handler); m_packetHandlers.Add(packetType, new PacketProcessor() { method = handler, Async = async });
result = true; result = true;
} }
} }
@ -576,15 +581,25 @@ namespace OpenSim.Region.ClientStack.LindenUDP
protected virtual bool ProcessPacketMethod(Packet packet) protected virtual bool ProcessPacketMethod(Packet packet)
{ {
bool result = false; bool result = false;
PacketMethod method; PacketProcessor pprocessor;
if (m_packetHandlers.TryGetValue(packet.Type, out method)) if (m_packetHandlers.TryGetValue(packet.Type, out pprocessor))
{ {
//there is a local handler for this packet type //there is a local handler for this packet type
result = method(this, packet); if (pprocessor.Async)
{
object obj = new AsyncPacketProcess(this, pprocessor.method, packet);
Util.FireAndForget(ProcessSpecificPacketAsync,obj);
result = true;
}
else
{
result = pprocessor.method(this, packet);
}
} }
else else
{ {
//there is not a local handler so see if there is a Global handler //there is not a local handler so see if there is a Global handler
PacketMethod method = null;
bool found; bool found;
lock (PacketHandlers) lock (PacketHandlers)
{ {
@ -598,6 +613,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
return result; return result;
} }
public void ProcessSpecificPacketAsync(object state)
{
AsyncPacketProcess packetObject = (AsyncPacketProcess)state;
packetObject.result = packetObject.Method(packetObject.ClientView, packetObject.Pack);
}
#endregion Packet Handling #endregion Packet Handling
# region Setup # region Setup
@ -4323,20 +4345,20 @@ namespace OpenSim.Region.ClientStack.LindenUDP
protected virtual void RegisterLocalPacketHandlers() protected virtual void RegisterLocalPacketHandlers()
{ {
AddLocalPacketHandler(PacketType.LogoutRequest, HandleLogout); AddLocalPacketHandler(PacketType.LogoutRequest, HandleLogout);
AddLocalPacketHandler(PacketType.AgentUpdate, HandleAgentUpdate); AddLocalPacketHandler(PacketType.AgentUpdate, HandleAgentUpdate, false);
AddLocalPacketHandler(PacketType.ViewerEffect, HandleViewerEffect); AddLocalPacketHandler(PacketType.ViewerEffect, HandleViewerEffect, false);
AddLocalPacketHandler(PacketType.AgentCachedTexture, HandleAgentTextureCached); AddLocalPacketHandler(PacketType.AgentCachedTexture, HandleAgentTextureCached, false);
AddLocalPacketHandler(PacketType.MultipleObjectUpdate, HandleMultipleObjUpdate); AddLocalPacketHandler(PacketType.MultipleObjectUpdate, HandleMultipleObjUpdate, false);
AddLocalPacketHandler(PacketType.MoneyTransferRequest, HandleMoneyTransferRequest); AddLocalPacketHandler(PacketType.MoneyTransferRequest, HandleMoneyTransferRequest, false);
AddLocalPacketHandler(PacketType.ParcelBuy, HandleParcelBuyRequest); AddLocalPacketHandler(PacketType.ParcelBuy, HandleParcelBuyRequest, false);
AddLocalPacketHandler(PacketType.UUIDGroupNameRequest, HandleUUIDGroupNameRequest); AddLocalPacketHandler(PacketType.UUIDGroupNameRequest, HandleUUIDGroupNameRequest, false);
AddLocalPacketHandler(PacketType.ObjectGroup, HandleObjectGroupRequest); AddLocalPacketHandler(PacketType.ObjectGroup, HandleObjectGroupRequest, false);
AddLocalPacketHandler(PacketType.GenericMessage, HandleGenericMessage); AddLocalPacketHandler(PacketType.GenericMessage, HandleGenericMessage);
AddLocalPacketHandler(PacketType.AvatarPropertiesRequest, HandleAvatarPropertiesRequest); AddLocalPacketHandler(PacketType.AvatarPropertiesRequest, HandleAvatarPropertiesRequest);
AddLocalPacketHandler(PacketType.ChatFromViewer, HandleChatFromViewer); AddLocalPacketHandler(PacketType.ChatFromViewer, HandleChatFromViewer);
AddLocalPacketHandler(PacketType.AvatarPropertiesUpdate, HandlerAvatarPropertiesUpdate); AddLocalPacketHandler(PacketType.AvatarPropertiesUpdate, HandlerAvatarPropertiesUpdate);
AddLocalPacketHandler(PacketType.ScriptDialogReply, HandlerScriptDialogReply); AddLocalPacketHandler(PacketType.ScriptDialogReply, HandlerScriptDialogReply);
AddLocalPacketHandler(PacketType.ImprovedInstantMessage, HandlerImprovedInstantMessage); AddLocalPacketHandler(PacketType.ImprovedInstantMessage, HandlerImprovedInstantMessage, false);
AddLocalPacketHandler(PacketType.AcceptFriendship, HandlerAcceptFriendship); AddLocalPacketHandler(PacketType.AcceptFriendship, HandlerAcceptFriendship);
AddLocalPacketHandler(PacketType.DeclineFriendship, HandlerDeclineFriendship); AddLocalPacketHandler(PacketType.DeclineFriendship, HandlerDeclineFriendship);
AddLocalPacketHandler(PacketType.TerminateFriendship, HandlerTerminateFrendship); AddLocalPacketHandler(PacketType.TerminateFriendship, HandlerTerminateFrendship);
@ -4353,9 +4375,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
AddLocalPacketHandler(PacketType.ObjectAttach, HandleObjectAttach); AddLocalPacketHandler(PacketType.ObjectAttach, HandleObjectAttach);
AddLocalPacketHandler(PacketType.ObjectDetach, HandleObjectDetach); AddLocalPacketHandler(PacketType.ObjectDetach, HandleObjectDetach);
AddLocalPacketHandler(PacketType.ObjectDrop, HandleObjectDrop); AddLocalPacketHandler(PacketType.ObjectDrop, HandleObjectDrop);
AddLocalPacketHandler(PacketType.SetAlwaysRun, HandleSetAlwaysRun); AddLocalPacketHandler(PacketType.SetAlwaysRun, HandleSetAlwaysRun, false);
AddLocalPacketHandler(PacketType.CompleteAgentMovement, HandleCompleteAgentMovement); AddLocalPacketHandler(PacketType.CompleteAgentMovement, HandleCompleteAgentMovement);
AddLocalPacketHandler(PacketType.AgentAnimation, HandleAgentAnimation); AddLocalPacketHandler(PacketType.AgentAnimation, HandleAgentAnimation, false);
AddLocalPacketHandler(PacketType.AgentRequestSit, HandleAgentRequestSit); AddLocalPacketHandler(PacketType.AgentRequestSit, HandleAgentRequestSit);
AddLocalPacketHandler(PacketType.AgentSit, HandleAgentSit); AddLocalPacketHandler(PacketType.AgentSit, HandleAgentSit);
AddLocalPacketHandler(PacketType.SoundTrigger, HandleSoundTrigger); AddLocalPacketHandler(PacketType.SoundTrigger, HandleSoundTrigger);
@ -4364,9 +4386,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
AddLocalPacketHandler(PacketType.UserInfoRequest, HandleUserInfoRequest); AddLocalPacketHandler(PacketType.UserInfoRequest, HandleUserInfoRequest);
AddLocalPacketHandler(PacketType.UpdateUserInfo, HandleUpdateUserInfo); AddLocalPacketHandler(PacketType.UpdateUserInfo, HandleUpdateUserInfo);
AddLocalPacketHandler(PacketType.SetStartLocationRequest, HandleSetStartLocationRequest); AddLocalPacketHandler(PacketType.SetStartLocationRequest, HandleSetStartLocationRequest);
AddLocalPacketHandler(PacketType.AgentThrottle, HandleAgentThrottle); AddLocalPacketHandler(PacketType.AgentThrottle, HandleAgentThrottle, false);
AddLocalPacketHandler(PacketType.AgentPause, HandleAgentPause); AddLocalPacketHandler(PacketType.AgentPause, HandleAgentPause, false);
AddLocalPacketHandler(PacketType.AgentResume, HandleAgentResume); AddLocalPacketHandler(PacketType.AgentResume, HandleAgentResume, false);
AddLocalPacketHandler(PacketType.ForceScriptControlRelease, HandleForceScriptControlRelease); AddLocalPacketHandler(PacketType.ForceScriptControlRelease, HandleForceScriptControlRelease);
AddLocalPacketHandler(PacketType.ObjectLink, HandleObjectLink); AddLocalPacketHandler(PacketType.ObjectLink, HandleObjectLink);
AddLocalPacketHandler(PacketType.ObjectDelink, HandleObjectDelink); AddLocalPacketHandler(PacketType.ObjectDelink, HandleObjectDelink);
@ -4382,22 +4404,22 @@ namespace OpenSim.Region.ClientStack.LindenUDP
AddLocalPacketHandler(PacketType.ObjectRotation, HandleObjectRotation); AddLocalPacketHandler(PacketType.ObjectRotation, HandleObjectRotation);
AddLocalPacketHandler(PacketType.ObjectFlagUpdate, HandleObjectFlagUpdate); AddLocalPacketHandler(PacketType.ObjectFlagUpdate, HandleObjectFlagUpdate);
AddLocalPacketHandler(PacketType.ObjectImage, HandleObjectImage); AddLocalPacketHandler(PacketType.ObjectImage, HandleObjectImage);
AddLocalPacketHandler(PacketType.ObjectGrab, HandleObjectGrab); AddLocalPacketHandler(PacketType.ObjectGrab, HandleObjectGrab, false);
AddLocalPacketHandler(PacketType.ObjectGrabUpdate, HandleObjectGrabUpdate); AddLocalPacketHandler(PacketType.ObjectGrabUpdate, HandleObjectGrabUpdate, false);
AddLocalPacketHandler(PacketType.ObjectDeGrab, HandleObjectDeGrab); AddLocalPacketHandler(PacketType.ObjectDeGrab, HandleObjectDeGrab);
AddLocalPacketHandler(PacketType.ObjectSpinStart, HandleObjectSpinStart); AddLocalPacketHandler(PacketType.ObjectSpinStart, HandleObjectSpinStart, false);
AddLocalPacketHandler(PacketType.ObjectSpinUpdate, HandleObjectSpinUpdate); AddLocalPacketHandler(PacketType.ObjectSpinUpdate, HandleObjectSpinUpdate, false);
AddLocalPacketHandler(PacketType.ObjectSpinStop, HandleObjectSpinStop); AddLocalPacketHandler(PacketType.ObjectSpinStop, HandleObjectSpinStop, false);
AddLocalPacketHandler(PacketType.ObjectDescription, HandleObjectDescription); AddLocalPacketHandler(PacketType.ObjectDescription, HandleObjectDescription, false);
AddLocalPacketHandler(PacketType.ObjectName, HandleObjectName); AddLocalPacketHandler(PacketType.ObjectName, HandleObjectName, false);
AddLocalPacketHandler(PacketType.ObjectPermissions, HandleObjectPermissions); AddLocalPacketHandler(PacketType.ObjectPermissions, HandleObjectPermissions, false);
AddLocalPacketHandler(PacketType.Undo, HandleUndo); AddLocalPacketHandler(PacketType.Undo, HandleUndo, false);
AddLocalPacketHandler(PacketType.ObjectDuplicateOnRay, HandleObjectDuplicateOnRay); AddLocalPacketHandler(PacketType.ObjectDuplicateOnRay, HandleObjectDuplicateOnRay);
AddLocalPacketHandler(PacketType.RequestObjectPropertiesFamily, HandleRequestObjectPropertiesFamily); AddLocalPacketHandler(PacketType.RequestObjectPropertiesFamily, HandleRequestObjectPropertiesFamily, false);
AddLocalPacketHandler(PacketType.ObjectIncludeInSearch, HandleObjectIncludeInSearch); AddLocalPacketHandler(PacketType.ObjectIncludeInSearch, HandleObjectIncludeInSearch);
AddLocalPacketHandler(PacketType.ScriptAnswerYes, HandleScriptAnswerYes); AddLocalPacketHandler(PacketType.ScriptAnswerYes, HandleScriptAnswerYes, false);
AddLocalPacketHandler(PacketType.ObjectClickAction, HandleObjectClickAction); AddLocalPacketHandler(PacketType.ObjectClickAction, HandleObjectClickAction, false);
AddLocalPacketHandler(PacketType.ObjectMaterial, HandleObjectMaterial); AddLocalPacketHandler(PacketType.ObjectMaterial, HandleObjectMaterial, false);
AddLocalPacketHandler(PacketType.RequestImage, HandleRequestImage); AddLocalPacketHandler(PacketType.RequestImage, HandleRequestImage);
AddLocalPacketHandler(PacketType.TransferRequest, HandleTransferRequest); AddLocalPacketHandler(PacketType.TransferRequest, HandleTransferRequest);
AddLocalPacketHandler(PacketType.AssetUploadRequest, HandleAssetUploadRequest); AddLocalPacketHandler(PacketType.AssetUploadRequest, HandleAssetUploadRequest);
@ -4423,17 +4445,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP
AddLocalPacketHandler(PacketType.RemoveTaskInventory, HandleRemoveTaskInventory); AddLocalPacketHandler(PacketType.RemoveTaskInventory, HandleRemoveTaskInventory);
AddLocalPacketHandler(PacketType.MoveTaskInventory, HandleMoveTaskInventory); AddLocalPacketHandler(PacketType.MoveTaskInventory, HandleMoveTaskInventory);
AddLocalPacketHandler(PacketType.RezScript, HandleRezScript); AddLocalPacketHandler(PacketType.RezScript, HandleRezScript);
AddLocalPacketHandler(PacketType.MapLayerRequest, HandleMapLayerRequest); AddLocalPacketHandler(PacketType.MapLayerRequest, HandleMapLayerRequest, false);
AddLocalPacketHandler(PacketType.MapBlockRequest, HandleMapBlockRequest); AddLocalPacketHandler(PacketType.MapBlockRequest, HandleMapBlockRequest, false);
AddLocalPacketHandler(PacketType.MapNameRequest, HandleMapNameRequest); AddLocalPacketHandler(PacketType.MapNameRequest, HandleMapNameRequest, false);
AddLocalPacketHandler(PacketType.TeleportLandmarkRequest, HandleTeleportLandmarkRequest); AddLocalPacketHandler(PacketType.TeleportLandmarkRequest, HandleTeleportLandmarkRequest);
AddLocalPacketHandler(PacketType.TeleportLocationRequest, HandleTeleportLocationRequest); AddLocalPacketHandler(PacketType.TeleportLocationRequest, HandleTeleportLocationRequest);
AddLocalPacketHandler(PacketType.UUIDNameRequest, HandleUUIDNameRequest); AddLocalPacketHandler(PacketType.UUIDNameRequest, HandleUUIDNameRequest, false);
AddLocalPacketHandler(PacketType.RegionHandleRequest, HandleRegionHandleRequest); AddLocalPacketHandler(PacketType.RegionHandleRequest, HandleRegionHandleRequest);
AddLocalPacketHandler(PacketType.ParcelInfoRequest, HandleParcelInfoRequest); AddLocalPacketHandler(PacketType.ParcelInfoRequest, HandleParcelInfoRequest, false);
AddLocalPacketHandler(PacketType.ParcelAccessListRequest, HandleParcelAccessListRequest); AddLocalPacketHandler(PacketType.ParcelAccessListRequest, HandleParcelAccessListRequest, false);
AddLocalPacketHandler(PacketType.ParcelAccessListUpdate, HandleParcelAccessListUpdate); AddLocalPacketHandler(PacketType.ParcelAccessListUpdate, HandleParcelAccessListUpdate, false);
AddLocalPacketHandler(PacketType.ParcelPropertiesRequest, HandleParcelPropertiesRequest); AddLocalPacketHandler(PacketType.ParcelPropertiesRequest, HandleParcelPropertiesRequest, false);
AddLocalPacketHandler(PacketType.ParcelDivide, HandleParcelDivide); AddLocalPacketHandler(PacketType.ParcelDivide, HandleParcelDivide);
AddLocalPacketHandler(PacketType.ParcelJoin, HandleParcelJoin); AddLocalPacketHandler(PacketType.ParcelJoin, HandleParcelJoin);
AddLocalPacketHandler(PacketType.ParcelPropertiesUpdate, HandleParcelPropertiesUpdate); AddLocalPacketHandler(PacketType.ParcelPropertiesUpdate, HandleParcelPropertiesUpdate);
@ -4447,7 +4469,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
AddLocalPacketHandler(PacketType.LandStatRequest, HandleLandStatRequest); AddLocalPacketHandler(PacketType.LandStatRequest, HandleLandStatRequest);
AddLocalPacketHandler(PacketType.ParcelDwellRequest, HandleParcelDwellRequest); AddLocalPacketHandler(PacketType.ParcelDwellRequest, HandleParcelDwellRequest);
AddLocalPacketHandler(PacketType.EstateOwnerMessage, HandleEstateOwnerMessage); AddLocalPacketHandler(PacketType.EstateOwnerMessage, HandleEstateOwnerMessage);
AddLocalPacketHandler(PacketType.RequestRegionInfo, HandleRequestRegionInfo); AddLocalPacketHandler(PacketType.RequestRegionInfo, HandleRequestRegionInfo, false);
AddLocalPacketHandler(PacketType.EstateCovenantRequest, HandleEstateCovenantRequest); AddLocalPacketHandler(PacketType.EstateCovenantRequest, HandleEstateCovenantRequest);
AddLocalPacketHandler(PacketType.RequestGodlikePowers, HandleRequestGodlikePowers); AddLocalPacketHandler(PacketType.RequestGodlikePowers, HandleRequestGodlikePowers);
AddLocalPacketHandler(PacketType.GodKickUser, HandleGodKickUser); AddLocalPacketHandler(PacketType.GodKickUser, HandleGodKickUser);
@ -4462,13 +4484,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
AddLocalPacketHandler(PacketType.ActivateGestures, HandleActivateGestures); AddLocalPacketHandler(PacketType.ActivateGestures, HandleActivateGestures);
AddLocalPacketHandler(PacketType.DeactivateGestures, HandleDeactivateGestures); AddLocalPacketHandler(PacketType.DeactivateGestures, HandleDeactivateGestures);
AddLocalPacketHandler(PacketType.ObjectOwner, HandleObjectOwner); AddLocalPacketHandler(PacketType.ObjectOwner, HandleObjectOwner);
AddLocalPacketHandler(PacketType.AgentFOV, HandleAgentFOV); AddLocalPacketHandler(PacketType.AgentFOV, HandleAgentFOV, false);
AddLocalPacketHandler(PacketType.ViewerStats, HandleViewerStats); AddLocalPacketHandler(PacketType.ViewerStats, HandleViewerStats);
AddLocalPacketHandler(PacketType.MapItemRequest, HandleMapItemRequest); AddLocalPacketHandler(PacketType.MapItemRequest, HandleMapItemRequest, false);
AddLocalPacketHandler(PacketType.TransferAbort, HandleTransferAbort); AddLocalPacketHandler(PacketType.TransferAbort, HandleTransferAbort, false);
AddLocalPacketHandler(PacketType.MuteListRequest, HandleMuteListRequest); AddLocalPacketHandler(PacketType.MuteListRequest, HandleMuteListRequest, false);
AddLocalPacketHandler(PacketType.UseCircuitCode, HandleUseCircuitCode); AddLocalPacketHandler(PacketType.UseCircuitCode, HandleUseCircuitCode);
AddLocalPacketHandler(PacketType.AgentHeightWidth, HandleAgentHeightWidth); AddLocalPacketHandler(PacketType.AgentHeightWidth, HandleAgentHeightWidth, false);
AddLocalPacketHandler(PacketType.InventoryDescendents, HandleInventoryDescendents); AddLocalPacketHandler(PacketType.InventoryDescendents, HandleInventoryDescendents);
AddLocalPacketHandler(PacketType.DirPlacesQuery, HandleDirPlacesQuery); AddLocalPacketHandler(PacketType.DirPlacesQuery, HandleDirPlacesQuery);
AddLocalPacketHandler(PacketType.DirFindQuery, HandleDirFindQuery); AddLocalPacketHandler(PacketType.DirFindQuery, HandleDirFindQuery);
@ -15740,6 +15762,26 @@ namespace OpenSim.Region.ClientStack.LindenUDP
} }
#endregion #endregion
} }
public struct PacketProcessor
{
public PacketMethod method;
public bool Async;
}
public class AsyncPacketProcess
{
public bool result = false;
public readonly LLClientView ClientView = null;
public readonly Packet Pack = null;
public readonly PacketMethod Method = null;
public AsyncPacketProcess(LLClientView pClientview, PacketMethod pMethod, Packet pPack)
{
ClientView = pClientview;
Method = pMethod;
Pack = pPack;
}
}
#endregion #endregion
public static OSD BuildEvent(string eventName, OSD eventBody) public static OSD BuildEvent(string eventName, OSD eventBody)

View File

@ -964,7 +964,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
} }
if (packetInbox.Dequeue(100, ref incomingPacket)) if (packetInbox.Dequeue(100, ref incomingPacket))
Util.FireAndForget(ProcessInPacket, incomingPacket); ProcessInPacket(incomingPacket);//, incomingPacket); Util.FireAndForget(ProcessInPacket, incomingPacket);
} }
catch (Exception ex) catch (Exception ex)
{ {

View File

@ -576,10 +576,15 @@ namespace OpenSim.Region.Framework.Scenes
StatsReporter.SetObjectCapacity(objectCapacity); StatsReporter.SetObjectCapacity(objectCapacity);
// Old
/*
m_simulatorVersion = simulatorVersion m_simulatorVersion = simulatorVersion
+ " (OS " + Util.GetOperatingSystemInformation() + ")" + " (OS " + Util.GetOperatingSystemInformation() + ")"
+ " ChilTasks:" + m_seeIntoRegionFromNeighbor.ToString() + " ChilTasks:" + m_seeIntoRegionFromNeighbor.ToString()
+ " PhysPrim:" + m_physicalPrim.ToString(); + " PhysPrim:" + m_physicalPrim.ToString();
*/
m_simulatorVersion = simulatorVersion + " (" + Util.GetRuntimeInformation() + ")";
try try
{ {
@ -915,7 +920,7 @@ namespace OpenSim.Region.Framework.Scenes
if (showDialog) if (showDialog)
{ {
m_dialogModule.SendNotificationToUsersInRegion( m_dialogModule.SendNotificationToUsersInRegion(
UUID.Random(), String.Empty, RegionInfo.RegionName + ": Restarting in " + (seconds / 60).ToString() + " Minutes"); UUID.Random(), String.Empty, RegionInfo.RegionName + String.Format(": Restarting in {0} Minutes", (int)(seconds / 60.0)));
} }
} }
} }
@ -946,6 +951,16 @@ namespace OpenSim.Region.Framework.Scenes
// This causes the region to restart immediatley. // This causes the region to restart immediatley.
public void RestartNow() public void RestartNow()
{ {
IConfig startupConfig = m_config.Configs["Startup"];
if (startupConfig != null)
{
if (startupConfig.GetBoolean("InworldRestartShutsDown", false))
{
MainConsole.Instance.RunCommand("shutdown");
return;
}
}
if (PhysicsScene != null) if (PhysicsScene != null)
{ {
PhysicsScene.Dispose(); PhysicsScene.Dispose();
@ -953,6 +968,7 @@ namespace OpenSim.Region.Framework.Scenes
m_log.Error("[REGION]: Closing"); m_log.Error("[REGION]: Closing");
Close(); Close();
m_log.Error("[REGION]: Firing Region Restart Message"); m_log.Error("[REGION]: Firing Region Restart Message");
base.Restart(0); base.Restart(0);
} }

View File

@ -1973,5 +1973,19 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
} }
return ret; return ret;
} }
public int osGetSimulatorMemory()
{
CheckThreatLevel(ThreatLevel.Moderate, "osGetSimulatorMemory");
m_host.AddScriptLPS(1);
long pws = System.Diagnostics.Process.GetCurrentProcess().WorkingSet64;
if (pws > Int32.MaxValue)
return Int32.MaxValue;
if (pws < 0)
return 0;
return (int)pws;
}
} }
} }

View File

@ -163,5 +163,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
key osGetMapTexture(); key osGetMapTexture();
key osGetRegionMapTexture(string regionName); key osGetRegionMapTexture(string regionName);
LSL_List osGetRegionStats(); LSL_List osGetRegionStats();
int osGetSimulatorMemory();
} }
} }

View File

@ -637,5 +637,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
{ {
return m_OSSL_Functions.osGetRegionStats(); return m_OSSL_Functions.osGetRegionStats();
} }
/// <summary>
/// Returns the amount of memory in use by the Simulator Daemon.
/// Amount in bytes - if >= 4GB, returns 4GB. (LSL is not 64-bit aware)
/// </summary>
/// <returns></returns>
public LSL_Integer osGetSimulatorMemory()
{
return m_OSSL_Functions.osGetSimulatorMemory();
}
} }
} }

View File

@ -109,6 +109,14 @@
; Warning! Don't use this with regions that have existing content!, This will likely break them ; Warning! Don't use this with regions that have existing content!, This will likely break them
CombineContiguousRegions = false CombineContiguousRegions = false
; If you have only one region in an instance, or to avoid the many bugs
; that you can trigger in modules by restarting a region, set this to
; true to make the entire instance exit instead of restarting the region.
; This is meant to be used on systems where some external system like
; Monit will restart any instance that exits, thereby making the shutdown
; into a restart.
;InworldRestartShutsDown = false
; ## ; ##
; ## STORAGE ; ## STORAGE
; ## ; ##