private static void Show(SomeJob <Worker.Worker> job) { Console.WriteLine("Вкажіть ім'я раба про якого потрібно вивести інфу"); string name = Console.ReadLine(); job.Show(name); }
private static void Calculation(SomeJob <Worker.Worker> job) { Console.WriteLine("Вкажіть премію працівникові"); int pr = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Вкажіть ім'я працівника: "); string name = Console.ReadLine(); job.Calculetion(pr, name); }
public int GetClosestJob(SomeJob job, List <SomeJob> someJobs) { for (int i = 0; i < someJobs.Count; i++) { if (someJobs[i].StartTime >= job.EndTime) { return(i); } } return(-1); }
static void Main(string[] args) { SomeJob <Worker.Worker> job = new SomeJob <Worker.Worker>("Шарага"); bool alive = true; while (alive) { ConsoleColor color = Console.ForegroundColor; Console.ForegroundColor = ConsoleColor.DarkGreen; Console.WriteLine("1. Додати робітника \t 2. Додати робочі години робітникові \n 3. Переглянути інформацію робітника \t 4. Нарахувати відсотки \t 5. Вийти"); Console.WriteLine("Введіть номер пункут: "); Console.ForegroundColor = color; try { int command = Convert.ToInt32(Console.ReadLine()); switch (command) { case 4: Calculation(job); break; case 1: HirengWorker(job); break; case 2: AddWorkHourse(job); break; case 3: Show(job); break; case 5: alive = false; continue; } } catch (Exception ex) { color = Console.ForegroundColor; Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(ex.Message); Console.ForegroundColor = color; } } }
private static void HirengWorker(SomeJob <Worker.Worker> job) { Console.WriteLine("Вкажіть статуc раба: "); Console.WriteLine("Menager \t Employee \t Freelancer"); string status = Console.ReadLine(); bool correctStatus = true; Status st = Status.Employee; while (correctStatus) { if (status == "Menager") { st = Status.Manager; correctStatus = false; } else if (status == "Employee") { st = Status.Employee; correctStatus = false; } else if (status == "FreeLancer") { st = Status.FreeLancer; correctStatus = false; } else { Console.WriteLine("Введи блять нормільний статус"); status = Console.ReadLine(); } } Console.WriteLine("Вкажіть зарплату раба: "); int sal = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Вкажіть ім'я для раба: "); string name = Console.ReadLine(); Console.WriteLine("Вкажіть премію для раба: "); int pr = Convert.ToInt32(Console.ReadLine()); job.Hiring(st, sal, pr, name, addHourseWorkHandler, calcultionHandler, addNewWorkerJandler, showHandler); }
// Start is called before the first frame update void Start() { NativeArray <float> result = new NativeArray <float>(1, Allocator.TempJob); SomeJob jobData = new SomeJob { a = 5, b = 3, result = result }; JobHandle handle = jobData.Schedule(); handle.Complete(); float resultOfJob = result[0]; Debug.Log(resultOfJob); result.Dispose(); }
private static void AddWorkHourse(SomeJob <Worker.Worker> job) { Console.WriteLine("Вкажіть дату додавання годин: "); Console.Write("Рік \t"); int year = Convert.ToInt32(Console.ReadLine()); Console.Write("\t Місяць \t"); int month = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("\t День \t"); int day = Convert.ToInt32(Console.ReadLine()); DateTime date = new DateTime(year, month, day); Console.WriteLine("Вкажіть кількість годин: "); int count = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Вкажіть ім'я: "); string name = Console.ReadLine(); job.AddHourse(date, count, name); }
public void GenerateJobsTimeline() { List <SomeJob> someJobs = new List <SomeJob>(); // fill jobs with jit load func events foreach (BJit jit in Jits) { if (jit.IsFull == true) { someJobs.Add(new SomeJob { StartTime = jit.JobStartAt, EndTime = jit.JobEndAt, Type = SomeJobType.Jit }); } } foreach (BGCItem gcItem in GCItems) { if (gcItem.IsFull != true) { continue; } bool isAdded = false; for (int i = 0; i < someJobs.Count; i++) { SomeJob someJob = someJobs[i]; if (someJob.Type != SomeJobType.GC && gcItem.JobStartAt > someJob.StartTime && gcItem.JobStartAt < someJob.EndTime) // if gc job inside jit job { // lets know how it overlaps antoher if (gcItem.JobEndAt < someJob.EndTime) // if gc is smaller than jit (how it must be) { //split large job SomeJob firstPart = new SomeJob { StartTime = someJob.StartTime, EndTime = gcItem.JobStartAt, Type = SomeJobType.Jit }; SomeJob secondPart = new SomeJob { StartTime = gcItem.JobEndAt, EndTime = someJob.EndTime, Type = SomeJobType.Jit }; // create gc job SomeJob gcPart = new SomeJob { StartTime = gcItem.JobStartAt, EndTime = gcItem.JobEndAt, Type = SomeJobType.GC }; // insert new jobs someJobs.RemoveAt(i); someJobs.Insert(i, secondPart); someJobs.Insert(i, gcPart); someJobs.Insert(i, firstPart); i += 2; isAdded = true; } } } if (isAdded == false) { // create gc job SomeJob gcJob = new SomeJob { StartTime = gcItem.JobStartAt, EndTime = gcItem.JobEndAt, Type = SomeJobType.GC }; int i = GetClosestJob(gcJob, someJobs); if (i == -1) // if not found insert to the end { someJobs.Add(gcJob); } else // insert at index place { someJobs.Insert(i, gcJob); } } } ulong startTime = GlobalOffset; ulong step = 1000000000; // 1 sec int index = 0; List <BJobsPercentage> jpbss = new List <BJobsPercentage>(); if (someJobs.Count == 0) { return; } startTime = someJobs.First().StartTime; for (ulong sec = startTime; sec < someJobs.Last().EndTime; sec += step) { BJobsPercentage jpbs = new BJobsPercentage() { Time = sec, BThread = this }; jpbss.Add(jpbs); List <SomeJob> jobs = GetJobsBetween(ref index, sec, sec + step, someJobs); if (jobs.Count == 0) { continue; } if (jobs.First().StartTime < sec) // check if first job is already have started { ulong endTime = jobs.First().EndTime > sec + step ? sec + step : jobs.First().EndTime; switch (jobs.First().Type) { case SomeJobType.GC: jpbs.GC += endTime - sec; break; case SomeJobType.Jit: jpbs.Jit += endTime - sec; break; } } else { ulong endTime = jobs.First().EndTime > sec + step ? sec + step : jobs.First().EndTime; switch (jobs.First().Type) { case SomeJobType.GC: jpbs.GC += endTime - jobs.First().StartTime; break; case SomeJobType.Jit: jpbs.Jit += endTime - jobs.First().StartTime; break; } } for (int i = 1; i < jobs.Count - 1; i++) { SomeJob prev = jobs[i - 1]; SomeJob current = jobs[i]; switch (current.Type) { case SomeJobType.GC: jpbs.GC += current.EndTime - current.StartTime; break; case SomeJobType.Jit: jpbs.Jit += current.EndTime - current.StartTime; break; } } if (jobs.Count > 1 && jobs.Last().EndTime > sec + step) // check if first job is longer than can be { switch (jobs.Last().Type) { case SomeJobType.GC: jpbs.GC += sec + step - jobs.Last().StartTime; break; case SomeJobType.Jit: jpbs.Jit += sec + step - jobs.Last().StartTime; break; } } else if (jobs.Count > 1) { switch (jobs.Last().Type) { case SomeJobType.GC: { jpbs.GC += jobs.Last().EndTime - jobs.Last().StartTime; break; } case SomeJobType.Jit: { jpbs.Jit += jobs.Last().EndTime - jobs.Last().StartTime; break; } } } } JobsPercentages = jpbss; }
private JobHandle SomeTaskJob() { var job = new SomeJob(); return(job.Schedule()); }