Skip to content
Snippets Groups Projects
Commit a6bd16fa authored by Richard T. Carback III's avatar Richard T. Carback III
Browse files

Use pointer interface

parent 9be7a75f
No related branches found
No related tags found
3 merge requests!23Release,!13Hotfix/no host cooldown + return sende2e TS,!11Client Event Reporting API
...@@ -65,7 +65,7 @@ type Client struct { ...@@ -65,7 +65,7 @@ type Client struct {
clientErrorChannel chan interfaces.ClientError clientErrorChannel chan interfaces.ClientError
// Event reporting in event.go // Event reporting in event.go
events eventManager events *eventManager
} }
// NewClient creates client storage, generates keys, connects, and registers // NewClient creates client storage, generates keys, connects, and registers
......
...@@ -26,6 +26,12 @@ type reportableEvent struct { ...@@ -26,6 +26,12 @@ type reportableEvent struct {
Details string 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 // Holds state for the event reporting system
type eventManager struct { type eventManager struct {
eventCh chan reportableEvent eventCh chan reportableEvent
...@@ -33,8 +39,8 @@ type eventManager struct { ...@@ -33,8 +39,8 @@ type eventManager struct {
eventLck sync.Mutex eventLck sync.Mutex
} }
func newEventManager() eventManager { func newEventManager() *eventManager {
return eventManager{ return &eventManager{
eventCh: make(chan reportableEvent, 1000), eventCh: make(chan reportableEvent, 1000),
eventCbs: make([]EventCallbackFunction, 0), eventCbs: make([]EventCallbackFunction, 0),
} }
...@@ -42,7 +48,7 @@ func newEventManager() eventManager { ...@@ -42,7 +48,7 @@ func newEventManager() eventManager {
// ReportEvent reports an event from the client to api users, providing a // ReportEvent reports an event from the client to api users, providing a
// priority, category, eventType, and details // priority, category, eventType, and details
func (e eventManager) ReportEvent(priority int, category, evtType, func (e *eventManager) ReportEvent(priority int, category, evtType,
details string) { details string) {
re := reportableEvent{ re := reportableEvent{
Priority: priority, Priority: priority,
...@@ -61,7 +67,7 @@ func (e eventManager) ReportEvent(priority int, category, evtType, ...@@ -61,7 +67,7 @@ func (e eventManager) ReportEvent(priority int, category, evtType,
// RegisterEventCallback records the given function to receive // RegisterEventCallback records the given function to receive
// ReportableEvent objects. It returns the internal index // ReportableEvent objects. It returns the internal index
// of the callback so that it can be deleted later. // 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() e.eventLck.Lock()
defer e.eventLck.Unlock() defer e.eventLck.Unlock()
e.eventCbs = append(e.eventCbs, myFunc) e.eventCbs = append(e.eventCbs, myFunc)
...@@ -70,7 +76,7 @@ func (e eventManager) RegisterEventCallback(myFunc EventCallbackFunction) int { ...@@ -70,7 +76,7 @@ func (e eventManager) RegisterEventCallback(myFunc EventCallbackFunction) int {
// UnregisterEventCallback deletes the callback identified by the // UnregisterEventCallback deletes the callback identified by the
// index. It returns an error if it fails. // 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() e.eventLck.Lock()
defer e.eventLck.Unlock() defer e.eventLck.Unlock()
if index > 0 && index < len(e.eventCbs) { if index > 0 && index < len(e.eventCbs) {
...@@ -82,14 +88,14 @@ func (e eventManager) UnregisterEventCallback(index int) error { ...@@ -82,14 +88,14 @@ func (e eventManager) UnregisterEventCallback(index int) error {
return nil return nil
} }
func (e eventManager) eventService() (stoppable.Stoppable, error) { func (e *eventManager) eventService() (stoppable.Stoppable, error) {
stop := stoppable.NewSingle("EventReporting") stop := stoppable.NewSingle("EventReporting")
go e.reportEventsHandler(stop) go e.reportEventsHandler(stop)
return stop, nil return stop, nil
} }
// reportEventsHandler reports events to every registered event callback // 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") jww.DEBUG.Print("reportEventsHandler routine started")
for { for {
select { select {
...@@ -129,8 +135,3 @@ func (c *Client) RegisterEventCallback(myFunc EventCallbackFunction) int { ...@@ -129,8 +135,3 @@ func (c *Client) RegisterEventCallback(myFunc EventCallbackFunction) int {
func (c *Client) UnregisterEventCallback(index int) error { func (c *Client) UnregisterEventCallback(index int) error {
return c.events.UnregisterEventCallback(index) 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)
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment