示例#1
0
        public void ExecuteWithCommunication()
        {
            if (SelfSubmitter.AmIRootProcess())
            {
                AsynchronousServer server       = new AsynchronousServer(C.DEFAULT_PORT);
                AutoResetEvent     receivedDone = new AutoResetEvent(false);
                server.NewMessageReceivedEvent += (objectRecv, sock) => {
                    if (objectRecv is ISystemMessage hello)
                    {
                        hello.Dispatch(sock);
                    }

                    if (objectRecv is string s)
                    {
                        Console.Out.WriteLine(s);
                        receivedDone.Set();
                    }
                };
                server.Start();
                //receivedDone.WaitOne();
                SubmitNewCopyOfMyself();
                while (true)
                {
                    Thread.Sleep(1000);
                    Console.Out.WriteLine("Received msgs so far: {0}", AsynchronousCommunicationUtils.reception);
                }
            }
            else if (SelfSubmitter.GetMyNestLevel() == 1)
            {
                ClientExample();
            }
        }
示例#2
0
        private JobDescriptor SubmitNewCopyOfMyself()
        {
            string[]      filesToAttach           = { "file_with_input.txt" };
            SelfSubmitter selfSubmitter           = new SelfSubmitter(filesToAttach);
            var           remoteProcessDescriptor = selfSubmitter.Submit();

            return(remoteProcessDescriptor);
        }
示例#3
0
 private void StartWorkers()
 {
     for (int i = 0; i < numberOfWorkers; ++i)
     {
         string[] arguments = { i.ToString() };
         var      submitter = new SelfSubmitter(null, arguments);
         submitter.NewJobSubmitter.TargetOperatingSystem = TargetOperatingSystem.ANY;
         var descriptor = submitter.Submit();
         descriptors.Add(descriptor);
     }
 }
示例#4
0
 public static void Run(string[] argv)
 {
     if (SelfSubmitter.AmIRootProcess())
     {
         var coordinator = new ACOShappCoordinator();
         coordinator.Run();
     }
     else
     {
         var worker = new ACOShappWorker();
         worker.Run(int.Parse(argv[0]));
     }
 }
示例#5
0
 public void Execute()
 {
     if (SelfSubmitter.AmIRootProcess())
     {
         SubmitNewCopyOfMyself();
         SubmitNewCopyOfMyself();
     }
     else if (SelfSubmitter.GetMyNestLevel() == 1)
     {
         Console.Out.WriteLine("Hello from 1nd nest level");
         SubmitNewCopyOfMyself();
     }
     else if (SelfSubmitter.GetMyNestLevel() == 2)
     {
         Console.Out.WriteLine("Hello from 2nd nest level");
     }
 }
示例#6
0
 public int Execute(string[] args)
 {
     if (SelfSubmitter.AmIRootProcess())
     {
         return(DoTheParentJob());
     }
     else if (SelfSubmitter.GetMyNestLevel() == 1)
     {
         // WARNING! I assume here that args are like follows:
         // string[] arguments = { "--model", modelFilesForTask[0], "--startpath", modelFilesForTask[1] };
         // if this changes, modify those values
         string modelFilename     = args[1];
         string startPathFilename = args[3];
         DoTheChildJob(modelFilename, startPathFilename);
     }
     return(0);
 }