Remove all panicking from methods
This commit is contained in:
parent
2a9ef418e6
commit
744dfb200e
5 changed files with 63 additions and 51 deletions
|
@ -43,8 +43,8 @@ type Connection interface {
|
||||||
// GetSettings gets the settings maps describing this network configuration.
|
// GetSettings gets the settings maps describing this network configuration.
|
||||||
// This will never include any secrets required for connection to the
|
// This will never include any secrets required for connection to the
|
||||||
// network, as those are often protected. Secrets must be requested
|
// network, as those are often protected. Secrets must be requested
|
||||||
// separately using the GetSecrets() callWithReturnAndPanic.
|
// separately using the GetSecrets() method.
|
||||||
GetSettings() ConnectionSettings
|
GetSettings() (ConnectionSettings, error)
|
||||||
|
|
||||||
// Clear the secrets belonging to this network connection profile.
|
// Clear the secrets belonging to this network connection profile.
|
||||||
ClearSecrets() error
|
ClearSecrets() error
|
||||||
|
@ -89,9 +89,13 @@ func (c *connection) Delete() error {
|
||||||
return c.call(ConnectionDelete)
|
return c.call(ConnectionDelete)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *connection) GetSettings() ConnectionSettings {
|
func (c *connection) GetSettings() (ConnectionSettings, error) {
|
||||||
var settings map[string]map[string]dbus.Variant
|
var settings map[string]map[string]dbus.Variant
|
||||||
c.callWithReturnAndPanic(&settings, ConnectionGetSettings)
|
err := c.callWithReturn(&settings, ConnectionGetSettings)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
rv := make(ConnectionSettings)
|
rv := make(ConnectionSettings)
|
||||||
|
|
||||||
|
@ -103,7 +107,7 @@ func (c *connection) GetSettings() ConnectionSettings {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return rv
|
return rv, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *connection) ClearSecrets() error {
|
func (c *connection) ClearSecrets() error {
|
||||||
|
@ -127,5 +131,6 @@ func (c *connection) GetPropertyFilename() (string, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *connection) MarshalJSON() ([]byte, error) {
|
func (c *connection) MarshalJSON() ([]byte, error) {
|
||||||
return json.Marshal(c.GetSettings())
|
s, _ := c.GetSettings()
|
||||||
|
return json.Marshal(s)
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ type DeviceWireless interface {
|
||||||
// Note that this list does not include access points which hide their SSID.
|
// Note that this list does not include access points which hide their SSID.
|
||||||
// To retrieve a list of all access points (including hidden ones) use the
|
// To retrieve a list of all access points (including hidden ones) use the
|
||||||
// GetAllAccessPoints() method.
|
// GetAllAccessPoints() method.
|
||||||
GetAccessPoints() []AccessPoint
|
GetAccessPoints() ([]AccessPoint, error)
|
||||||
|
|
||||||
RequestScan()
|
RequestScan()
|
||||||
}
|
}
|
||||||
|
@ -35,21 +35,24 @@ type deviceWireless struct {
|
||||||
device
|
device
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *deviceWireless) GetAccessPoints() []AccessPoint {
|
func (d *deviceWireless) GetAccessPoints() ([]AccessPoint, error) {
|
||||||
var apPaths []dbus.ObjectPath
|
var apPaths []dbus.ObjectPath
|
||||||
|
err := d.callWithReturn(&apPaths, DeviceWirelessGetAccessPoints)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
d.callWithReturnAndPanic(&apPaths, DeviceWirelessGetAccessPoints)
|
|
||||||
aps := make([]AccessPoint, len(apPaths))
|
aps := make([]AccessPoint, len(apPaths))
|
||||||
|
|
||||||
var err error
|
|
||||||
for i, path := range apPaths {
|
for i, path := range apPaths {
|
||||||
aps[i], err = NewAccessPoint(path)
|
aps[i], err = NewAccessPoint(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
return aps, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return aps
|
return aps, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *deviceWireless) RequestScan() {
|
func (d *deviceWireless) RequestScan() {
|
||||||
|
@ -59,6 +62,6 @@ func (d *deviceWireless) RequestScan() {
|
||||||
|
|
||||||
func (d *deviceWireless) MarshalJSON() ([]byte, error) {
|
func (d *deviceWireless) MarshalJSON() ([]byte, error) {
|
||||||
m := d.device.marshalMap()
|
m := d.device.marshalMap()
|
||||||
m["AccessPoints"] = d.GetAccessPoints()
|
m["AccessPoints"], _ = d.GetAccessPoints()
|
||||||
return json.Marshal(m)
|
return json.Marshal(m)
|
||||||
}
|
}
|
||||||
|
|
|
@ -229,14 +229,17 @@ func (nm *networkManager) Reload(flags uint32) error {
|
||||||
|
|
||||||
func (nm *networkManager) GetDevices() (devices []Device, err error) {
|
func (nm *networkManager) GetDevices() (devices []Device, err error) {
|
||||||
var devicePaths []dbus.ObjectPath
|
var devicePaths []dbus.ObjectPath
|
||||||
|
err = nm.callWithReturn(&devicePaths, NetworkManagerGetDevices)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
nm.callWithReturnAndPanic(&devicePaths, NetworkManagerGetDevices)
|
|
||||||
devices = make([]Device, len(devicePaths))
|
devices = make([]Device, len(devicePaths))
|
||||||
|
|
||||||
for i, path := range devicePaths {
|
for i, path := range devicePaths {
|
||||||
devices[i], err = DeviceFactory(path)
|
devices[i], err = DeviceFactory(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -246,13 +249,17 @@ func (nm *networkManager) GetDevices() (devices []Device, err error) {
|
||||||
func (nm *networkManager) GetAllDevices() (devices []Device, err error) {
|
func (nm *networkManager) GetAllDevices() (devices []Device, err error) {
|
||||||
var devicePaths []dbus.ObjectPath
|
var devicePaths []dbus.ObjectPath
|
||||||
|
|
||||||
nm.callWithReturnAndPanic(&devicePaths, NetworkManagerGetAllDevices)
|
err = nm.callWithReturn(&devicePaths, NetworkManagerGetAllDevices)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
devices = make([]Device, len(devicePaths))
|
devices = make([]Device, len(devicePaths))
|
||||||
|
|
||||||
for i, path := range devicePaths {
|
for i, path := range devicePaths {
|
||||||
devices[i], err = DeviceFactory(path)
|
devices[i], err = DeviceFactory(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -277,11 +284,14 @@ func (nm *networkManager) GetDeviceByIpIface(interfaceId string) (device Device,
|
||||||
|
|
||||||
func (nm *networkManager) ActivateConnection(c Connection, d Device) (ac ActiveConnection, err error) {
|
func (nm *networkManager) ActivateConnection(c Connection, d Device) (ac ActiveConnection, err error) {
|
||||||
var opath dbus.ObjectPath
|
var opath dbus.ObjectPath
|
||||||
nm.callWithReturnAndPanic(&opath, NetworkManagerActivateConnection, c.GetPath(), d.GetPath(), dbus.ObjectPath("/"))
|
err = nm.callWithReturn(&opath, NetworkManagerActivateConnection, c.GetPath(), d.GetPath(), dbus.ObjectPath("/"))
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
ac, err = NewActiveConnection(opath)
|
ac, err = NewActiveConnection(opath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
53
Settings.go
53
Settings.go
|
@ -25,16 +25,16 @@ const (
|
||||||
|
|
||||||
type Settings interface {
|
type Settings interface {
|
||||||
// ListConnections gets list the saved network connections known to NetworkManager
|
// ListConnections gets list the saved network connections known to NetworkManager
|
||||||
ListConnections() []Connection
|
ListConnections() ([]Connection, error)
|
||||||
|
|
||||||
// AddConnection callWithReturnAndPanic new connection and save it to disk.
|
// AddConnection adds new connection and save it to disk.
|
||||||
AddConnection(settings ConnectionSettings) Connection
|
AddConnection(settings ConnectionSettings) (Connection, error)
|
||||||
|
|
||||||
// Add new connection but do not save it to disk immediately. This operation does not start the network connection unless (1) device is idle and able to connect to the network described by the new connection, and (2) the connection is allowed to be started automatically. Use the 'Save' method on the connection to save these changes to disk. Note that unsaved changes will be lost if the connection is reloaded from disk (either automatically on file change or due to an explicit ReloadConnections call).
|
// Add new connection but do not save it to disk immediately. This operation does not start the network connection unless (1) device is idle and able to connect to the network described by the new connection, and (2) the connection is allowed to be started automatically. Use the 'Save' method on the connection to save these changes to disk. Note that unsaved changes will be lost if the connection is reloaded from disk (either automatically on file change or due to an explicit ReloadConnections call).
|
||||||
AddConnectionUnsaved(settings ConnectionSettings) Connection
|
AddConnectionUnsaved(settings ConnectionSettings) (Connection, error)
|
||||||
|
|
||||||
// Save the hostname to persistent configuration.
|
// Save the hostname to persistent configuration.
|
||||||
SaveHostname(hostname string)
|
SaveHostname(hostname string) error
|
||||||
|
|
||||||
// If true, adding and modifying connections is supported.
|
// If true, adding and modifying connections is supported.
|
||||||
GetPropertyCanModify() (bool, error)
|
GetPropertyCanModify() (bool, error)
|
||||||
|
@ -52,48 +52,49 @@ type settings struct {
|
||||||
dbusBase
|
dbusBase
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *settings) ListConnections() []Connection {
|
func (s *settings) ListConnections() ([]Connection, error) {
|
||||||
var connectionPaths []dbus.ObjectPath
|
var connectionPaths []dbus.ObjectPath
|
||||||
|
|
||||||
s.callWithReturnAndPanic(&connectionPaths, SettingsListConnections)
|
err := s.callWithReturn(&connectionPaths, SettingsListConnections)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
connections := make([]Connection, len(connectionPaths))
|
connections := make([]Connection, len(connectionPaths))
|
||||||
|
|
||||||
var err error
|
|
||||||
for i, path := range connectionPaths {
|
for i, path := range connectionPaths {
|
||||||
connections[i], err = NewConnection(path)
|
connections[i], err = NewConnection(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
return connections, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return connections
|
return connections, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *settings) AddConnection(settings ConnectionSettings) Connection {
|
func (s *settings) AddConnection(settings ConnectionSettings) (Connection, error) {
|
||||||
var path dbus.ObjectPath
|
var path dbus.ObjectPath
|
||||||
s.callWithReturnAndPanic(&path, SettingsAddConnection, settings)
|
err := s.callWithReturn(&path, SettingsAddConnection, settings)
|
||||||
con, err := NewConnection(path)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
return nil, err
|
||||||
}
|
|
||||||
return con
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *settings) AddConnectionUnsaved(settings ConnectionSettings) Connection {
|
return NewConnection(path)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *settings) AddConnectionUnsaved(settings ConnectionSettings) (Connection, error) {
|
||||||
var path dbus.ObjectPath
|
var path dbus.ObjectPath
|
||||||
s.callWithReturnAndPanic(&path, SettingsAddConnectionUnsaved, settings)
|
err := s.callWithReturn(&path, SettingsAddConnectionUnsaved, settings)
|
||||||
con, err := NewConnection(path)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
return nil, err
|
||||||
}
|
|
||||||
return con
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *settings) SaveHostname(hostname string) {
|
return NewConnection(path)
|
||||||
err := s.call(SettingsSaveHostname, hostname)
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *settings) SaveHostname(hostname string) error {
|
||||||
|
return s.call(SettingsSaveHostname, hostname)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *settings) GetPropertyHostname() (string, error) {
|
func (s *settings) GetPropertyHostname() (string, error) {
|
||||||
|
|
7
utils.go
7
utils.go
|
@ -34,13 +34,6 @@ func (d *dbusBase) call(method string, args ...interface{}) error {
|
||||||
return d.obj.Call(method, 0, args...).Err
|
return d.obj.Call(method, 0, args...).Err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *dbusBase) callWithReturnAndPanic(ret interface{}, method string, args ...interface{}) {
|
|
||||||
err := d.callWithReturn(ret, method, args...)
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (d *dbusBase) callWithReturn(ret interface{}, method string, args ...interface{}) error {
|
func (d *dbusBase) callWithReturn(ret interface{}, method string, args ...interface{}) error {
|
||||||
return d.obj.Call(method, 0, args...).Store(ret)
|
return d.obj.Call(method, 0, args...).Store(ret)
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue