Exemplo n.º 1
0
        public void Handle(SqlRunnerOptions message)
        {
            SimpleLogger.LogThisReallyCrappyMessage("Info", "Handling runner request");

            var runnerActorWrapper = ActorWrapper.GetUserActorSelection(ActorWrapper.RunnerActorName);
            var statusUpdateActor  = ActorWrapper.GetUserActorSelection(ActorWrapper.StatusUpdateActorName);
            var scriptObjects      = RunnableScriptObject.GetFirstScriptFromQueue();

            if (!scriptObjects.Any())
            {
                Sender.Tell(new ThereIsNoDataOnlyZuulMessage(), Self);
                return;
            }

            // double lock
            var script = scriptObjects.ElementAt(0);

            LogResultPickedUp(script, statusUpdateActor);
            var sameScript = RunnableScriptObject.GetDataByScriptId(script.RunnableScriptId);

            if (!sameScript.ProcessInfoIsSame(script))
            {
                runnerActorWrapper.Tell(script, Self);
                Sender.Tell(new GetToTheChopperMessage {
                    ScriptId = script.RunnableScriptId
                }, Self);
            }
            else
            {
                Sender.Tell(new ThereIsNoDataOnlyZuulMessage(), Self);
            }
        }
Exemplo n.º 2
0
        private void LogResultPickedUp(RunnableScriptObject message, ICanTell statusUpdateActor)
        {
            Task t = statusUpdateActor.Ask(new UpdateRunStatusAsPickedUpRequestMessage
            {
                ScriptId = message.RunnableScriptId
            });

            t.Wait();
        }