public PutResponse Put(uint priority, TimeSpan delay, TimeSpan timeToRun, Stream request, long length) {
var response = Exec(Request.Create(RequestCommand.Put)
.AppendArgument(priority)
.AppendArgument(delay)
.AppendArgument(timeToRun)
.WithData(request, length)
.ExpectStatuses(ResponseStatus.Inserted | ResponseStatus.Buried | ResponseStatus.ExpectedCrlf | ResponseStatus.JobTooBig));
if(response.Status == ResponseStatus.Inserted || response.Status == ResponseStatus.Buried) {
return new PutResponse(response.Status == ResponseStatus.Buried, uint.Parse(response.Arguments[0]));
}
throw new PutFailedException(response.Status);
}