Skip to content

Commit 946b12e

Browse files
authored
Merge pull request #10614 from gadfort/web-threads
web: update web threads when openroad threads change
2 parents 8a5493f + cb04caf commit 946b12e

4 files changed

Lines changed: 12 additions & 13 deletions

File tree

src/OpenRoad.cc

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -273,8 +273,7 @@ void OpenRoad::init(Tcl_Interp* tcl_interp,
273273
icewall_ = new pad::ICeWall(db_, logger_);
274274
dft_ = new dft::Dft(db_, sta_, logger_);
275275
example_ = new exa::Example(db_, logger_);
276-
web_server_
277-
= new web::WebServer(db_, sta_, logger_, tcl_interp, getThreadCount());
276+
web_server_ = new web::WebServer(db_, sta_, logger_, tcl_interp);
278277

279278
// Init components.
280279
Ord_Init(tcl_interp);
@@ -687,6 +686,9 @@ void OpenRoad::setThreadCount(int threads, bool print_info)
687686
if (global_router_ != nullptr) {
688687
global_router_->setNumThreads(threads_);
689688
}
689+
if (web_server_ != nullptr) {
690+
web_server_->setThreadCount(threads_);
691+
}
690692
}
691693

692694
void OpenRoad::setThreadCount(const char* threads, bool print_info)

src/web/include/web/web.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,7 @@ class WebServer
7272
WebServer(odb::dbDatabase* db,
7373
sta::dbSta* sta,
7474
utl::Logger* logger,
75-
Tcl_Interp* interp,
76-
int num_threads);
75+
Tcl_Interp* interp);
7776
~WebServer();
7877

7978
// Register the WebLogSink with the Logger so startup output is captured
@@ -84,6 +83,10 @@ class WebServer
8483
// the network threads racing the main thread's db construction.
8584
void initLogger();
8685

86+
// Sets the number of thread workers for the server's I/O context.
87+
// Must be called before serve() to take effect.
88+
void setThreadCount(int num_threads) { num_threads_ = num_threads; }
89+
8790
// Start the web server on the given port. Launches background
8891
// I/O threads and returns immediately. A second call is a no-op if
8992
// the server is already running.

src/web/src/web.cpp

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -917,13 +917,8 @@ void Listener::on_accept(beast::error_code ec, Tcp::socket socket)
917917
WebServer::WebServer(odb::dbDatabase* db,
918918
sta::dbSta* sta,
919919
utl::Logger* logger,
920-
Tcl_Interp* interp,
921-
int num_threads)
922-
: db_(db),
923-
sta_(sta),
924-
logger_(logger),
925-
interp_(interp),
926-
num_threads_(num_threads)
920+
Tcl_Interp* interp)
921+
: db_(db), sta_(sta), logger_(logger), interp_(interp), num_threads_(1)
927922
{
928923
}
929924

src/web/test/cpp/TestSaveReport.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,7 @@ class SaveReportTest : public tst::Nangate45Fixture
8585
WebServer server(getDb(),
8686
/*sta=*/nullptr,
8787
getLogger(),
88-
/*interp=*/nullptr,
89-
/*num_threads=*/1);
88+
/*interp=*/nullptr);
9089
server.saveReport(path, max_setup, max_hold);
9190
}
9291

0 commit comments

Comments
 (0)