public DebuggedProcess(IPEndPoint endPoint, IEngineCallback engineCallback, IWorkerThread workerThread, AD7Engine engine)
        {
            _engineCallback = engineCallback;
            WorkerThread    = workerThread;
            Engine          = engine;

            ProcessState = ProcessState.NotConnected;

            _rokuController                   = new RokuController(endPoint);
            _rokuController.OnOutput         += RokuControllerOnOutput;
            _rokuController.OnBackTrace      += RokuControllerOnOnBackTrace;
            _rokuController.OnVariables      += RokuControllerOnOnVariables;
            _rokuController.RunModeEvent     += RokuControllerOnRunModeEvent;
            _rokuController.BreakModeEvent   += RokuControllerOnBreakModeEvent;
            _rokuController.ProcessExitEvent += RokuControllerOnProcessExitEvent;

            CommandFactory = new CommandFactory(_rokuController);

            ThreadCache = new ThreadCache(engineCallback, Engine, CommandFactory);

            // we do NOT have real Win32 process IDs, so we use a guid
            AD_PROCESS_ID pid = new AD_PROCESS_ID();

            pid.ProcessIdType = (int)enum_AD_PROCESS_ID.AD_PROCESS_ID_GUID;
            pid.guidProcessId = Guid.NewGuid();
            this.Id           = pid;
        }
 public CommandFactory(IRokuController rokuController)
 {
     _rokuController = rokuController;
 }