package ai.h2o.automl; import water.H2O; import water.Job; import water.Key; public class H2OJob { protected final H2ORunnable _target; protected final Key _key; protected Key<Job> _jobKey; long _max_runtime_msecs; public H2OJob(H2ORunnable runnable, long max_runtime_msecs) { _target=runnable; _key=Key.make(); _max_runtime_msecs = max_runtime_msecs; } public H2OJob(H2ORunnable runnable, Key k, long max_runtime_msecs) { _target=runnable; _key=k; _max_runtime_msecs = max_runtime_msecs; } public Job start() { Job j = new Job<>(_key,_target.getClass().getName(), _target.getClass().getSimpleName() + " build"); j._max_runtime_msecs = _max_runtime_msecs; _jobKey=j._key; return j.start(new H2O.H2OCountedCompleter() { @Override public void compute2() { _target.run(); tryComplete(); } },1); } public void stop() { _jobKey.get().stop(); } }