| 262 | } |
| 263 | |
| 264 | Status BufferPool::TransferBuffer(ClientHandle* src_client, BufferHandle* src, |
| 265 | ClientHandle* dst_client, BufferHandle* dst) { |
| 266 | DCHECK(src->is_open()); |
| 267 | DCHECK(!dst->is_open()); |
| 268 | DCHECK_EQ(src_client, src->client_); |
| 269 | DCHECK_NE(src, dst); |
| 270 | DCHECK_NE(src_client, dst_client); |
| 271 | |
| 272 | dst_client->impl_->reservation()->AllocateFrom(src->len()); |
| 273 | src_client->impl_->reservation()->ReleaseTo(src->len()); |
| 274 | *dst = std::move(*src); |
| 275 | dst->client_ = dst_client; |
| 276 | return Status::OK(); |
| 277 | } |
| 278 | |
| 279 | void BufferPool::Maintenance() { |
| 280 | allocator_->Maintenance(); |