This repository has been archived on 2024-06-13. You can view files and clone it, but cannot push or open issues or pull requests.
2020-08-04 13:13:01 -04:00

64 lines
2.3 KiB
C++

//========= 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