velodrome/transform/plugins/fake_open_wrapper.go
func (o *FakeOpenPluginWrapper) ReceiveIssueEvent(event sql.IssueEvent) []Point {
	points := []Point{}

	// Inject extra "opened" events. Inject "opened" before other events at the same time.
	for o.openEvents.Len() > 0 && !o.openEvents[0].EventCreatedAt.After(event.EventCreatedAt) {
		points = append(points, o.plugin.ReceiveIssueEvent(heap.Pop(&o.openEvents).(sql.IssueEvent))...)
	}

	return append(points, o.plugin.ReceiveIssueEvent(event)...)
}
func (o *FakeOpenPluginWrapper) ReceiveIssueEvent(event sql.IssueEvent) []Point {
	points := []Point{}

	// Inject extra "opened" events. Inject "opened" before other events at the same time.
	for o.openEvents.Len() > 0 && !o.openEvents[0].EventCreatedAt.After(event.EventCreatedAt) {
		points = append(points, o.plugin.ReceiveIssueEvent(heap.Pop(&o.openEvents).(sql.IssueEvent))...)
	}

	return append(points, o.plugin.ReceiveIssueEvent(event)...)
}
func ( o * FakeOpenPluginWrapper ) ReceiveIssueEvent ( event sql . IssueEvent ) [ ] Point { points := [ ] Point { } // Inject extra "opened" events. Inject "opened" before other events at the same time. for o . openEvents . Len ( ) > 0 && ! o . openEvents [ 0 ] . EventCreatedAt . After ( event . EventCreatedAt ) { points = append ( points , o . plugin . ReceiveIssueEvent ( heap . Pop ( & o . openEvents ) . ( sql . IssueEvent ) ) ... ) } return append ( points , o . plugin . ReceiveIssueEvent ( event ) ... ) }
// ReceiveIssueEvent injects an extra "opened" event before calling plugin.ReceiveIssueEvent()
ReceiveIssueEvent injects an extra opened event before calling plugin . ReceiveIssueEvent ()