public Job(JobConf conf) : this(conf.Name) { this.Conf = conf; conf.WorkerFiles.Each(confFile => { WorkerConf workerConf = WorkerConf.Load(confFile); this.AddWorker(workerConf.CreateWorker(this)); }); }
public void Configure(WorkerConf conf) { Type workerType = this.GetType(); conf.Properties.Each(kvp => { PropertyInfo property = workerType.GetProperty(kvp.Key); if (property != null && property.CanWrite) { property.SetValue(this, kvp.Value); } }); }
public void SaveConf(string path) { Type workerType = this.GetType(); PropertyInfo[] properties = workerType.GetProperties().Where(pi => pi.PropertyType == typeof(string) && !pi.Name.Equals("Name")).ToArray(); WorkerConf conf = new WorkerConf(this); conf.StepNumber = StepNumber; properties.Each(prop => { conf.AddProperty(prop.Name, (string)prop.GetValue(this)); }); conf.Save(path); }
protected internal object GetWorker(Type workerType, string workerName) { Args.ThrowIfNull(workerType, "workerType"); object worker = workerType.Construct(); if (!WorkerExists(workerName, out string path)) { Worker w = (Worker)worker; w.Name = workerName; AddWorker(w); } else { WorkerConf conf = WorkerConf.Load(path); worker = conf.CreateWorker(); } return(worker); }