MCPcopy Create free account
hub / github.com/davmac314/dinit / process_set_trigger

Method process_set_trigger

src/control.cc:1258–1290  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1256}
1257
1258bool control_conn_t::process_set_trigger()
1259{
1260 // 1 byte packet type
1261 // handle: service
1262 // 1 byte trigger value
1263 constexpr int pkt_size = 2 + sizeof(handle_t);
1264
1265 if (rbuf.get_length() < pkt_size) {
1266 chklen = pkt_size;
1267 return true;
1268 }
1269
1270 handle_t handle;
1271 trigger_val_t trigger_val;
1272
1273 rbuf.extract(&handle, 1, sizeof(handle));
1274 rbuf.extract(&trigger_val, 1 + sizeof(handle), sizeof(trigger_val));
1275 rbuf.consume(pkt_size);
1276 chklen = 0;
1277
1278 service_record *service = find_service_for_key(handle);
1279 if (service == nullptr || service->get_type() != service_type_t::TRIGGERED) {
1280 char nak_rep[] = { (char)cp_rply::NAK };
1281 return queue_packet(nak_rep, 1);
1282 }
1283
1284 triggered_service *tservice = static_cast<triggered_service *>(service);
1285 tservice->set_trigger(trigger_val != 0);
1286 services->process_queues();
1287
1288 char ack_rep[] = { (char)cp_rply::ACK };
1289 return queue_packet(ack_rep, 1);
1290}
1291
1292bool control_conn_t::process_catlog()
1293{

Callers

nothing calls this directly

Calls 6

get_lengthMethod · 0.80
extractMethod · 0.80
consumeMethod · 0.80
get_typeMethod · 0.80
set_triggerMethod · 0.80
process_queuesMethod · 0.80

Tested by

no test coverage detected