Skip to content

Commit 79d6699

Browse files
committed
workshop/Workplace: move control channel initialization to WorkshopOperator::Start()
1 parent 3598a3e commit 79d6699

File tree

3 files changed

+18
-22
lines changed

3 files changed

+18
-22
lines changed

src/workshop/Operator.cxx

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -71,18 +71,12 @@ WorkshopOperator::WorkshopOperator(EventLoop &_event_loop,
7171
const std::shared_ptr<Plan> &_plan,
7272
UniqueFileDescriptor stderr_read_pipe,
7373
UniqueFileDescriptor _stderr_write_pipe,
74-
UniqueSocketDescriptor control_socket,
7574
size_t max_log_buffer,
7675
bool enable_journal) noexcept
7776
:event_loop(_event_loop),
7877
workplace(_workplace), job(_job), plan(_plan),
7978
logger(*this),
8079
timeout_event(event_loop, BIND_THIS_METHOD(OnTimeout)),
81-
control_channel(control_socket.IsDefined()
82-
? new WorkshopControlChannelServer(event_loop,
83-
std::move(control_socket),
84-
*this)
85-
: nullptr),
8680
stderr_write_pipe(std::move(_stderr_write_pipe)),
8781
log(event_loop, job.plan_name, job.id,
8882
std::move(stderr_read_pipe))
@@ -135,11 +129,25 @@ PrepareChildProcess(PreparedChildProcess &p, const char *plan_name,
135129
}
136130

137131
void
138-
WorkshopOperator::Start(FileDescriptor stderr_w,
139-
SocketDescriptor control_child)
132+
WorkshopOperator::Start(FileDescriptor stderr_w)
140133
{
141134
auto &spawn_service = workplace.GetSpawnService();
142135

136+
/* create control socket */
137+
138+
UniqueSocketDescriptor control_child;
139+
if (plan->control_channel) {
140+
UniqueSocketDescriptor control_parent;
141+
std::tie(control_parent, control_child) = CreateSocketPair(SOCK_SEQPACKET);
142+
143+
control_parent.SetNonBlocking();
144+
145+
WorkshopControlChannelHandler &handler = *this;
146+
control_channel = std::make_unique<WorkshopControlChannelServer>(event_loop,
147+
std::move(control_parent),
148+
handler);
149+
}
150+
143151
PreparedChildProcess p;
144152
PrepareChildProcess(p, job.plan_name.c_str(), *plan,
145153
stderr_w, control_child);

src/workshop/Operator.hxx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,6 @@ public:
9090
const std::shared_ptr<Plan> &_plan,
9191
UniqueFileDescriptor stderr_read_pipe,
9292
UniqueFileDescriptor _stderr_write_pipe,
93-
UniqueSocketDescriptor control_socket,
9493
size_t max_log_buffer,
9594
bool enable_journal) noexcept;
9695

@@ -108,8 +107,7 @@ public:
108107
return job.plan_name;
109108
}
110109

111-
void Start(FileDescriptor stderr_w,
112-
SocketDescriptor control_child);
110+
void Start(FileDescriptor stderr_w);
113111

114112
void SetPid(std::unique_ptr<ChildProcessHandle> &&_pid) noexcept {
115113
pid = std::move(_pid);

src/workshop/Workplace.cxx

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -96,15 +96,6 @@ WorkshopWorkplace::Start(EventLoop &event_loop, const WorkshopJob &job,
9696
auto [stderr_r, stderr_w] = CreatePipe();
9797
stderr_r.SetNonBlocking();
9898

99-
/* create control socket */
100-
101-
UniqueSocketDescriptor control_parent, control_child;
102-
if (plan->control_channel) {
103-
std::tie(control_parent, control_child) = CreateSocketPair(SOCK_SEQPACKET);
104-
105-
control_parent.SetNonBlocking();
106-
}
107-
10899
/* create operator object */
109100

110101
UniqueFileDescriptor stderr_w_for_operator =
@@ -115,10 +106,9 @@ WorkshopWorkplace::Start(EventLoop &event_loop, const WorkshopJob &job,
115106
auto o = std::make_unique<WorkshopOperator>(event_loop, *this, job, std::move(plan),
116107
std::move(stderr_r),
117108
std::move(stderr_w_for_operator),
118-
std::move(control_parent),
119109
max_log,
120110
enable_journal);
121-
o->Start(stderr_w, control_child);
111+
o->Start(stderr_w);
122112

123113
operators.push_back(*o.release());
124114
}

0 commit comments

Comments
 (0)