From a6bd16fa52596d3c0244b76aaea42b96baaba034 Mon Sep 17 00:00:00 2001
From: "Richard T. Carback III" <rick.carback@gmail.com>
Date: Tue, 24 Aug 2021 17:45:21 +0000
Subject: [PATCH] Use pointer interface

---
 api/client.go |  2 +-
 api/event.go  | 25 +++++++++++++------------
 2 files changed, 14 insertions(+), 13 deletions(-)

diff --git a/api/client.go b/api/client.go
index f9ae0cc51..fb5da3a90 100644
--- a/api/client.go
+++ b/api/client.go
@@ -65,7 +65,7 @@ type Client struct {
 	clientErrorChannel chan interfaces.ClientError
 
 	// Event reporting in event.go
-	events eventManager
+	events *eventManager
 }
 
 // NewClient creates client storage, generates keys, connects, and registers
diff --git a/api/event.go b/api/event.go
index df9e93da3..7852946bd 100644
--- a/api/event.go
+++ b/api/event.go
@@ -26,6 +26,12 @@ type reportableEvent struct {
 	Details   string
 }
 
+// String stringer interace implementation
+func (e reportableEvent) String() string {
+	return fmt.Sprintf("Event(%d, %s, %s, %s)", e.Priority, e.Category,
+		e.EventType, e.Details)
+}
+
 // Holds state for the event reporting system
 type eventManager struct {
 	eventCh  chan reportableEvent
@@ -33,8 +39,8 @@ type eventManager struct {
 	eventLck sync.Mutex
 }
 
-func newEventManager() eventManager {
-	return eventManager{
+func newEventManager() *eventManager {
+	return &eventManager{
 		eventCh:  make(chan reportableEvent, 1000),
 		eventCbs: make([]EventCallbackFunction, 0),
 	}
@@ -42,7 +48,7 @@ func newEventManager() eventManager {
 
 // ReportEvent reports an event from the client to api users, providing a
 // priority, category, eventType, and details
-func (e eventManager) ReportEvent(priority int, category, evtType,
+func (e *eventManager) ReportEvent(priority int, category, evtType,
 	details string) {
 	re := reportableEvent{
 		Priority:  priority,
@@ -61,7 +67,7 @@ func (e eventManager) ReportEvent(priority int, category, evtType,
 // RegisterEventCallback records the given function to receive
 // ReportableEvent objects. It returns the internal index
 // of the callback so that it can be deleted later.
-func (e eventManager) RegisterEventCallback(myFunc EventCallbackFunction) int {
+func (e *eventManager) RegisterEventCallback(myFunc EventCallbackFunction) int {
 	e.eventLck.Lock()
 	defer e.eventLck.Unlock()
 	e.eventCbs = append(e.eventCbs, myFunc)
@@ -70,7 +76,7 @@ func (e eventManager) RegisterEventCallback(myFunc EventCallbackFunction) int {
 
 // UnregisterEventCallback deletes the callback identified by the
 // index. It returns an error if it fails.
-func (e eventManager) UnregisterEventCallback(index int) error {
+func (e *eventManager) UnregisterEventCallback(index int) error {
 	e.eventLck.Lock()
 	defer e.eventLck.Unlock()
 	if index > 0 && index < len(e.eventCbs) {
@@ -82,14 +88,14 @@ func (e eventManager) UnregisterEventCallback(index int) error {
 	return nil
 }
 
-func (e eventManager) eventService() (stoppable.Stoppable, error) {
+func (e *eventManager) eventService() (stoppable.Stoppable, error) {
 	stop := stoppable.NewSingle("EventReporting")
 	go e.reportEventsHandler(stop)
 	return stop, nil
 }
 
 // reportEventsHandler reports events to every registered event callback
-func (e eventManager) reportEventsHandler(stop *stoppable.Single) {
+func (e *eventManager) reportEventsHandler(stop *stoppable.Single) {
 	jww.DEBUG.Print("reportEventsHandler routine started")
 	for {
 		select {
@@ -129,8 +135,3 @@ func (c *Client) RegisterEventCallback(myFunc EventCallbackFunction) int {
 func (c *Client) UnregisterEventCallback(index int) error {
 	return c.events.UnregisterEventCallback(index)
 }
-
-func (e reportableEvent) String() string {
-	return fmt.Sprintf("Event(%d, %s, %s, %s)", e.Priority, e.Category,
-		e.EventType, e.Details)
-}
-- 
GitLab