| 901 | } |
| 902 | |
| 903 | Key TaskBucket::addTask(Reference<ReadYourWritesTransaction> tr, Reference<Task> task) { |
| 904 | setOptions(tr); |
| 905 | |
| 906 | Key key(deterministicRandom()->randomUniqueID().toString()); |
| 907 | |
| 908 | Subspace taskSpace; |
| 909 | |
| 910 | // If scheduledVersion is valid then place the task directly into the timeout |
| 911 | // space for its scheduled time, otherwise place it in the available space by priority. |
| 912 | Version scheduledVersion = ReservedTaskParams::scheduledVersion().getOrDefault(task, invalidVersion); |
| 913 | if (scheduledVersion != invalidVersion) { |
| 914 | taskSpace = timeouts.get(scheduledVersion).get(key); |
| 915 | } else { |
| 916 | taskSpace = getAvailableSpace(task->getPriority()).get(key); |
| 917 | } |
| 918 | |
| 919 | for (auto& param : task->params) |
| 920 | tr->set(taskSpace.pack(param.key), param.value); |
| 921 | |
| 922 | tr->atomicOp(prefix.pack(LiteralStringRef("task_count")), |
| 923 | LiteralStringRef("\x01\x00\x00\x00\x00\x00\x00\x00"), |
| 924 | MutationRef::AddValue); |
| 925 | |
| 926 | return key; |
| 927 | } |
| 928 | |
| 929 | void TaskBucket::setValidationCondition(Reference<Task> task, KeyRef vKey, KeyRef vValue) { |
| 930 | task->params[Task::reservedTaskParamValidKey] = vKey; |
no test coverage detected