Functions.
| 29 | class DummyRendezvous : public Rendezvous { |
| 30 | // Functions. |
| 31 | Status Send(const ParsedKey& key, const Args& args, const Tensor& val, |
| 32 | const bool is_dead) override { |
| 33 | std::string key_str = { key.FullKey().data(), key.FullKey().size() }; |
| 34 | mutex_lock l(mu_); |
| 35 | // consumer does not reach. |
| 36 | if (kv_.count(key_str) == 0) { |
| 37 | struct Var var; |
| 38 | var.type = send; |
| 39 | var.args = args; |
| 40 | var.data = val; |
| 41 | var.is_dead = is_dead; |
| 42 | |
| 43 | kv_[key_str] = var; |
| 44 | return Status::OK(); |
| 45 | } |
| 46 | |
| 47 | auto var = kv_[key_str]; |
| 48 | CHECK_EQ(var.type, recv); |
| 49 | var.done(Status::OK(), args, var.args, val, is_dead); |
| 50 | kv_.erase(key_str); |
| 51 | return Status::OK(); |
| 52 | } |
| 53 | |
| 54 | Status FlowControlSend(const StringPiece& tag, const ParsedKey& key, |
| 55 | const Args& args, const Tensor& val, |