func Register(ch chan ExecutionEvent, topics ...Topic) {
	for _, t := range topics {
		subscriberRegistry[t] = append(subscriberRegistry[t], ch)
	}
}
Register registers the given channel to the given list of topics. Any updates for the given topics
will be sent on this channel
package event
import (
	"github.com/getgauge/gauge-proto/go/gauge_messages"
	"github.com/getgauge/gauge/execution/result"
	"github.com/getgauge/gauge/gauge"
)
type ExecutionEvent struct {
	Topic         Topic
	Item          gauge.Item
	Result        result.Result
	Stream        int
	ExecutionInfo *gauge_messages.ExecutionInfo
}
func NewExecutionEvent(t Topic, i gauge.Item, r result.Result, stream int, executionInfo *gauge_messages.ExecutionInfo) ExecutionEvent {
	return ExecutionEvent{
		Topic:         t,
		Item:          i,
		Result:        r,
		Stream:        stream,
		ExecutionInfo: executionInfo,
	}
}
type Topic int
const (
	SuiteStart Topic = iota
	SpecStart
	ScenarioStart
	ConceptStart
	StepStart
	StepEnd
	ConceptEnd
	ScenarioEnd
	SpecEnd
	SuiteEnd
)
var subscriberRegistry map[Topic][]chan ExecutionEvent
func InitRegistry() {
	subscriberRegistry = make(map[Topic][]chan ExecutionEvent)
	subscriberRegistry[SuiteStart] = make([]chan ExecutionEvent, 0)
	subscriberRegistry[ScenarioStart] = make([]chan ExecutionEvent, 0)
	subscriberRegistry[ConceptStart] = make([]chan ExecutionEvent, 0)
	subscriberRegistry[StepStart] = make([]chan ExecutionEvent, 0)
	subscriberRegistry[SuiteEnd] = make([]chan ExecutionEvent, 0)
	subscriberRegistry[ConceptEnd] = make([]chan ExecutionEvent, 0)
	subscriberRegistry[ScenarioEnd] = make([]chan ExecutionEvent, 0)
	subscriberRegistry[SpecEnd] = make([]chan ExecutionEvent, 0)
	subscriberRegistry[SuiteEnd] = make([]chan ExecutionEvent, 0)
}