public Job Reserve() {
var response = Exec(Request.Create(RequestCommand.Reserve).ExpectStatuses(ResponseStatus.DeadlineSoon | ResponseStatus.Reserved));
switch(response.Status) {
case ResponseStatus.Reserved:
return new Job(uint.Parse(response.Arguments[0]), response.Data, long.Parse(response.Arguments[1]));
case ResponseStatus.DeadlineSoon:
throw new DeadlineSoonException();
}
throw new ShouldNeverHappenException();
}