//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // //===========================================================================// #ifndef IPROCESSUTILS_H #define IPROCESSUTILS_H #ifdef _WIN32 #pragma once #endif #include "../appframework/IAppSystem.h" //----------------------------------------------------------------------------- // Handle to a process //----------------------------------------------------------------------------- typedef int ProcessHandle_t; enum { PROCESS_HANDLE_INVALID = 0, }; //----------------------------------------------------------------------------- // Interface version //----------------------------------------------------------------------------- #define PROCESS_UTILS_INTERFACE_VERSION "VProcessUtils001" //----------------------------------------------------------------------------- // Interface for makefiles to build differently depending on where they are run // from //----------------------------------------------------------------------------- abstract_class IProcessUtils : public IAppSystem { public: // Starts, stops a process virtual ProcessHandle_t StartProcess(const char *pCommandLine, bool bConnectStdPipes) = 0; virtual ProcessHandle_t StartProcess(int argc, const char **argv, bool bConnectStdPipes) = 0; virtual void CloseProcess(ProcessHandle_t hProcess) = 0; virtual void AbortProcess(ProcessHandle_t hProcess) = 0; // Returns true if a process is complete virtual bool IsProcessComplete(ProcessHandle_t hProcess) = 0; // Waits until a process is complete virtual void WaitUntilProcessCompletes(ProcessHandle_t hProcess) = 0; // Methods used to write input into a process virtual int SendProcessInput(ProcessHandle_t hProcess, char *pBuf, int nBufLen) = 0; // Methods used to read output back from a process virtual int GetProcessOutputSize(ProcessHandle_t hProcess) = 0; virtual int GetProcessOutput(ProcessHandle_t hProcess, char *pBuf, int nBufLen) = 0; // Returns the exit code for the process. Doesn't work unless the process is // complete virtual int GetProcessExitCode(ProcessHandle_t hProcess) = 0; }; #endif // IPROCESSUTILS_H