| 67 | const dateFmt = "2006-01-02" |
| 68 | |
| 69 | func (*evtAccessor) Get(f Field, evt *event.Event) (params.Value, error) { |
| 70 | switch f.Name { |
| 71 | case fields.EvtSeq, fields.KevtSeq: |
| 72 | return evt.Seq, nil |
| 73 | case fields.EvtPID, fields.KevtPID: |
| 74 | return evt.PID, nil |
| 75 | case fields.EvtTID, fields.KevtTID: |
| 76 | return evt.Tid, nil |
| 77 | case fields.EvtCPU, fields.KevtCPU: |
| 78 | return evt.CPU, nil |
| 79 | case fields.EvtName, fields.KevtName: |
| 80 | return evt.Name, nil |
| 81 | case fields.EvtCategory, fields.KevtCategory: |
| 82 | return string(evt.Category), nil |
| 83 | case fields.EvtDesc, fields.KevtDesc: |
| 84 | return evt.Description, nil |
| 85 | case fields.EvtHost, fields.KevtHost: |
| 86 | return evt.Host, nil |
| 87 | case fields.EvtTime, fields.KevtTime: |
| 88 | return evt.Timestamp.Format(timeFmt), nil |
| 89 | case fields.EvtTimeHour, fields.KevtTimeHour: |
| 90 | return uint8(evt.Timestamp.Hour()), nil |
| 91 | case fields.EvtTimeMin, fields.KevtTimeMin: |
| 92 | return uint8(evt.Timestamp.Minute()), nil |
| 93 | case fields.EvtTimeSec, fields.KevtTimeSec: |
| 94 | return uint8(evt.Timestamp.Second()), nil |
| 95 | case fields.EvtTimeNs, fields.KevtTimeNs: |
| 96 | return evt.Timestamp.UnixNano(), nil |
| 97 | case fields.EvtDate, fields.KevtDate: |
| 98 | return evt.Timestamp.Format(dateFmt), nil |
| 99 | case fields.EvtDateDay, fields.KevtDateDay: |
| 100 | return uint8(evt.Timestamp.Day()), nil |
| 101 | case fields.EvtDateMonth, fields.KevtDateMonth: |
| 102 | return uint8(evt.Timestamp.Month()), nil |
| 103 | case fields.EvtDateTz, fields.KevtDateTz: |
| 104 | tz, _ := evt.Timestamp.Zone() |
| 105 | return tz, nil |
| 106 | case fields.EvtDateYear, fields.KevtDateYear: |
| 107 | return uint32(evt.Timestamp.Year()), nil |
| 108 | case fields.EvtDateWeek, fields.KevtDateWeek: |
| 109 | _, week := evt.Timestamp.ISOWeek() |
| 110 | return uint8(week), nil |
| 111 | case fields.EvtDateWeekday, fields.KevtDateWeekday: |
| 112 | return evt.Timestamp.Weekday().String(), nil |
| 113 | case fields.EvtNparams, fields.KevtNparams: |
| 114 | return uint64(evt.Params.Len()), nil |
| 115 | case fields.EvtArg, fields.KevtArg: |
| 116 | // lookup the parameter from the field argument |
| 117 | // and depending on the parameter type, return |
| 118 | // the respective value. The field format is |
| 119 | // expressed as evt.arg[cmdline] where the string |
| 120 | // inside brackets represents the parameter name |
| 121 | name := f.Arg |
| 122 | par, err := evt.Params.Get(name) |
| 123 | if err != nil { |
| 124 | return nil, err |
| 125 | } |
| 126 | |