Esempio n. 1
0
 protected void RunTasks(object sender, EventArgs e)
 {
     //for (int x = 0; x != 1000; x++) {
     TaskMessage t = new TaskMessage ();
     t.LogReportingLevel = LogLevel.Verbatium;
     t.MessageId = Guid.NewGuid ();
     t.TaskId = Guid.NewGuid ();
     t.TransmisionDateTime = DateTime.Now;
     t.ScriptType = TaskScriptType.CSharp;
     _TaskQueue.Publish (t);
     //System.Threading.Thread.Sleep (10000);
     //}
 }
Esempio n. 2
0
        private static void _TaskQueue_OnReceivedMessage(object sender, TaskMessage args)
        {
            try
                {
                    string hostname = Dns.GetHostName();
                    _ProgressQueue.Publish(new TaskProgressMessage
                        {
                    CurrentTime = DateTime.Now,
                    PercentComplete = 0,
                    StartTime = DateTime.Now,
                    Status = TaskStatus.Arrived,
                    TaskId = args.TaskId,
                    MessageId = Guid.NewGuid(),
                    TransmisionDateTime = DateTime.Now,
                    Details = hostname
                });

            switch (args.ScriptType)
            {
                case TaskScriptType.LoadWorker:

                    bool good = false;
                    Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
                    foreach (Assembly assembly in assemblies)
                    {
                        IEnumerable<Type> types = from x in assembly.GetTypes()
                                                  where typeof (ITaskWorker).IsAssignableFrom(x)
                                                  select x;
                        foreach (Type type in types)
                        {
                            if (type.FullName.Trim() == args.TaskScript.Trim())
                            {
                                var instance = Activator.CreateInstance(type) as ITaskWorker;
                                if (instance != null)
                                {
                                    instance.Progress += TaskProgress;
                                    instance.ErrorOccured += TaskErrorOccured;
                                    instance.Complete += TaskComplete;
                                    instance.Execute(args.TaskId);
                                    good = true;
                                    _ProgressQueue.Publish(new TaskProgressMessage
                                        {
                                            CurrentTime = DateTime.Now,
                                            PercentComplete = 0,
                                            StartTime = DateTime.Now,
                                            Status = TaskStatus.Starting,
                                            TaskId = args.TaskId,
                                            MessageId = Guid.NewGuid(),
                                            TransmisionDateTime = DateTime.Now,
                                            Details = hostname
                                        });
                                }
                            }
                        }
                    }
                    if (!good)
                    {
                        _ProgressQueue.Publish(new TaskProgressMessage
                            {
                                CurrentTime = DateTime.Now,
                                PercentComplete = 0,
                                StartTime = DateTime.Now,
                                Status = TaskStatus.Failed,
                                TaskId = args.TaskId,
                                MessageId = Guid.NewGuid(),
                                TransmisionDateTime = DateTime.Now,
                                Details = "Could not find task: " + args.TaskScript
                            });
                    }
                    break;
                case TaskScriptType.CSharp:
                    break;
                case TaskScriptType.Python:
                    break;
                case TaskScriptType.Shell:
                    break;
            }
                    GC.Collect();

                }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());

            }
        }
Esempio n. 3
0
        private void BuildNetwork(double slat, double slon, double lat, double lon)
        {
            BasicNetwork network = null;
            var nn =
                Mds.GetCollectionQueryModel<NeuralNetwork>(Query.And(Query.EQ("StartPosition.X", slat),
                    Query.EQ("StartPosition.Y", slon), Query.EQ("EndPosition.X", lat), Query.EQ("EndPosition.Y", lon)))
                    .FirstOrDefault();
            var tsk =
                Mds.GetCollectionQueryModel<RoverTask>(
                    Query.And(Query.EQ("TrainingProperties.StartPosition.StartPosition.X", slat),
                        Query.EQ("TrainingProperties.StartPosition.StartPosition.Y", slon),
                        Query.EQ("TrainingProperties.StartPosition.EndPosition.X", lat),
                        Query.EQ("TrainingProperties.StartPosition.EndPosition.Y", lon))).FirstOrDefault();
            if (tsk != null && nn == null) return;
            if (nn == null && tsk == null)
            {
                var t = new TaskMessage
                {
                    LogReportingLevel = LogLevel.Verbatium,
                    MessageId = Guid.NewGuid(),
                    ScriptType = TaskScriptType.LoadWorker,
                    TaskScript = new RoverWorker().GetType().ToString(),
                    TransmisionDateTime = DateTime.Now,
                    TaskId = Guid.NewGuid()
                };
                var col = Mds.DataBase.GetCollection<RoverTask>("RoverTask");
                var task = new RoverTask
                {
                    Status = (TaskTransport.TaskStatus) TaskStatus.Pending,
                    TaskType = RoverTaskType.Train,
                    Id = t.TaskId,
                    TrainingProperties =
                        new RoverTrainProperties
                        {
                            Id = Guid.NewGuid(),
                            StartPosition = new Position(slat, slon),
                            DestinationPosition = new Position(lat, lon)
                        }
                };
                col.Save(task);
                var q = new MessageQueue<TaskMessage>(false, _Connection);
                var x = 0;
                while (x != 10)
                {
                    Thread.Sleep(10);
                    DoEvents();
                    x++;
                }
                q.Publish(t);
                DoEvents();
            }
            else
            {
                var fn = nn.Id.ToString();
                lock (RobotContol.NetworkLock)
                {
                    var rawbytes = Mds.OpenFile(nn.Id);

                    File.WriteAllBytes(fn, rawbytes);
                    network = (BasicNetwork) EncogDirectoryPersistence.LoadObject(new FileInfo(fn));
                }
                var pilot = new NeuralRobot(network, true, SourceLocation, DestLocation);
                SourceData.Simulation = pilot.sim;
                DataContext = SourceData;
                DrawMap();
                SourceData.Simulation.PositionChanged += Simulation_PositionChanged;
                pilot.ScorePilot();
                File.Delete(fn);
            }
        }