func (d *JavaDriver) Open(ctx *ExecContext, handleID string) (DriverHandle, error) { id := &javaId{} if err := json.Unmarshal([]byte(handleID), id); err != nil { return nil, fmt.Errorf("Failed to parse handle '%s': %v", handleID, err) } // Find the process execCtx := executor.NewExecutorContext(d.taskEnv) cmd, err := executor.OpenId(execCtx, id.ExecutorId) if err != nil { return nil, fmt.Errorf("failed to open ID %v: %v", id.ExecutorId, err) } // Return a driver handle h := &javaHandle{ cmd: cmd, logger: d.logger, killTimeout: id.KillTimeout, doneCh: make(chan struct{}), waitCh: make(chan *cstructs.WaitResult, 1), } go h.run() return h, nil }
func (d *QemuDriver) Open(ctx *ExecContext, handleID string) (DriverHandle, error) { // Find the process cmd, err := executor.OpenId(handleID) if err != nil { return nil, fmt.Errorf("failed to open ID %v: %v", handleID, err) } // Return a driver handle h := &execHandle{ cmd: cmd, doneCh: make(chan struct{}), waitCh: make(chan *cstructs.WaitResult, 1), } go h.run() return h, nil }