Get desktop application:
View/edit binary Protocol Buffers messages
Queue a C/C++ compilation task. The execution of this task might be delayed if the daemon is suffering from a temporarily overload. In case there are already too many tasks queued, this method may reject further tasks actively.
Obtained from `scheduler.GetConfig`.
Grant for running this task. This ID is allocated by the scheduler.
Desired compilation environment.
Path of the source to be compiled.
Neither `gcc` nor `g++` would appear here. Given that `-x XXX` (i.e., source language) is provided, whether we'll be calling `gcc` or `g++` is not significant.
Algorithm for compressing the preprocessed source code.
@sa: CompressionAlgorithm
If set, we won't fill the cache on completion.
Indicate to some client wait for the task. If compilation task is already submited on cluster, we should attach this task and add task reference count. Now that if the compilation task comlete on other workflow,the compilation result won't be cleaned utill all the client dereference it.
Obtained from `scheduler.GetConfig`.
(message has no fields)
For compilation task that takes a long time, it would be impossible to return the compilation result from `QueueXxxCompilationTask`. This is required to avoid RPC timeout. In this case, task ID returned by `QueueXxxCompilationTask` can be used to query compilation result (in long-polling fashion) until the compilation itself actually completes. TODO(luobogao): Make this method act in "batch" way, so that it can wait for any pending tasks submitted by the caller.
Obtained from `scheduler.GetConfig`.
Up to 10s.
@sa: CompilationTaskStatus
Compiler exit code.
Whatever written to `stdout` / `stderr` by the compiler. I have no idea why, yet these two fields can contain non-utf8 characters. Therefore `string` may not be used here.
Language-specific information, @sa: `XxxCompilationInfo`.
Algorithm for compressing the object file (compilation result).
Free resources related to task. Note that even if this method is not called. The daemon would free completed tasks that has completed for a certain period. Well-behaving daemons should call this to free others' resources timely. The reason why we don't do this in `WaitForCompilationOutput` is for handling possible RPC failure. If we free the task there and that RPC fails, the compilation resource we devoted to this task is wasted.
Obtained from `scheduler.GetConfig`.
NOTHING.
(message has no fields)
Failed to run the compiler.
The compiler is running.
Compilation is done, either successfully or with an error.
The task ID is unknown to us.
Not supported yet. Unlikely to be supported in the future, either.
Prefered.
@sa: `RpcClientController.ErrorCode()``
`rpc.STATUS_SUCCESS`, actually.
This is different from `STATUS_OVERLOADED`. If this status valus is returned, the situation is still managable, and there is no need to kick this node from the compiler cluster.
Not quite possible but if the daemon does not recognize the requested compilation environment, this error can be returned.
Token invalid?
No task found.
Invalid argument.
Failed to access yadcc-fs.