X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;ds=sidebyside;f=frontend%2Fconn.go;h=5755290bc78aac9fb07a01ba3743565290541d25;hb=315c112af5866ad3689bf4940a1890b6310f98ac;hp=10f7c7b5a2dd680ab158ea705e5250b2934dcce7;hpb=5bbdbf913be3152f60d556e4b20e1ddb2d66d0c0;p=safcm%2Fsafcm.git diff --git a/frontend/conn.go b/frontend/conn.go index 10f7c7b..5755290 100644 --- a/frontend/conn.go +++ b/frontend/conn.go @@ -1,6 +1,6 @@ // Frontend: Connection functions for programs using the safcm library -// Copyright (C) 2021 Simon Ruderich +// Copyright (C) 2021-2023 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 @@ -18,6 +18,8 @@ package frontend import ( + "fmt" + "ruderich.org/simon/safcm" "ruderich.org/simon/safcm/rpc" ) @@ -45,3 +47,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 +}