| 358 | } |
| 359 | |
| 360 | Status GrpcServer::Start() { |
| 361 | mutex_lock l(mu_); |
| 362 | switch (state_) { |
| 363 | case NEW: { |
| 364 | master_thread_.reset( |
| 365 | env_->StartThread(ThreadOptions(), "TF_master_service", |
| 366 | [this] { master_service_->HandleRPCsLoop(); })); |
| 367 | worker_thread_.reset( |
| 368 | env_->StartThread(ThreadOptions(), "TF_worker_service", |
| 369 | [this] { worker_service_->HandleRPCsLoop(); })); |
| 370 | eager_thread_.reset( |
| 371 | env_->StartThread(ThreadOptions(), "TF_eager_service", |
| 372 | [this] { eager_service_->HandleRPCsLoop(); })); |
| 373 | state_ = STARTED; |
| 374 | LOG(INFO) << "Started server with target: " << target(); |
| 375 | return Status::OK(); |
| 376 | } |
| 377 | case STARTED: |
| 378 | LOG(INFO) << "Server already started (target: " << target() << ")"; |
| 379 | return Status::OK(); |
| 380 | case STOPPED: |
| 381 | return errors::FailedPrecondition("Server has stopped."); |
| 382 | default: |
| 383 | LOG(FATAL); |
| 384 | } |
| 385 | } |
| 386 | |
| 387 | Status GrpcServer::AddMasterEagerContextToEagerService( |
| 388 | const tensorflow::uint64 context_id, tensorflow::EagerContext* context) { |