From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2.migadu.com ([2001:41d0:303:e16b::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms13.migadu.com with LMTPS id yE3gDnWagWZAMwEAe85BDQ:P1 (envelope-from ) for ; Sun, 30 Jun 2024 17:48:37 +0000 Received: from aspmx1.migadu.com ([2001:41d0:303:e16b::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2.migadu.com with LMTPS id yE3gDnWagWZAMwEAe85BDQ (envelope-from ) for ; Sun, 30 Jun 2024 19:48:37 +0200 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=EZAk30vz; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1719769717; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post:dkim-signature; bh=Hwaywl1ZCAaDWmTGBcQXO4dZx57kOI/s9jlbco88biM=; b=Z3sAErN9pmLH2dtCdhCbzUwdR6MyMgtyxvJC/zAHCGd/GmCaOsHBtgsQbQmYPKGB5RMAr5 IMz9f9LsU7C/uRZZlsgzP8uZXBmvA6D6Ssxp50EcZRqZg6sBwKBhcTTAcmKu2Ja5TbKh24 NxFOMx9TAFmD1J1I6Tta+LBXVuQNNfJA7hPU9ia0VEcRq6Xo4SPszKB1d3UrdaTjXbqdDx Nz6H+abYm6OX/OQl1GMGh3DensmCP5wjVAJ6rCbj8sXqUIBzYrwtauFTUFId7JgOQCfZbX kA1L46E2eUqsG/2i0bNzK9dnkk+ph6OqVh9ZiqCLrEcGmKM+o3uPGxrAIjzneg== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=EZAk30vz; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=key1; d=yhetil.org; t=1719769717; a=rsa-sha256; cv=none; b=AczdQ3kQmIeO9c2md1ULcVqXVd2XFqm5skutKdAcoTClMB2xENmZIMYKleKDYPXVA26Ueg Ixx31o5NEDDoUCBV1UCdKu/T9gDfG2/7E4WY63yCSbRJ8M4E/+NAw0MjAdsf9CxVAaUea0 bJL3LICr6EKne73243V/eS69nnMYuVsUuYwhem6f/75W2X6UM2dtc7aQokd1r7zU20Ue3c dycaUiE0cbzoz+mcrd06nyI0fsRp8ZsBOsdkZ6jauGYvXLZAQ+/Hnrmf4+04TiAvvAjui7 FZ3VnrQTOK8+UAeWaMOvRc7AENdBChZUXNrTfwclmHctWf/02KqS1FlBtXj4PQ== Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 03F403CCEE for ; Sun, 30 Jun 2024 19:48:37 +0200 (CEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sNyeQ-0001b7-8o; Sun, 30 Jun 2024 13:47:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sNxEC-0005Pp-Kq for guix-devel@gnu.org; Sun, 30 Jun 2024 12:16:37 -0400 Received: from mail-ed1-x532.google.com ([2a00:1450:4864:20::532]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1sNxEA-0005L2-Si for guix-devel@gnu.org; Sun, 30 Jun 2024 12:16:36 -0400 Received: by mail-ed1-x532.google.com with SMTP id 4fb4d7f45d1cf-57d2fc03740so2429107a12.0 for ; Sun, 30 Jun 2024 09:16:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1719764193; x=1720368993; darn=gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Hwaywl1ZCAaDWmTGBcQXO4dZx57kOI/s9jlbco88biM=; b=EZAk30vz5KIqVV5zqrvdJLxQoUt4TuhdYDHGo4iYFbGUXGSOr/gIhpX8l191D03RW6 n8k8cUk+ouqDoi9Z3hpj5sFaP5ddYfluD8XslLhLakMgKtbdconlgEBFuWbkjZQOjmNl ybPeMTjpNxL/yLOXBSOhhdBNVmWLAUJGQaCULdcTi4jUXnBTGzjYXgVFqIHeDi1mW0fa YH/MgH989EXNwh7rE2l+uuwdHUgR1zaRJKeDu4Lr6//8CQmZyLUrbkbBG6RF/YEH3WLV YEdI93wO35sQaNck8AU9ivt8fz7IJ8XwTWzna5XAWfdPCt0sWZ7QdbXIYAWdjhh0cv4h 6vLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719764193; x=1720368993; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Hwaywl1ZCAaDWmTGBcQXO4dZx57kOI/s9jlbco88biM=; b=keXFPE1Gat2f7ECjoj7XA55HyHwPDeHdKFhaviDRlWV0KLLdcuzJyeTyYkWxf57vMf tSsh2bPHiRwsWdx0uajdaZcVbvYFrpg3hKU/4lm4y8CQ6DfSUd+NIa0o3I8pLddL1F3L DFF+PEoA8aEde6CbLpeoid8ljvx2uYR8wF0YT+ujLqYTYQUsQK5BX3XKvW34/xmrc4fS jQOxCOUXXpdN/TDyzmZmIR2xjtMXyDOnrrD5MCYRP3DVWgfUEKsTYShBOYS0/svM38zB 0DVpgNZMjhFwi5oK3OasrVyXytPIyGtJn4dkQexKJi7pCUL92PEDirRzFKyS6QW9klWO BpJQ== X-Gm-Message-State: AOJu0YyaI3QTxFD3n+PvzYUpSJu+5fN/kyuwX+1pnS+DOIlQzJ+ZfdNo MnRIRUn7ULVOEFKFSv/4xptfNocNDVw9LnFcYNPUWvWNMNe2qwiqUCodHg== X-Google-Smtp-Source: AGHT+IHCVEEmok8WugzFr5m+2DBkJuG8obNw1Wtq0f+PrvVj0MNJ0Nn0PuRhbJB+6a+FYl0bs44X6g== X-Received: by 2002:a17:907:104b:b0:a72:65e5:3e7 with SMTP id a640c23a62f3a-a7514441510mr211341366b.55.1719764193273; Sun, 30 Jun 2024 09:16:33 -0700 (PDT) Received: from lelap.lan (2a00-1f40-b161-2920--477.pool6.panelnet.hu. [2a00:1f40:b161:2920::477]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a72aaf1bc08sm252509666b.28.2024.06.30.09.16.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Jun 2024 09:16:33 -0700 (PDT) From: attila.lendvai@gmail.com X-Google-Original-From: attila@lendvai.name To: guix-devel@gnu.org Cc: Attila Lendvai Subject: [PATCH shepherd] service: Factor out SEND-TO-SERVICE-CONTROLLER. Date: Sun, 30 Jun 2024 18:13:07 +0200 Message-ID: <20240630161303.22507-10-attila@lendvai.name> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240630161303.22507-2-attila@lendvai.name> References: <20240630161303.22507-2-attila@lendvai.name> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=2a00:1450:4864:20::532; envelope-from=attila.lendvai@gmail.com; helo=mail-ed1-x532.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Sun, 30 Jun 2024 13:47:43 -0400 X-BeenThere: guix-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+larch=yhetil.org@gnu.org Sender: guix-devel-bounces+larch=yhetil.org@gnu.org X-Migadu-Country: US X-Migadu-Flow: FLOW_IN X-Migadu-Queue-Id: 03F403CCEE X-Migadu-Scanner: mx13.migadu.com X-Migadu-Spam-Score: -9.22 X-Spam-Score: -9.22 X-TUID: Ay0odRet/0nO From: Attila Lendvai * modules/shepherd/service.scm (service-running-value): New function. (query-service-controller), (enable-service), (disable-service), (record-service-respawn-time), (start-service), (stop-service), (service-registry), (handle-service-termination): Use it. --- modules/shepherd/service.scm | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/modules/shepherd/service.scm b/modules/shepherd/service.scm index b5f3e23..ae9fbed 100644 --- a/modules/shepherd/service.scm +++ b/modules/shepherd/service.scm @@ -776,11 +776,15 @@ wire." "Return the \"canonical\" name of @var{service}." (car (service-provision service))) +(define (send-to-service-controller service message) + "Send @var{message} to the service's control channel of @var{message}." + (put-message (service-control service) message)) + (define (query-service-controller service message) "Send @var{message} to the service's control channel of @var{message} and wait for its reply." (let ((reply (make-channel))) - (put-message (service-control service) (list message reply)) + (send-to-service-controller service (list message reply)) (get-message reply))) (define service-running-value @@ -836,11 +840,11 @@ wait for its reply." (define (enable-service service) "Enable @var{service}." - (put-message (service-control service) 'enable)) + (send-to-service-controller service 'enable)) (define (disable-service service) "Disable @var{service}." - (put-message (service-control service) 'disable)) + (send-to-service-controller service 'disable)) (define (register-service-logger service logger) "Register @var{logger}, a value as returned by @@ -850,7 +854,7 @@ wait for its reply." (define (record-service-respawn-time service) "Record the current time as the last respawn time for @var{service}." - (put-message (service-control service) 'record-respawn-time)) + (send-to-service-controller service 'record-respawn-time)) (define (service-running? service) "Return true if @var{service} is not stopped." @@ -949,7 +953,7 @@ found in the service registry." #f) ;; Start the service itself. (let ((reply (make-channel))) - (put-message (service-control service) `(start ,reply)) + (send-to-service-controller service `(start ,reply)) (match (get-message reply) (#f ;; We lost the race: SERVICE is already running. @@ -1008,7 +1012,7 @@ in a list." '()))) ;; Stop the service itself. (let ((reply (make-channel))) - (put-message (service-control service) `(stop ,reply)) + (send-to-service-controller service `(stop ,reply)) (match (get-message reply) (#f #f) @@ -1184,7 +1188,7 @@ requests arriving on @var{channel}." ;; Terminate the controller of each of SERVICES and return REGISTERED ;; minus SERVICES. (for-each (lambda (service) - (put-message (service-control service) 'terminate)) + (send-to-service-controller service 'terminate)) services) (vhash-fold (lambda (name service result) (if (memq service services) @@ -1211,8 +1215,7 @@ requests arriving on @var{channel}." (loop (register service))) ((_ . old) (let ((reply (make-channel))) - (put-message (service-control old) - `(replace-if-running ,service ,reply)) + (send-to-service-controller old `(replace-if-running ,service ,reply)) (match (get-message reply) (#t (loop registered)) (#f @@ -2603,8 +2606,7 @@ been sent, send it @code{SIGKILL}." @var{service}; @var{status} is the process's exit status as returned by @code{waitpid}. This procedure is called right after the process has terminated." - (put-message (service-control service) - `(handle-termination ,pid ,status))) + (send-to-service-controller service `(handle-termination ,pid ,status))) (define (respawn-service serv) "Respawn a service that has stopped running unexpectedly. If we have -- 2.45.2