From f67cdadd137b1646afb07dd8e1d576bef0f1fb38 Mon Sep 17 00:00:00 2001
From: ale <ale@incal.net>
Date: Sun, 26 Jul 2015 08:59:19 +0100
Subject: [PATCH] golint fixes

---
 api.go         | 51 ++++++++++++++++++++++++++++++++++----------------
 etcd_client.go |  8 +++++---
 2 files changed, 40 insertions(+), 19 deletions(-)

diff --git a/api.go b/api.go
index 21b38d57..6dd8c9ad 100644
--- a/api.go
+++ b/api.go
@@ -14,12 +14,12 @@ import (
 )
 
 const (
-	// Path to the mount configuration in etcd. This should never
-	// change, upgrades to the configuration format should be
-	// backwards-compatible.
+	// MountPrefix stores the path to the mount configuration in
+	// etcd. This should never change between releases, upgrades
+	// to the configuration format should be backwards-compatible.
 	MountPrefix = "/icecast/mounts/"
 
-	// Path for the cluster runtime data. Whenever the format of
+	// Paths for the cluster runtime data. Whenever the format of
 	// this data changes, the ABIVersion should be increased. A
 	// rolling restart of the cluster will then seamlessly cause a
 	// transition to the new consensus (the cluster will be
@@ -33,13 +33,16 @@ const (
 )
 
 var (
+	// IcecastPort is the port that the Icecast server will listen
+	// on. Since we fully manage the system-wide Icecast instance,
+	// there's not much point in making this configurable.
 	IcecastPort = 8000
 
 	ErrIsDirectory = errors.New("key is a directory")
 	ErrIsFile      = errors.New("key is a file")
 )
 
-// Encoding parameters used to re-encode a stream.
+// EncodingParams used to re-encode a stream.
 type EncodingParams struct {
 	// Path to the source mountpoint.
 	SourceName string
@@ -55,7 +58,8 @@ type EncodingParams struct {
 	Quality    float64
 }
 
-// NewEncodingParams sets some default values.
+// NewEncodingParams creates an EncodingParams object with the right
+// default values.
 func NewEncodingParams() *EncodingParams {
 	return &EncodingParams{
 		SampleRate: 44100,
@@ -85,6 +89,8 @@ func (p *EncodingParams) String() string {
 	return strings.Join(out, ", ")
 }
 
+// Valid returns true if the EncodingParams seem to make sense. We try
+// to be as close to the liquidsoap capabilities as possible.
 func (p *EncodingParams) Valid() error {
 	switch p.Format {
 	case "mp3", "mp3.cbr", "mp3.abr", "vorbis.cbr", "vorbis.abr":
@@ -120,7 +126,7 @@ func (p *EncodingParams) Valid() error {
 	return nil
 }
 
-// A mountpoint for a stream.
+// Mount stores the configuration for a stream (mount, in Icecast lingo).
 type Mount struct {
 	// Name (path to the mountpoint).
 	Name string
@@ -145,6 +151,8 @@ type Mount struct {
 	Transcoding *EncodingParams
 }
 
+// Valid performs a consistency check and returns true if the
+// configuration for the stream is correct.
 func (m *Mount) Valid() error {
 	if !strings.HasPrefix(m.Name, "/") {
 		return errors.New("name does not start with a slash")
@@ -166,14 +174,18 @@ func (m *Mount) Valid() error {
 	return nil
 }
 
+// Equal returns true if the two mounts have the same configuration.
 func (m *Mount) Equal(other *Mount) bool {
 	return (m.Name == other.Name) && (m.Username == other.Username) && (m.Password == other.Password) && (m.RelayUrl == other.RelayUrl) && (m.Fallback == other.Fallback) && ((m.Transcoding == nil && other.Transcoding == nil) || (m.Transcoding != nil && other.Transcoding != nil && *m.Transcoding == *other.Transcoding))
 }
 
+// IsRelay returns true if the stream is configured as a relay of an
+// external source.
 func (m *Mount) IsRelay() bool {
 	return m.RelayUrl != ""
 }
 
+// HasTranscoder returns true if the stream has transcoding sub-streams.
 func (m *Mount) HasTranscoder() bool {
 	return m.Transcoding != nil
 }
@@ -183,17 +195,22 @@ func mountEtcdPath(mountName string) string {
 	return MountPrefix + mountName[1:]
 }
 
-// Return the Icecast mount path for the given public mount name.
+// MountNameToIcecastPath returns the Icecast mount path for the given
+// public mount name.
 func MountNameToIcecastPath(mountName string) string {
 	return IcecastMountPrefix + mountName
 }
 
-// Return the public mount name from an Icecast mount path.
+// IcecastPathToMountName returns the public mount name from an
+// Icecast mount path. If 'path' does not start with
+// IcecastMountPrefix, it is returned unchanged (though arguably this
+// should be an error).
 func IcecastPathToMountName(path string) string {
 	return strings.TrimPrefix(path, IcecastMountPrefix)
 }
 
-// Status of a mount on an individual Icecast server.
+// IcecastMountStatus has information about a mount on an individual
+// Icecast server, as provided by Icecast itself.
 type IcecastMountStatus struct {
 	Name         string
 	Listeners    int
@@ -204,7 +221,8 @@ type IcecastMountStatus struct {
 	FrameRate    float64
 }
 
-// Status of a node. This is used to report load and stream status.
+// NodeStatus stores runtime information about an autoradio node. This
+// is used to report load and stream status.
 type NodeStatus struct {
 	// Short name of this node.
 	Name string
@@ -278,6 +296,7 @@ type Client struct {
 	activeNodesCache *nodesCache
 }
 
+// NewClient creates and returns a new Client.
 func NewClient(client EtcdClient) *Client {
 	return &Client{client, newNodesCache()}
 }
@@ -341,15 +360,15 @@ func (r *Client) ListMounts() ([]*Mount, error) {
 	return result, nil
 }
 
-// Location data for the master node. Having the IP address here saves
-// another round-trip to etcd to retrieve the node info in the most
-// common case.
+// MasterNodeInfo stores location data for the master node. Having the
+// IP address here saves another round-trip to etcd to retrieve the
+// node info in the most common case.
 type MasterNodeInfo struct {
 	Name string
 	IP   []net.IP
 }
 
-// GetMasterAddr returns the address of the current master server.
+// GetMasterInfo returns the address of the current master server.
 func (r *Client) GetMasterInfo() (*MasterNodeInfo, error) {
 	response, err := r.client.Get(MasterElectionPath, false, false)
 	if err != nil || response.Node == nil {
@@ -365,7 +384,6 @@ func (r *Client) GetMasterInfo() (*MasterNodeInfo, error) {
 	return &m, nil
 }
 
-// GetNodes returns the list of active cluster nodes.
 func (r *Client) doGetNodes() ([]*NodeStatus, error) {
 	response, err := r.client.Get(NodePrefix, false, false)
 	if err != nil || response.Node == nil {
@@ -384,6 +402,7 @@ func (r *Client) doGetNodes() ([]*NodeStatus, error) {
 	return result, nil
 }
 
+// GetNodes returns the list of active cluster nodes.
 func (r *Client) GetNodes() ([]*NodeStatus, error) {
 	return r.activeNodesCache.Get(r.doGetNodes)
 }
diff --git a/etcd_client.go b/etcd_client.go
index 431db12c..7cdf32a0 100644
--- a/etcd_client.go
+++ b/etcd_client.go
@@ -27,7 +27,7 @@ func mustLoadFile(path string) string {
 
 // Resolve a list of etcd host:port specs, returning URLs.
 func resolveAll(input []string, proto string) []string {
-	result := make([]string, 0)
+	var result []string
 	for _, hostport := range input {
 		host, port, err := net.SplitHostPort(hostport)
 		if err != nil {
@@ -45,6 +45,8 @@ func resolveAll(input []string, proto string) []string {
 	return result
 }
 
+// NewEtcdClient creates a new etcd client. It uses command-line flags
+// to find servers and connection parameters.
 func NewEtcdClient(strongReads bool) EtcdClient {
 	proto := "http"
 	if *etcdCertFile != "" && *etcdKeyFile != "" {
@@ -81,8 +83,8 @@ func NewEtcdClient(strongReads bool) EtcdClient {
 	return c
 }
 
-// Etcd client interface. Used to decouple our code from the actual
-// etcd API, for testing purposes.
+// EtcdClient is the etcd client interface used by autoradio. Used to
+// decouple our code from the actual etcd API, for testing purposes.
 type EtcdClient interface {
 	Create(string, string, uint64) (*etcd.Response, error)
 	CompareAndSwap(string, string, uint64, string, uint64) (*etcd.Response, error)
-- 
GitLab