| 1256 | } |
| 1257 | |
| 1258 | bool 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 | |
| 1292 | bool control_conn_t::process_catlog() |
| 1293 | { |
nothing calls this directly
no test coverage detected