37 lines
866 B
Go
37 lines
866 B
Go
|
package control
|
||
|
|
||
|
import "github.com/cretz/bine/util"
|
||
|
|
||
|
func (c *Conn) Signal(signal string) error {
|
||
|
_, err := c.SendRequest("SIGNAL %v", signal)
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
type MappedAddress struct {
|
||
|
Old string
|
||
|
New string
|
||
|
}
|
||
|
|
||
|
func NewMappedAddress(old string, new string) *MappedAddress {
|
||
|
return &MappedAddress{Old: old, New: new}
|
||
|
}
|
||
|
|
||
|
func (c *Conn) MapAddresses(addresses []*MappedAddress) ([]*MappedAddress, error) {
|
||
|
cmd := "MAPADDRESS"
|
||
|
for _, address := range addresses {
|
||
|
cmd += " " + address.New + "=" + address.Old
|
||
|
}
|
||
|
resp, err := c.SendRequest(cmd)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
data := resp.DataWithReply()
|
||
|
ret := make([]*MappedAddress, 0, len(data))
|
||
|
for _, address := range data {
|
||
|
mappedAddress := &MappedAddress{}
|
||
|
mappedAddress.Old, mappedAddress.New, _ = util.PartitionString(address, '=')
|
||
|
ret = append(ret, mappedAddress)
|
||
|
}
|
||
|
return ret, nil
|
||
|
}
|