aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs134
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs2
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs18
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs14
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs2
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs10
6 files changed, 132 insertions, 48 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index 2b5e632..e7ce2e0 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -332,7 +332,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
332 private AgentUpdateArgs lastarg; 332 private AgentUpdateArgs lastarg;
333 private bool m_IsActive = true; 333 private bool m_IsActive = true;
334 334
335 protected Dictionary<PacketType, PacketMethod> m_packetHandlers = new Dictionary<PacketType, PacketMethod>(); 335 protected Dictionary<PacketType, PacketProcessor> m_packetHandlers = new Dictionary<PacketType, PacketProcessor>();
336 protected Dictionary<string, GenericMessage> m_genericPacketHandlers = new Dictionary<string, GenericMessage>(); //PauPaw:Local Generic Message handlers 336 protected Dictionary<string, GenericMessage> m_genericPacketHandlers = new Dictionary<string, GenericMessage>(); //PauPaw:Local Generic Message handlers
337 protected Scene m_scene; 337 protected Scene m_scene;
338 protected LLImageManager m_imageManager; 338 protected LLImageManager m_imageManager;
@@ -540,12 +540,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP
540 540
541 public bool AddLocalPacketHandler(PacketType packetType, PacketMethod handler) 541 public bool AddLocalPacketHandler(PacketType packetType, PacketMethod handler)
542 { 542 {
543 return AddLocalPacketHandler(packetType, handler, true);
544 }
545
546 public bool AddLocalPacketHandler(PacketType packetType, PacketMethod handler, bool async)
547 {
543 bool result = false; 548 bool result = false;
544 lock (m_packetHandlers) 549 lock (m_packetHandlers)
545 { 550 {
546 if (!m_packetHandlers.ContainsKey(packetType)) 551 if (!m_packetHandlers.ContainsKey(packetType))
547 { 552 {
548 m_packetHandlers.Add(packetType, handler); 553 m_packetHandlers.Add(packetType, new PacketProcessor() { method = handler, Async = async });
549 result = true; 554 result = true;
550 } 555 }
551 } 556 }
@@ -576,15 +581,25 @@ namespace OpenSim.Region.ClientStack.LindenUDP
576 protected virtual bool ProcessPacketMethod(Packet packet) 581 protected virtual bool ProcessPacketMethod(Packet packet)
577 { 582 {
578 bool result = false; 583 bool result = false;
579 PacketMethod method; 584 PacketProcessor pprocessor;
580 if (m_packetHandlers.TryGetValue(packet.Type, out method)) 585 if (m_packetHandlers.TryGetValue(packet.Type, out pprocessor))
581 { 586 {
582 //there is a local handler for this packet type 587 //there is a local handler for this packet type
583 result = method(this, packet); 588 if (pprocessor.Async)
589 {
590 object obj = new AsyncPacketProcess(this, pprocessor.method, packet);
591 Util.FireAndForget(ProcessSpecificPacketAsync,obj);
592 result = true;
593 }
594 else
595 {
596 result = pprocessor.method(this, packet);
597 }
584 } 598 }
585 else 599 else
586 { 600 {
587 //there is not a local handler so see if there is a Global handler 601 //there is not a local handler so see if there is a Global handler
602 PacketMethod method = null;
588 bool found; 603 bool found;
589 lock (PacketHandlers) 604 lock (PacketHandlers)
590 { 605 {
@@ -598,6 +613,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
598 return result; 613 return result;
599 } 614 }
600 615
616 public void ProcessSpecificPacketAsync(object state)
617 {
618 AsyncPacketProcess packetObject = (AsyncPacketProcess)state;
619 packetObject.result = packetObject.Method(packetObject.ClientView, packetObject.Pack);
620
621 }
622
601 #endregion Packet Handling 623 #endregion Packet Handling
602 624
603 # region Setup 625 # region Setup
@@ -4323,20 +4345,20 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4323 protected virtual void RegisterLocalPacketHandlers() 4345 protected virtual void RegisterLocalPacketHandlers()
4324 { 4346 {
4325 AddLocalPacketHandler(PacketType.LogoutRequest, HandleLogout); 4347 AddLocalPacketHandler(PacketType.LogoutRequest, HandleLogout);
4326 AddLocalPacketHandler(PacketType.AgentUpdate, HandleAgentUpdate); 4348 AddLocalPacketHandler(PacketType.AgentUpdate, HandleAgentUpdate, false);
4327 AddLocalPacketHandler(PacketType.ViewerEffect, HandleViewerEffect); 4349 AddLocalPacketHandler(PacketType.ViewerEffect, HandleViewerEffect, false);
4328 AddLocalPacketHandler(PacketType.AgentCachedTexture, HandleAgentTextureCached); 4350 AddLocalPacketHandler(PacketType.AgentCachedTexture, HandleAgentTextureCached, false);
4329 AddLocalPacketHandler(PacketType.MultipleObjectUpdate, HandleMultipleObjUpdate); 4351 AddLocalPacketHandler(PacketType.MultipleObjectUpdate, HandleMultipleObjUpdate, false);
4330 AddLocalPacketHandler(PacketType.MoneyTransferRequest, HandleMoneyTransferRequest); 4352 AddLocalPacketHandler(PacketType.MoneyTransferRequest, HandleMoneyTransferRequest, false);
4331 AddLocalPacketHandler(PacketType.ParcelBuy, HandleParcelBuyRequest); 4353 AddLocalPacketHandler(PacketType.ParcelBuy, HandleParcelBuyRequest, false);
4332 AddLocalPacketHandler(PacketType.UUIDGroupNameRequest, HandleUUIDGroupNameRequest); 4354 AddLocalPacketHandler(PacketType.UUIDGroupNameRequest, HandleUUIDGroupNameRequest, false);
4333 AddLocalPacketHandler(PacketType.ObjectGroup, HandleObjectGroupRequest); 4355 AddLocalPacketHandler(PacketType.ObjectGroup, HandleObjectGroupRequest, false);
4334 AddLocalPacketHandler(PacketType.GenericMessage, HandleGenericMessage); 4356 AddLocalPacketHandler(PacketType.GenericMessage, HandleGenericMessage);
4335 AddLocalPacketHandler(PacketType.AvatarPropertiesRequest, HandleAvatarPropertiesRequest); 4357 AddLocalPacketHandler(PacketType.AvatarPropertiesRequest, HandleAvatarPropertiesRequest);
4336 AddLocalPacketHandler(PacketType.ChatFromViewer, HandleChatFromViewer); 4358 AddLocalPacketHandler(PacketType.ChatFromViewer, HandleChatFromViewer);
4337 AddLocalPacketHandler(PacketType.AvatarPropertiesUpdate, HandlerAvatarPropertiesUpdate); 4359 AddLocalPacketHandler(PacketType.AvatarPropertiesUpdate, HandlerAvatarPropertiesUpdate);
4338 AddLocalPacketHandler(PacketType.ScriptDialogReply, HandlerScriptDialogReply); 4360 AddLocalPacketHandler(PacketType.ScriptDialogReply, HandlerScriptDialogReply);
4339 AddLocalPacketHandler(PacketType.ImprovedInstantMessage, HandlerImprovedInstantMessage); 4361 AddLocalPacketHandler(PacketType.ImprovedInstantMessage, HandlerImprovedInstantMessage, false);
4340 AddLocalPacketHandler(PacketType.AcceptFriendship, HandlerAcceptFriendship); 4362 AddLocalPacketHandler(PacketType.AcceptFriendship, HandlerAcceptFriendship);
4341 AddLocalPacketHandler(PacketType.DeclineFriendship, HandlerDeclineFriendship); 4363 AddLocalPacketHandler(PacketType.DeclineFriendship, HandlerDeclineFriendship);
4342 AddLocalPacketHandler(PacketType.TerminateFriendship, HandlerTerminateFrendship); 4364 AddLocalPacketHandler(PacketType.TerminateFriendship, HandlerTerminateFrendship);
@@ -4353,9 +4375,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4353 AddLocalPacketHandler(PacketType.ObjectAttach, HandleObjectAttach); 4375 AddLocalPacketHandler(PacketType.ObjectAttach, HandleObjectAttach);
4354 AddLocalPacketHandler(PacketType.ObjectDetach, HandleObjectDetach); 4376 AddLocalPacketHandler(PacketType.ObjectDetach, HandleObjectDetach);
4355 AddLocalPacketHandler(PacketType.ObjectDrop, HandleObjectDrop); 4377 AddLocalPacketHandler(PacketType.ObjectDrop, HandleObjectDrop);
4356 AddLocalPacketHandler(PacketType.SetAlwaysRun, HandleSetAlwaysRun); 4378 AddLocalPacketHandler(PacketType.SetAlwaysRun, HandleSetAlwaysRun, false);
4357 AddLocalPacketHandler(PacketType.CompleteAgentMovement, HandleCompleteAgentMovement); 4379 AddLocalPacketHandler(PacketType.CompleteAgentMovement, HandleCompleteAgentMovement);
4358 AddLocalPacketHandler(PacketType.AgentAnimation, HandleAgentAnimation); 4380 AddLocalPacketHandler(PacketType.AgentAnimation, HandleAgentAnimation, false);
4359 AddLocalPacketHandler(PacketType.AgentRequestSit, HandleAgentRequestSit); 4381 AddLocalPacketHandler(PacketType.AgentRequestSit, HandleAgentRequestSit);
4360 AddLocalPacketHandler(PacketType.AgentSit, HandleAgentSit); 4382 AddLocalPacketHandler(PacketType.AgentSit, HandleAgentSit);
4361 AddLocalPacketHandler(PacketType.SoundTrigger, HandleSoundTrigger); 4383 AddLocalPacketHandler(PacketType.SoundTrigger, HandleSoundTrigger);
@@ -4364,9 +4386,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4364 AddLocalPacketHandler(PacketType.UserInfoRequest, HandleUserInfoRequest); 4386 AddLocalPacketHandler(PacketType.UserInfoRequest, HandleUserInfoRequest);
4365 AddLocalPacketHandler(PacketType.UpdateUserInfo, HandleUpdateUserInfo); 4387 AddLocalPacketHandler(PacketType.UpdateUserInfo, HandleUpdateUserInfo);
4366 AddLocalPacketHandler(PacketType.SetStartLocationRequest, HandleSetStartLocationRequest); 4388 AddLocalPacketHandler(PacketType.SetStartLocationRequest, HandleSetStartLocationRequest);
4367 AddLocalPacketHandler(PacketType.AgentThrottle, HandleAgentThrottle); 4389 AddLocalPacketHandler(PacketType.AgentThrottle, HandleAgentThrottle, false);
4368 AddLocalPacketHandler(PacketType.AgentPause, HandleAgentPause); 4390 AddLocalPacketHandler(PacketType.AgentPause, HandleAgentPause, false);
4369 AddLocalPacketHandler(PacketType.AgentResume, HandleAgentResume); 4391 AddLocalPacketHandler(PacketType.AgentResume, HandleAgentResume, false);
4370 AddLocalPacketHandler(PacketType.ForceScriptControlRelease, HandleForceScriptControlRelease); 4392 AddLocalPacketHandler(PacketType.ForceScriptControlRelease, HandleForceScriptControlRelease);
4371 AddLocalPacketHandler(PacketType.ObjectLink, HandleObjectLink); 4393 AddLocalPacketHandler(PacketType.ObjectLink, HandleObjectLink);
4372 AddLocalPacketHandler(PacketType.ObjectDelink, HandleObjectDelink); 4394 AddLocalPacketHandler(PacketType.ObjectDelink, HandleObjectDelink);
@@ -4382,22 +4404,22 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4382 AddLocalPacketHandler(PacketType.ObjectRotation, HandleObjectRotation); 4404 AddLocalPacketHandler(PacketType.ObjectRotation, HandleObjectRotation);
4383 AddLocalPacketHandler(PacketType.ObjectFlagUpdate, HandleObjectFlagUpdate); 4405 AddLocalPacketHandler(PacketType.ObjectFlagUpdate, HandleObjectFlagUpdate);
4384 AddLocalPacketHandler(PacketType.ObjectImage, HandleObjectImage); 4406 AddLocalPacketHandler(PacketType.ObjectImage, HandleObjectImage);
4385 AddLocalPacketHandler(PacketType.ObjectGrab, HandleObjectGrab); 4407 AddLocalPacketHandler(PacketType.ObjectGrab, HandleObjectGrab, false);
4386 AddLocalPacketHandler(PacketType.ObjectGrabUpdate, HandleObjectGrabUpdate); 4408 AddLocalPacketHandler(PacketType.ObjectGrabUpdate, HandleObjectGrabUpdate, false);
4387 AddLocalPacketHandler(PacketType.ObjectDeGrab, HandleObjectDeGrab); 4409 AddLocalPacketHandler(PacketType.ObjectDeGrab, HandleObjectDeGrab);
4388 AddLocalPacketHandler(PacketType.ObjectSpinStart, HandleObjectSpinStart); 4410 AddLocalPacketHandler(PacketType.ObjectSpinStart, HandleObjectSpinStart, false);
4389 AddLocalPacketHandler(PacketType.ObjectSpinUpdate, HandleObjectSpinUpdate); 4411 AddLocalPacketHandler(PacketType.ObjectSpinUpdate, HandleObjectSpinUpdate, false);
4390 AddLocalPacketHandler(PacketType.ObjectSpinStop, HandleObjectSpinStop); 4412 AddLocalPacketHandler(PacketType.ObjectSpinStop, HandleObjectSpinStop, false);
4391 AddLocalPacketHandler(PacketType.ObjectDescription, HandleObjectDescription); 4413 AddLocalPacketHandler(PacketType.ObjectDescription, HandleObjectDescription, false);
4392 AddLocalPacketHandler(PacketType.ObjectName, HandleObjectName); 4414 AddLocalPacketHandler(PacketType.ObjectName, HandleObjectName, false);
4393 AddLocalPacketHandler(PacketType.ObjectPermissions, HandleObjectPermissions); 4415 AddLocalPacketHandler(PacketType.ObjectPermissions, HandleObjectPermissions, false);
4394 AddLocalPacketHandler(PacketType.Undo, HandleUndo); 4416 AddLocalPacketHandler(PacketType.Undo, HandleUndo, false);
4395 AddLocalPacketHandler(PacketType.ObjectDuplicateOnRay, HandleObjectDuplicateOnRay); 4417 AddLocalPacketHandler(PacketType.ObjectDuplicateOnRay, HandleObjectDuplicateOnRay);
4396 AddLocalPacketHandler(PacketType.RequestObjectPropertiesFamily, HandleRequestObjectPropertiesFamily); 4418 AddLocalPacketHandler(PacketType.RequestObjectPropertiesFamily, HandleRequestObjectPropertiesFamily, false);
4397 AddLocalPacketHandler(PacketType.ObjectIncludeInSearch, HandleObjectIncludeInSearch); 4419 AddLocalPacketHandler(PacketType.ObjectIncludeInSearch, HandleObjectIncludeInSearch);
4398 AddLocalPacketHandler(PacketType.ScriptAnswerYes, HandleScriptAnswerYes); 4420 AddLocalPacketHandler(PacketType.ScriptAnswerYes, HandleScriptAnswerYes, false);
4399 AddLocalPacketHandler(PacketType.ObjectClickAction, HandleObjectClickAction); 4421 AddLocalPacketHandler(PacketType.ObjectClickAction, HandleObjectClickAction, false);
4400 AddLocalPacketHandler(PacketType.ObjectMaterial, HandleObjectMaterial); 4422 AddLocalPacketHandler(PacketType.ObjectMaterial, HandleObjectMaterial, false);
4401 AddLocalPacketHandler(PacketType.RequestImage, HandleRequestImage); 4423 AddLocalPacketHandler(PacketType.RequestImage, HandleRequestImage);
4402 AddLocalPacketHandler(PacketType.TransferRequest, HandleTransferRequest); 4424 AddLocalPacketHandler(PacketType.TransferRequest, HandleTransferRequest);
4403 AddLocalPacketHandler(PacketType.AssetUploadRequest, HandleAssetUploadRequest); 4425 AddLocalPacketHandler(PacketType.AssetUploadRequest, HandleAssetUploadRequest);
@@ -4423,17 +4445,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4423 AddLocalPacketHandler(PacketType.RemoveTaskInventory, HandleRemoveTaskInventory); 4445 AddLocalPacketHandler(PacketType.RemoveTaskInventory, HandleRemoveTaskInventory);
4424 AddLocalPacketHandler(PacketType.MoveTaskInventory, HandleMoveTaskInventory); 4446 AddLocalPacketHandler(PacketType.MoveTaskInventory, HandleMoveTaskInventory);
4425 AddLocalPacketHandler(PacketType.RezScript, HandleRezScript); 4447 AddLocalPacketHandler(PacketType.RezScript, HandleRezScript);
4426 AddLocalPacketHandler(PacketType.MapLayerRequest, HandleMapLayerRequest); 4448 AddLocalPacketHandler(PacketType.MapLayerRequest, HandleMapLayerRequest, false);
4427 AddLocalPacketHandler(PacketType.MapBlockRequest, HandleMapBlockRequest); 4449 AddLocalPacketHandler(PacketType.MapBlockRequest, HandleMapBlockRequest, false);
4428 AddLocalPacketHandler(PacketType.MapNameRequest, HandleMapNameRequest); 4450 AddLocalPacketHandler(PacketType.MapNameRequest, HandleMapNameRequest, false);
4429 AddLocalPacketHandler(PacketType.TeleportLandmarkRequest, HandleTeleportLandmarkRequest); 4451 AddLocalPacketHandler(PacketType.TeleportLandmarkRequest, HandleTeleportLandmarkRequest);
4430 AddLocalPacketHandler(PacketType.TeleportLocationRequest, HandleTeleportLocationRequest); 4452 AddLocalPacketHandler(PacketType.TeleportLocationRequest, HandleTeleportLocationRequest);
4431 AddLocalPacketHandler(PacketType.UUIDNameRequest, HandleUUIDNameRequest); 4453 AddLocalPacketHandler(PacketType.UUIDNameRequest, HandleUUIDNameRequest, false);
4432 AddLocalPacketHandler(PacketType.RegionHandleRequest, HandleRegionHandleRequest); 4454 AddLocalPacketHandler(PacketType.RegionHandleRequest, HandleRegionHandleRequest);
4433 AddLocalPacketHandler(PacketType.ParcelInfoRequest, HandleParcelInfoRequest); 4455 AddLocalPacketHandler(PacketType.ParcelInfoRequest, HandleParcelInfoRequest, false);
4434 AddLocalPacketHandler(PacketType.ParcelAccessListRequest, HandleParcelAccessListRequest); 4456 AddLocalPacketHandler(PacketType.ParcelAccessListRequest, HandleParcelAccessListRequest, false);
4435 AddLocalPacketHandler(PacketType.ParcelAccessListUpdate, HandleParcelAccessListUpdate); 4457 AddLocalPacketHandler(PacketType.ParcelAccessListUpdate, HandleParcelAccessListUpdate, false);
4436 AddLocalPacketHandler(PacketType.ParcelPropertiesRequest, HandleParcelPropertiesRequest); 4458 AddLocalPacketHandler(PacketType.ParcelPropertiesRequest, HandleParcelPropertiesRequest, false);
4437 AddLocalPacketHandler(PacketType.ParcelDivide, HandleParcelDivide); 4459 AddLocalPacketHandler(PacketType.ParcelDivide, HandleParcelDivide);
4438 AddLocalPacketHandler(PacketType.ParcelJoin, HandleParcelJoin); 4460 AddLocalPacketHandler(PacketType.ParcelJoin, HandleParcelJoin);
4439 AddLocalPacketHandler(PacketType.ParcelPropertiesUpdate, HandleParcelPropertiesUpdate); 4461 AddLocalPacketHandler(PacketType.ParcelPropertiesUpdate, HandleParcelPropertiesUpdate);
@@ -4447,7 +4469,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4447 AddLocalPacketHandler(PacketType.LandStatRequest, HandleLandStatRequest); 4469 AddLocalPacketHandler(PacketType.LandStatRequest, HandleLandStatRequest);
4448 AddLocalPacketHandler(PacketType.ParcelDwellRequest, HandleParcelDwellRequest); 4470 AddLocalPacketHandler(PacketType.ParcelDwellRequest, HandleParcelDwellRequest);
4449 AddLocalPacketHandler(PacketType.EstateOwnerMessage, HandleEstateOwnerMessage); 4471 AddLocalPacketHandler(PacketType.EstateOwnerMessage, HandleEstateOwnerMessage);
4450 AddLocalPacketHandler(PacketType.RequestRegionInfo, HandleRequestRegionInfo); 4472 AddLocalPacketHandler(PacketType.RequestRegionInfo, HandleRequestRegionInfo, false);
4451 AddLocalPacketHandler(PacketType.EstateCovenantRequest, HandleEstateCovenantRequest); 4473 AddLocalPacketHandler(PacketType.EstateCovenantRequest, HandleEstateCovenantRequest);
4452 AddLocalPacketHandler(PacketType.RequestGodlikePowers, HandleRequestGodlikePowers); 4474 AddLocalPacketHandler(PacketType.RequestGodlikePowers, HandleRequestGodlikePowers);
4453 AddLocalPacketHandler(PacketType.GodKickUser, HandleGodKickUser); 4475 AddLocalPacketHandler(PacketType.GodKickUser, HandleGodKickUser);
@@ -4462,13 +4484,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4462 AddLocalPacketHandler(PacketType.ActivateGestures, HandleActivateGestures); 4484 AddLocalPacketHandler(PacketType.ActivateGestures, HandleActivateGestures);
4463 AddLocalPacketHandler(PacketType.DeactivateGestures, HandleDeactivateGestures); 4485 AddLocalPacketHandler(PacketType.DeactivateGestures, HandleDeactivateGestures);
4464 AddLocalPacketHandler(PacketType.ObjectOwner, HandleObjectOwner); 4486 AddLocalPacketHandler(PacketType.ObjectOwner, HandleObjectOwner);
4465 AddLocalPacketHandler(PacketType.AgentFOV, HandleAgentFOV); 4487 AddLocalPacketHandler(PacketType.AgentFOV, HandleAgentFOV, false);
4466 AddLocalPacketHandler(PacketType.ViewerStats, HandleViewerStats); 4488 AddLocalPacketHandler(PacketType.ViewerStats, HandleViewerStats);
4467 AddLocalPacketHandler(PacketType.MapItemRequest, HandleMapItemRequest); 4489 AddLocalPacketHandler(PacketType.MapItemRequest, HandleMapItemRequest, false);
4468 AddLocalPacketHandler(PacketType.TransferAbort, HandleTransferAbort); 4490 AddLocalPacketHandler(PacketType.TransferAbort, HandleTransferAbort, false);
4469 AddLocalPacketHandler(PacketType.MuteListRequest, HandleMuteListRequest); 4491 AddLocalPacketHandler(PacketType.MuteListRequest, HandleMuteListRequest, false);
4470 AddLocalPacketHandler(PacketType.UseCircuitCode, HandleUseCircuitCode); 4492 AddLocalPacketHandler(PacketType.UseCircuitCode, HandleUseCircuitCode);
4471 AddLocalPacketHandler(PacketType.AgentHeightWidth, HandleAgentHeightWidth); 4493 AddLocalPacketHandler(PacketType.AgentHeightWidth, HandleAgentHeightWidth, false);
4472 AddLocalPacketHandler(PacketType.InventoryDescendents, HandleInventoryDescendents); 4494 AddLocalPacketHandler(PacketType.InventoryDescendents, HandleInventoryDescendents);
4473 AddLocalPacketHandler(PacketType.DirPlacesQuery, HandleDirPlacesQuery); 4495 AddLocalPacketHandler(PacketType.DirPlacesQuery, HandleDirPlacesQuery);
4474 AddLocalPacketHandler(PacketType.DirFindQuery, HandleDirFindQuery); 4496 AddLocalPacketHandler(PacketType.DirFindQuery, HandleDirFindQuery);
@@ -15740,6 +15762,26 @@ namespace OpenSim.Region.ClientStack.LindenUDP
15740 } 15762 }
15741 #endregion 15763 #endregion
15742 } 15764 }
15765
15766 public struct PacketProcessor
15767 {
15768 public PacketMethod method;
15769 public bool Async;
15770 }
15771 public class AsyncPacketProcess
15772 {
15773 public bool result = false;
15774 public readonly LLClientView ClientView = null;
15775 public readonly Packet Pack = null;
15776 public readonly PacketMethod Method = null;
15777 public AsyncPacketProcess(LLClientView pClientview, PacketMethod pMethod, Packet pPack)
15778 {
15779 ClientView = pClientview;
15780 Method = pMethod;
15781 Pack = pPack;
15782 }
15783 }
15784
15743 #endregion 15785 #endregion
15744 15786
15745 public static OSD BuildEvent(string eventName, OSD eventBody) 15787 public static OSD BuildEvent(string eventName, OSD eventBody)
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
index 85961b9..4d9f58f 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
@@ -964,7 +964,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
964 } 964 }
965 965
966 if (packetInbox.Dequeue(100, ref incomingPacket)) 966 if (packetInbox.Dequeue(100, ref incomingPacket))
967 Util.FireAndForget(ProcessInPacket, incomingPacket); 967 ProcessInPacket(incomingPacket);//, incomingPacket); Util.FireAndForget(ProcessInPacket, incomingPacket);
968 } 968 }
969 catch (Exception ex) 969 catch (Exception ex)
970 { 970 {
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 1b275b0..104d22b 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -576,10 +576,15 @@ namespace OpenSim.Region.Framework.Scenes
576 576
577 StatsReporter.SetObjectCapacity(objectCapacity); 577 StatsReporter.SetObjectCapacity(objectCapacity);
578 578
579 // Old
580 /*
579 m_simulatorVersion = simulatorVersion 581 m_simulatorVersion = simulatorVersion
580 + " (OS " + Util.GetOperatingSystemInformation() + ")" 582 + " (OS " + Util.GetOperatingSystemInformation() + ")"
581 + " ChilTasks:" + m_seeIntoRegionFromNeighbor.ToString() 583 + " ChilTasks:" + m_seeIntoRegionFromNeighbor.ToString()
582 + " PhysPrim:" + m_physicalPrim.ToString(); 584 + " PhysPrim:" + m_physicalPrim.ToString();
585 */
586
587 m_simulatorVersion = simulatorVersion + " (" + Util.GetRuntimeInformation() + ")";
583 588
584 try 589 try
585 { 590 {
@@ -915,7 +920,7 @@ namespace OpenSim.Region.Framework.Scenes
915 if (showDialog) 920 if (showDialog)
916 { 921 {
917 m_dialogModule.SendNotificationToUsersInRegion( 922 m_dialogModule.SendNotificationToUsersInRegion(
918 UUID.Random(), String.Empty, RegionInfo.RegionName + ": Restarting in " + (seconds / 60).ToString() + " Minutes"); 923 UUID.Random(), String.Empty, RegionInfo.RegionName + String.Format(": Restarting in {0} Minutes", (int)(seconds / 60.0)));
919 } 924 }
920 } 925 }
921 } 926 }
@@ -946,6 +951,16 @@ namespace OpenSim.Region.Framework.Scenes
946 // This causes the region to restart immediatley. 951 // This causes the region to restart immediatley.
947 public void RestartNow() 952 public void RestartNow()
948 { 953 {
954 IConfig startupConfig = m_config.Configs["Startup"];
955 if (startupConfig != null)
956 {
957 if (startupConfig.GetBoolean("InworldRestartShutsDown", false))
958 {
959 MainConsole.Instance.RunCommand("shutdown");
960 return;
961 }
962 }
963
949 if (PhysicsScene != null) 964 if (PhysicsScene != null)
950 { 965 {
951 PhysicsScene.Dispose(); 966 PhysicsScene.Dispose();
@@ -953,6 +968,7 @@ namespace OpenSim.Region.Framework.Scenes
953 968
954 m_log.Error("[REGION]: Closing"); 969 m_log.Error("[REGION]: Closing");
955 Close(); 970 Close();
971
956 m_log.Error("[REGION]: Firing Region Restart Message"); 972 m_log.Error("[REGION]: Firing Region Restart Message");
957 base.Restart(0); 973 base.Restart(0);
958 } 974 }
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
index 836f276..d7480e6 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
@@ -1973,5 +1973,19 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
1973 } 1973 }
1974 return ret; 1974 return ret;
1975 } 1975 }
1976
1977 public int osGetSimulatorMemory()
1978 {
1979 CheckThreatLevel(ThreatLevel.Moderate, "osGetSimulatorMemory");
1980 m_host.AddScriptLPS(1);
1981 long pws = System.Diagnostics.Process.GetCurrentProcess().WorkingSet64;
1982
1983 if (pws > Int32.MaxValue)
1984 return Int32.MaxValue;
1985 if (pws < 0)
1986 return 0;
1987
1988 return (int)pws;
1989 }
1976 } 1990 }
1977} 1991}
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
index c3bf7d2..d943b59 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
@@ -163,5 +163,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
163 key osGetMapTexture(); 163 key osGetMapTexture();
164 key osGetRegionMapTexture(string regionName); 164 key osGetRegionMapTexture(string regionName);
165 LSL_List osGetRegionStats(); 165 LSL_List osGetRegionStats();
166
167 int osGetSimulatorMemory();
166 } 168 }
167} 169}
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
index 519463e..2876ad6 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
@@ -637,5 +637,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
637 { 637 {
638 return m_OSSL_Functions.osGetRegionStats(); 638 return m_OSSL_Functions.osGetRegionStats();
639 } 639 }
640
641 /// <summary>
642 /// Returns the amount of memory in use by the Simulator Daemon.
643 /// Amount in bytes - if >= 4GB, returns 4GB. (LSL is not 64-bit aware)
644 /// </summary>
645 /// <returns></returns>
646 public LSL_Integer osGetSimulatorMemory()
647 {
648 return m_OSSL_Functions.osGetSimulatorMemory();
649 }
640 } 650 }
641} 651}