1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
/*
* Copyright 2014 Canonical Ltd.
* Copyright 2024 Guido Berhoerster <guido+ubports@berhoerster.name>
*
* Authors:
* Manuel de la Pena: manuel.delapena@canonical.com
*
* This file is part of lomiri-download-manager.
*
* lomiri-download-manager 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; version 3.
*
* lomiri-download-manager 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 <http://www.gnu.org/licenses/>.
*/
// Package ldm provides a go interface to work with the lomiri download manager
package ldm
import (
"github.com/godbus/dbus/v5"
)
// Progress provides how much progress has been performed in a download that was
// already started.
type Progress struct {
Received uint64
Total uint64
}
// interface added to simplify testing
type proxy interface {
Call(method string, flags dbus.Flags, args ...interface{}) *dbus.Call
}
var readCallArgs = func(c *dbus.Call, args ...interface{}) error {
return c.Store(args...)
}
var readSignalArgs = func(s *dbus.Signal, args ...interface{}) error {
return dbus.Store(s.Body, args...)
}
func getUint64Value(p proxy, method string) (value uint64, err error) {
c := p.Call(method, 0)
if c.Err != nil {
err = c.Err
return
}
err = readCallArgs(c, &value)
return
}
func setUint64Value(p proxy, method string, value uint64) error {
return p.Call(method, 0, value).Err
}
func setStringValue(p proxy, method, value string) error {
return p.Call(method, 0, value).Err
}
func getBoolValue(p proxy, method string) (value bool, err error) {
c := p.Call(method, 0)
if c.Err != nil {
err = c.Err
return
}
err = readCallArgs(c, &value)
return
}
func getMetadataMap(p proxy, method string) (value map[string]string, err error) {
c := p.Call(method, 0)
if c.Err != nil {
err = c.Err
return
}
err = readCallArgs(c, &value)
return
}
|