| // +build windows |
| |
| 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 |
| } |
| } |