public void receiveJobRequest(JobMetadata jobMetadata) { Common.Logger().LogInfo("Job Request received", string.Empty, string.Empty); //now he is a Job Tracker. Implement all job tracker functions upon this //Start channel with other workers as Job tracker JOBTRACKER_URL = serviceUrl;//I set my own as job tracker url isJobTracker = true; CLIENT_URL = jobMetadata.ClientUrl; Console.WriteLine("Job request received for " + JOBTRACKER_URL, string.Empty, string.Empty); //start jobtracker threads //TrackerDetails trackerDetails = new TrackerDetails(CLIENT_URL, existingWorkerMap); trackerTask = new TrackerTask(CLIENT_URL, existingWorkerMap, workerId); client = (IClient)Activator.GetObject(typeof(IClient), CLIENT_URL); trackerTask.notifyWorkersForJobStart(); if (existingWorkerMap.Count > 1) { trackerTask.startHeartBeat();//should work even with 1 } trackerTask.splitJob(jobMetadata); }
public void submitTask(String entryUrl, string inputFile, string outputDir, int splits, string mapperFunctionName, string dllPath) { hasJobCompleted = false; startTime = DateTime.Now; this.inputFilePath = inputFile; this.outputDir = outputDir; this.mapperName = mapperFunctionName; this.dllPath = dllPath; // FileInfo f = new FileInfo(inputFilePath); // long s1 = f.Length; //JobMetadata jobDetails = new JobMetadata(s1, splits, url); byte[] input = File.ReadAllBytes(inputFilePath); JobMetadata jobDetails = new JobMetadata(input.Length, splits, url); contactingWorker = (IWorkerTracker)Activator.GetObject(typeof(IWorkerTracker), entryUrl); contactingWorker.receiveJobRequest(jobDetails);//calling the job tracker }