mirror of https://github.com/k3s-io/k3s
74 lines
2.0 KiB
Go
74 lines
2.0 KiB
Go
package etw
|
|
|
|
import (
|
|
"github.com/Microsoft/go-winio/pkg/guid"
|
|
)
|
|
|
|
type eventOptions struct {
|
|
descriptor *eventDescriptor
|
|
activityID guid.GUID
|
|
relatedActivityID guid.GUID
|
|
tags uint32
|
|
}
|
|
|
|
// EventOpt defines the option function type that can be passed to
|
|
// Provider.WriteEvent to specify general event options, such as level and
|
|
// keyword.
|
|
type EventOpt func(options *eventOptions)
|
|
|
|
// WithEventOpts returns the variadic arguments as a single slice.
|
|
func WithEventOpts(opts ...EventOpt) []EventOpt {
|
|
return opts
|
|
}
|
|
|
|
// WithLevel specifies the level of the event to be written.
|
|
func WithLevel(level Level) EventOpt {
|
|
return func(options *eventOptions) {
|
|
options.descriptor.level = level
|
|
}
|
|
}
|
|
|
|
// WithKeyword specifies the keywords of the event to be written. Multiple uses
|
|
// of this option are OR'd together.
|
|
func WithKeyword(keyword uint64) EventOpt {
|
|
return func(options *eventOptions) {
|
|
options.descriptor.keyword |= keyword
|
|
}
|
|
}
|
|
|
|
// WithChannel specifies the channel of the event to be written.
|
|
func WithChannel(channel Channel) EventOpt {
|
|
return func(options *eventOptions) {
|
|
options.descriptor.channel = channel
|
|
}
|
|
}
|
|
|
|
// WithOpcode specifies the opcode of the event to be written.
|
|
func WithOpcode(opcode Opcode) EventOpt {
|
|
return func(options *eventOptions) {
|
|
options.descriptor.opcode = opcode
|
|
}
|
|
}
|
|
|
|
// WithTags specifies the tags of the event to be written. Tags is a 28-bit
|
|
// value (top 4 bits are ignored) which are interpreted by the event consumer.
|
|
func WithTags(newTags uint32) EventOpt {
|
|
return func(options *eventOptions) {
|
|
options.tags |= newTags
|
|
}
|
|
}
|
|
|
|
// WithActivityID specifies the activity ID of the event to be written.
|
|
func WithActivityID(activityID guid.GUID) EventOpt {
|
|
return func(options *eventOptions) {
|
|
options.activityID = activityID
|
|
}
|
|
}
|
|
|
|
// WithRelatedActivityID specifies the parent activity ID of the event to be written.
|
|
func WithRelatedActivityID(activityID guid.GUID) EventOpt {
|
|
return func(options *eventOptions) {
|
|
options.relatedActivityID = activityID
|
|
}
|
|
}
|