File: eventopt.go

package info (click to toggle)
golang-github-microsoft-go-winio 0.6.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 764 kB
  • sloc: makefile: 3
file content (76 lines) | stat: -rw-r--r-- 2,087 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
//go:build windows
// +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
	}
}