From 402d3433760f2b30a25d928457f367d503325f71 Mon Sep 17 00:00:00 2001
From: "Richard T. Carback III" <rick.carback@gmail.com>
Date: Fri, 27 Aug 2021 16:41:51 +0000
Subject: [PATCH] Pass events api down to network manager

---
 api/client.go                |  8 ++++----
 api/event.go                 |  7 +++----
 api/event_test.go            | 16 ++++++++--------
 interfaces/event.go          |  5 +++++
 network/internal/internal.go |  4 ++++
 network/manager.go           |  8 ++++++--
 6 files changed, 30 insertions(+), 18 deletions(-)

diff --git a/api/client.go b/api/client.go
index fb5da3a90..b1edca284 100644
--- a/api/client.go
+++ b/api/client.go
@@ -241,8 +241,8 @@ func Login(storageDir string, password []byte, parameters params.Network) (*Clie
 	}
 
 	// Initialize network and link it to context
-	c.network, err = network.NewManager(c.storage, c.switchboard, c.rng, c.comms,
-		parameters, def)
+	c.network, err = network.NewManager(c.storage, c.switchboard, c.rng,
+		c.events, c.comms, parameters, def)
 	if err != nil {
 		return nil, err
 	}
@@ -301,8 +301,8 @@ func LoginWithNewBaseNDF_UNSAFE(storageDir string, password []byte,
 	}
 
 	// Initialize network and link it to context
-	c.network, err = network.NewManager(c.storage, c.switchboard, c.rng, c.comms,
-		parameters, def)
+	c.network, err = network.NewManager(c.storage, c.switchboard, c.rng,
+		c.events, c.comms, parameters, def)
 	if err != nil {
 		return nil, err
 	}
diff --git a/api/event.go b/api/event.go
index 33c647a35..86e75b14e 100644
--- a/api/event.go
+++ b/api/event.go
@@ -42,10 +42,9 @@ func newEventManager() *eventManager {
 	}
 }
 
-// ReportEvent reports an event from the client to api users, providing a
+// Report reports an event from the client to api users, providing a
 // priority, category, eventType, and details
-func (e *eventManager) ReportEvent(priority int, category, evtType,
-	details string) {
+func (e *eventManager) Report(priority int, category, evtType, details string) {
 	re := reportableEvent{
 		Priority:  priority,
 		Category:  category,
@@ -113,7 +112,7 @@ func (e *eventManager) reportEventsHandler(stop *stoppable.Single) {
 // ReportEvent reports an event from the client to api users, providing a
 // priority, category, eventType, and details
 func (c *Client) ReportEvent(priority int, category, evtType, details string) {
-	c.events.ReportEvent(priority, category, evtType, details)
+	c.events.Report(priority, category, evtType, details)
 }
 
 // RegisterEventCallback records the given function to receive
diff --git a/api/event_test.go b/api/event_test.go
index 1b85ec5d0..775d2a6e6 100644
--- a/api/event_test.go
+++ b/api/event_test.go
@@ -34,10 +34,10 @@ func TestEventReporting(t *testing.T) {
 	}
 
 	// Send a few events
-	evtMgr.ReportEvent(10, "Hi", "TypityType", "I'm an event")
-	evtMgr.ReportEvent(1, "Hi", "TypeII", "Type II errors are the worst")
-	evtMgr.ReportEvent(20, "Hi", "TypityType3", "eventy details")
-	evtMgr.ReportEvent(22, "Hi", "TypityType4", "I'm an event 2")
+	evtMgr.Report(10, "Hi", "TypityType", "I'm an event")
+	evtMgr.Report(1, "Hi", "TypeII", "Type II errors are the worst")
+	evtMgr.Report(20, "Hi", "TypityType3", "eventy details")
+	evtMgr.Report(22, "Hi", "TypityType4", "I'm an event 2")
 
 	time.Sleep(100 * time.Millisecond)
 
@@ -67,10 +67,10 @@ func TestEventReporting(t *testing.T) {
 	// Delete callback
 	evtMgr.UnregisterEventCallback("test")
 	// Send more events
-	evtMgr.ReportEvent(10, "Hi", "TypityType", "I'm an event")
-	evtMgr.ReportEvent(1, "Hi", "TypeII", "Type II errors are the worst")
-	evtMgr.ReportEvent(20, "Hi", "TypityType3", "eventy details")
-	evtMgr.ReportEvent(22, "Hi", "TypityType4", "I'm an event 2")
+	evtMgr.Report(10, "Hi", "TypityType", "I'm an event")
+	evtMgr.Report(1, "Hi", "TypeII", "Type II errors are the worst")
+	evtMgr.Report(20, "Hi", "TypityType3", "eventy details")
+	evtMgr.Report(22, "Hi", "TypityType4", "I'm an event 2")
 
 	time.Sleep(100 * time.Millisecond)
 
diff --git a/interfaces/event.go b/interfaces/event.go
index 0aba83b45..f08ff547e 100644
--- a/interfaces/event.go
+++ b/interfaces/event.go
@@ -9,3 +9,8 @@ package interfaces
 
 // EventCallbackFunction defines the callback functions for client event reports
 type EventCallbackFunction func(priority int, category, evtType, details string)
+
+// EventManager reporting api (used internally)
+type EventManager interface {
+	Report(priority int, category, evtType, details string)
+}
diff --git a/network/internal/internal.go b/network/internal/internal.go
index fc0d6aa42..8fe96d073 100644
--- a/network/internal/internal.go
+++ b/network/internal/internal.go
@@ -8,6 +8,7 @@
 package internal
 
 import (
+	"gitlab.com/elixxir/client/interfaces"
 	"gitlab.com/elixxir/client/network/health"
 	"gitlab.com/elixxir/client/storage"
 	"gitlab.com/elixxir/client/switchboard"
@@ -37,4 +38,7 @@ type Internal struct {
 
 	//channels
 	NodeRegistration chan network.NodeGateway
+
+	// Event Reporting
+	Events interfaces.EventManager
 }
diff --git a/network/manager.go b/network/manager.go
index 5fcef26c3..cbf06f088 100644
--- a/network/manager.go
+++ b/network/manager.go
@@ -55,12 +55,16 @@ type manager struct {
 
 	// Address space size
 	addrSpace *ephemeral.AddressSpace
+
+	// Event reporting api
+	events interfaces.EventManager
 }
 
 // NewManager builds a new reception manager object using inputted key fields
 func NewManager(session *storage.Session, switchboard *switchboard.Switchboard,
-	rng *fastRNG.StreamGenerator, comms *client.Comms,
-	params params.Network, ndf *ndf.NetworkDefinition) (interfaces.NetworkManager, error) {
+	rng *fastRNG.StreamGenerator, events interfaces.EventManager,
+	comms *client.Comms, params params.Network,
+	ndf *ndf.NetworkDefinition) (interfaces.NetworkManager, error) {
 
 	//start network instance
 	instance, err := network.NewInstance(comms.ProtoComms, ndf, nil, nil, network.None, params.FastPolling)
-- 
GitLab