| 444 | } |
| 445 | |
| 446 | async fn flush_queue( |
| 447 | &self, |
| 448 | request: Request<api::FlushMulticastGroupQueueRequest>, |
| 449 | ) -> Result<Response<()>, Status> { |
| 450 | let req = request.get_ref(); |
| 451 | let mg_id = Uuid::from_str(&req.multicast_group_id).map_err(|e| e.status())?; |
| 452 | |
| 453 | self.validator |
| 454 | .validate( |
| 455 | request.extensions(), |
| 456 | validator::ValidateMulticastGroupQueueAccess::new(validator::Flag::Delete, mg_id), |
| 457 | ) |
| 458 | .await?; |
| 459 | |
| 460 | multicast::flush_queue(&mg_id) |
| 461 | .await |
| 462 | .map_err(|e| e.status())?; |
| 463 | |
| 464 | let mut resp = Response::new(()); |
| 465 | resp.metadata_mut().insert( |
| 466 | "x-log-multicast_group_id", |
| 467 | req.multicast_group_id.parse().unwrap(), |
| 468 | ); |
| 469 | |
| 470 | Ok(resp) |
| 471 | } |
| 472 | |
| 473 | async fn list_queue( |
| 474 | &self, |