X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=frontend%2Fconn.go;h=01486ff00869e413d3e11174c298e17aa748f144;hb=HEAD;hp=10f7c7b5a2dd680ab158ea705e5250b2934dcce7;hpb=5bbdbf913be3152f60d556e4b20e1ddb2d66d0c0;p=safcm%2Fsafcm.git diff --git a/frontend/conn.go b/frontend/conn.go index 10f7c7b..cad3a6d 100644 --- a/frontend/conn.go +++ b/frontend/conn.go @@ -1,23 +1,13 @@ // Frontend: Connection functions for programs using the safcm library -// Copyright (C) 2021 Simon Ruderich -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . +// SPDX-License-Identifier: GPL-3.0-or-later +// Copyright (C) 2021-2024 Simon Ruderich package frontend import ( + "fmt" + "ruderich.org/simon/safcm" "ruderich.org/simon/safcm/rpc" ) @@ -45,3 +35,37 @@ func (l *Loop) SendRecv(host Host, conn *rpc.Conn, msg safcm.Msg) ( return x, nil } } + +// HostInfoMsg sends a MsgInfoReq for host via conn and returns the resulting +// MsgInfoResp. +func (l *Loop) HostInfoMsg(host Host, conn *rpc.Conn, req safcm.MsgInfoReq) ( + safcm.MsgInfoResp, error) { + + var empty safcm.MsgInfoResp + x, err := l.SendRecv(host, conn, req) + if err != nil { + return empty, err + } + resp, ok := x.(safcm.MsgInfoResp) + if !ok { + return empty, fmt.Errorf("unexpected response %v", x) + } + return resp, nil +} + +// HostSyncMsg sends a MsgSyncReq for host via conn and returns the resulting +// MsgSyncResp. +func (l *Loop) HostSyncMsg(host Host, conn *rpc.Conn, req safcm.MsgSyncReq) ( + safcm.MsgSyncResp, error) { + + var empty safcm.MsgSyncResp + x, err := l.SendRecv(host, conn, req) + if err != nil { + return empty, err + } + resp, ok := x.(safcm.MsgSyncResp) + if !ok { + return empty, fmt.Errorf("unexpected response %v", x) + } + return resp, nil +}