From 28d1dbfee4256a97744ed1cebe21971adf5fdaef Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Fri, 21 Nov 2014 01:08:58 +0000
Subject: Move conditionals which control whether a task is placed in the
 JobEngine inside Watchdog.RunJob() (renamed from RunWhenPossible) and
 generalize them.

---
 OpenSim/Region/Framework/Scenes/ScenePresence.cs | 68 +++++++++---------------
 1 file changed, 25 insertions(+), 43 deletions(-)

(limited to 'OpenSim/Region')

diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 1d234e2..757ec43 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -1228,15 +1228,11 @@ namespace OpenSim.Region.Framework.Scenes
                 // viewers without (e.g. v1 viewers) will not, so we still need to make this call.
                 if (Scene.AttachmentsModule != null)
                 {
-                    if (Watchdog.JobEngine.IsRunning)
-                        Watchdog.RunWhenPossible(
-                            "RezAttachments", 
-                            o => Scene.AttachmentsModule.RezAttachments(this), 
-                            string.Format("Rez attachments for {0} in {1}", Name, Scene.Name), 
-                            null);
-                    else
-                        Util.FireAndForget(
-                            o => Scene.AttachmentsModule.RezAttachments(this), null, "ScenePresence.RezAttachmentsOnLogin");
+                    Watchdog.RunJob(
+                        "RezAttachments", 
+                        o => Scene.AttachmentsModule.RezAttachments(this), 
+                        string.Format("Rez attachments for {0} in {1}", Name, Scene.Name), 
+                        null);
                 }
             }
             else
@@ -1258,18 +1254,12 @@ namespace OpenSim.Region.Framework.Scenes
 
                 if (attachments.Count > 0)
                 {
-                    if (Watchdog.JobEngine.IsRunning)
-                    {
-                        Watchdog.RunWhenPossible(
-                            "StartAttachmentScripts", 
-                            o => RestartAttachmentScripts(attachments),
-                            string.Format("Start attachment scripts for {0} in {1}", Name, Scene.Name), 
-                            null);
-                    }
-                    else
-                    {
-                        RestartAttachmentScripts(attachments);
-                    }
+                    Watchdog.RunJob(
+                        "StartAttachmentScripts", 
+                        o => RestartAttachmentScripts(attachments),
+                        string.Format("Start attachment scripts for {0} in {1}", Name, Scene.Name),
+                        null,
+                        true);
                 }
             }
 
@@ -1825,18 +1815,12 @@ namespace OpenSim.Region.Framework.Scenes
                 // XXX: If we force an update after activity has completed, then multiple attachments do appear correctly on a destination region
                 // If we do it a little bit earlier (e.g. when converting the child to a root agent) then this does not work.
                 // This may be due to viewer code or it may be something we're not doing properly simulator side.
-                if (Watchdog.JobEngine.IsRunning)
-                {
-                    Watchdog.RunWhenPossible(
-                        "ScheduleAttachmentsForFullUpdate", 
-                        o => ScheduleAttachmentsForFullUpdate(),
-                        string.Format("Schedule attachments for full update for {0} in {1}", Name, Scene.Name), 
-                        null);
-                }
-                else
-                {
-                    ScheduleAttachmentsForFullUpdate();
-                }
+                Watchdog.RunJob(
+                    "ScheduleAttachmentsForFullUpdate", 
+                    o => ScheduleAttachmentsForFullUpdate(),
+                    string.Format("Schedule attachments for full update for {0} in {1}", Name, Scene.Name),
+                    null,
+                    true);
 
     //            m_log.DebugFormat(
     //                "[SCENE PRESENCE]: Completing movement of {0} into region {1} took {2}ms", 
@@ -3391,7 +3375,7 @@ namespace OpenSim.Region.Framework.Scenes
             SentInitialDataToClient = true;
 
             // Send all scene object to the new client
-            Watchdog.RunWhenPossible("SendInitialDataToClient", delegate
+            Watchdog.RunJob("SendInitialDataToClient", delegate
             {
 //                m_log.DebugFormat(
 //                    "[SCENE PRESENCE]: Sending initial data to {0} agent {1} in {2}, tp flags {3}", 
@@ -3409,7 +3393,7 @@ namespace OpenSim.Region.Framework.Scenes
                     if (e != null && e is SceneObjectGroup)
                         ((SceneObjectGroup)e).SendFullUpdateToClient(ControllingClient);
                 }
-            }, string.Format("SendInitialDataToClient ({0} in {1})", Name, Scene.Name), null);
+            }, string.Format("SendInitialDataToClient ({0} in {1})", Name, Scene.Name),null,  false, true);
         }
 
         /// <summary>
@@ -4073,14 +4057,12 @@ namespace OpenSim.Region.Framework.Scenes
                 // We don't need to worry about a race condition as the job to later start the scripts is also 
                 // JobEngine scheduled and so will always occur after this task.
                 // XXX: This will not be true if JobEngine ever gets more than one thread.
-                if (Watchdog.JobEngine.IsRunning)
-                    Watchdog.RunWhenPossible(
-                        "CopyAttachments", 
-                        o => Scene.AttachmentsModule.CopyAttachments(cAgent, this), 
-                        string.Format("Copy attachments for {0} entering {1}", Name, Scene.Name), 
-                        null);
-                else
-                    Scene.AttachmentsModule.CopyAttachments(cAgent, this);
+                Watchdog.RunJob(
+                    "CopyAttachments", 
+                    o => Scene.AttachmentsModule.CopyAttachments(cAgent, this), 
+                    string.Format("Copy attachments for {0} entering {1}", Name, Scene.Name),
+                    null,
+                    true);
             }
 
             // This must occur after attachments are copied or scheduled to be copied, as it releases the CompleteMovement() calling thread
-- 
cgit v1.1