| 434 | } |
| 435 | |
| 436 | class BESSControlImpl final : public BESSControl::Service { |
| 437 | public: |
| 438 | void set_shutdown_func(const std::function<void()>& func) { |
| 439 | shutdown_func_ = func; |
| 440 | } |
| 441 | |
| 442 | Status GetVersion(ServerContext*, const EmptyRequest*, |
| 443 | VersionResponse* response) override { |
| 444 | std::lock_guard<std::recursive_mutex> lock(mutex_); |
| 445 | |
| 446 | response->set_version(google::VersionString()); |
| 447 | return Status::OK; |
| 448 | } |
| 449 | |
| 450 | Status ResetAll(ServerContext* context, const EmptyRequest* request, |
| 451 | EmptyResponse* response) override { |
| 452 | std::lock_guard<std::recursive_mutex> lock(mutex_); |
| 453 | |
| 454 | Status status; |
| 455 | WorkerPauser wp; |
| 456 | |
| 457 | LOG(INFO) << "*** ResetAll requested ***"; |
| 458 | |
| 459 | status = ResetModules(context, request, response); |
| 460 | if (response->error().code() != 0) { |
| 461 | return status; |
| 462 | } |
| 463 | |
| 464 | status = ResetPorts(context, request, response); |
| 465 | if (response->error().code() != 0) { |
| 466 | return status; |
| 467 | } |
| 468 | |
| 469 | status = ResetTcs(context, request, response); |
| 470 | if (response->error().code() != 0) { |
| 471 | return status; |
| 472 | } |
| 473 | |
| 474 | status = ResetWorkers(context, request, response); |
| 475 | if (response->error().code() != 0) { |
| 476 | return status; |
| 477 | } |
| 478 | |
| 479 | return Status::OK; |
| 480 | } |
| 481 | |
| 482 | Status PauseAll(ServerContext*, const EmptyRequest*, |
| 483 | EmptyResponse*) override { |
| 484 | std::lock_guard<std::recursive_mutex> lock(mutex_); |
| 485 | |
| 486 | pause_all_workers(); |
| 487 | LOG(INFO) << "*** All workers have been paused ***"; |
| 488 | return Status::OK; |
| 489 | } |
| 490 | |
| 491 | Status PauseWorker(ServerContext*, const PauseWorkerRequest* req, |
| 492 | EmptyResponse*) override { |
| 493 | std::lock_guard<std::recursive_mutex> lock(mutex_); |
nothing calls this directly
no outgoing calls
no test coverage detected