MCPcopy Create free account
hub / github.com/rabbitstack/fibratus / Accessor

Method Accessor

pkg/filter/filter.go:96–135  ·  view source on GitHub ↗

Accessor finds exactly one accessor that can serve the bound field.

(f *filter)

Source from the content-addressed store, hash-verified

94
95// Accessor finds exactly one accessor that can serve the bound field.
96func (b *BoundField) Accessor(f *filter) Accessor {
97 if b.accessor != nil {
98 return b.accessor
99 }
100 switch {
101 case b.Field.Name.IsKevtField(), b.Field.Name.IsEvtField():
102 b.accessor = newEventAccessor()
103 case b.Field.Name.IsPsField():
104 for _, accessor := range f.accessors {
105 if reflect.TypeOf(accessor) == reflect.TypeOf(&psAccessor{}) {
106 b.accessor = accessor
107 break
108 }
109 }
110 if b.accessor == nil {
111 b.accessor = newPSAccessor(nil)
112 }
113 case b.Field.Name.IsThreadField():
114 b.accessor = newThreadAccessor()
115 case b.Field.Name.IsImageField():
116 b.accessor = newModuleAccessor()
117 case b.Field.Name.IsFileField():
118 b.accessor = newFileAccessor()
119 case b.Field.Name.IsRegistryField():
120 b.accessor = newRegistryAccessor()
121 case b.Field.Name.IsNetworkField():
122 b.accessor = newNetworkAccessor()
123 case b.Field.Name.IsHandleField():
124 b.accessor = newHandleAccessor()
125 case b.Field.Name.IsPeField():
126 b.accessor = newPEAccessor()
127 case b.Field.Name.IsMemField():
128 b.accessor = newMemAccessor()
129 case b.Field.Name.IsDNSField():
130 b.accessor = newDNSAccessor()
131 case b.Field.Name.IsThreadpoolField():
132 b.accessor = newThreadAccessor()
133 }
134 return b.accessor
135}
136
137type filter struct {
138 expr ql.Expr

Callers 1

evalBoundSequenceMethod · 0.80

Calls 15

newEventAccessorFunction · 0.85
newPSAccessorFunction · 0.85
newThreadAccessorFunction · 0.85
newModuleAccessorFunction · 0.85
newFileAccessorFunction · 0.85
newRegistryAccessorFunction · 0.85
newNetworkAccessorFunction · 0.85
newHandleAccessorFunction · 0.85
newPEAccessorFunction · 0.85
newMemAccessorFunction · 0.85
newDNSAccessorFunction · 0.85
IsKevtFieldMethod · 0.80

Tested by

no test coverage detected