summaryrefslogtreecommitdiff
path: root/source/core/slang-process.h
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2021-11-16 08:54:55 -0500
committerGitHub <noreply@github.com>2021-11-16 08:54:55 -0500
commitc51f1e27f0e307a80a57a840b2337e3226b3c2be (patch)
tree22a0d055683740fc21e402c91159baf1c7313e64 /source/core/slang-process.h
parent5a29c15cc3c227d9bb93a71cb50491a822d0ccf3 (diff)
Support around JSON-RPC (#2014)
* #include an absolute path didn't work - because paths were taken to always be relative. * Use 'Process' to communicate with an command line tool. * Remove slang-win-stream * Tidy up windows ProcessUtil. * First version of BufferedReadStream. * Windows working IPC for steams. * Test proxy count option. * Split Process/ProcessUtil. Process is platform dependant. ProcessUtil are functions that are platform independent. * First implementation of Unix Process interface. * Unix process compiles on cygwin. * Fix typo in unix process. * Separate unix pipe stream error of invalid access, from pipe availability. * Fix in standard line extraction. * Make fd non blocking. * Fix issues with Windows Process streams. * Added UnixPipe. * Some fixes around UnixPipeStream. * Make a unix stream closed explicit. * Hack to debug linux process/stream. * Revert to old linux pipe handling. * Pass executable path for unit tests. Split out CommandLine into own source. * Small improvements in process/command line. * Check process behavior with crash. * Make stderr and stdout unbuffered for crash testing. * Only turn disable buffering in crash test. * Disable crash test on CI. * Fix crash on clang/linux. * Enable crash test. Remove _appendBuffer as can use StreamUtil functionality. * Added inital processing for http headers. * Small improvements to HttpHeader. * First pass HTTPPacketConnection working on windows. * Enable other Process communication tests. * Update comments. * WIP JSON RPC. * Add terminate to Process. Made JSONRPC a Util. * Small tidy up around HTTPPacketConnection. * Improve process termination options. Co-authored-by: Yong He <yonghe@outlook.com>
Diffstat (limited to 'source/core/slang-process.h')
-rw-r--r--source/core/slang-process.h22
1 files changed, 19 insertions, 3 deletions
diff --git a/source/core/slang-process.h b/source/core/slang-process.h
index ddbe7cbf0..7cd7596ae 100644
--- a/source/core/slang-process.h
+++ b/source/core/slang-process.h
@@ -35,13 +35,27 @@ public:
/// Get the stream for the type
Stream* getStream(StreamType type) const { return m_streams[Index(type)]; }
+
+ /// Get the value returned from the process when it exited/returned.
int32_t getReturnValue() const { return m_returnValue; }
/// True if the process has terminated
virtual bool isTerminated() = 0;
- /// Blocks until the process has completed
- virtual void waitForTermination() = 0;
+ /// Blocks until the process has terminated or the timeout completes
+ /// Can optionally supply a timeout time. -1 means 'infinite' and is the default.
+ /// Note that the timeOut is only used approximately.
+ /// Returns true if has terminated.
+ virtual bool waitForTermination(Int timeOutInMs = -1) = 0;
+
+ /// Terminate the process gracefully.
+ /// After calling it may take time before the process actually terminates
+ /// Ie calling isTerminated directly after `terminate` may return false.
+ /// The return code depending on implementation/termination style, may not be set.
+ virtual void terminate(int32_t returnCode) = 0;
+
+ /// Kill the process - attempt to terminate immediately.
+ virtual void kill(int32_t returnCode) = 0;
/// The quoting style used for the command line on this target. Currently just uses Space,
/// but in future may take into account platform sec
@@ -54,13 +68,15 @@ public:
static SlangResult create(const CommandLine& commandLine, Process::Flags flags, RefPtr<Process>& outProcess);
/// Sleep the current thread for time specified in milliseconds. 0 indicates to OS ok to yield this thread.
- static void sleepCurrentThread(Index timeInMs);
+ static void sleepCurrentThread(Int timeInMs);
/// Get a standard stream
static SlangResult getStdStream(StreamType type, RefPtr<Stream>& out);
+ /// Get the clock frequency
static uint64_t getClockFrequency();
+ /// Get the clock tick.
static uint64_t getClockTick();
protected: