MCPcopy Create free account
hub / github.com/facebook/time / offsetBetweenExtendedReadings

Function offsetBetweenExtendedReadings

phc/offset.go:165–192  ·  view source on GitHub ↗

offsetBetweenExtendedReadings returns estimated difference between two PHC SYS_OFFSET_EXTENDED readings

(extendedA, extendedB *PTPSysOffsetExtended)

Source from the content-addressed store, hash-verified

163}
164
165// generics in standard library can't come soon enough...
166func abs(value time.Duration) time.Duration {
167 if value < 0 {
168 return -value
169 }
170 return value
171}
172
173// Sub returns the estimated difference between two PHC SYS_OFFSET_EXTENDED readings
174func (extended *PTPSysOffsetExtended) Sub(a *PTPSysOffsetExtended) (time.Duration, error) {
175 return offsetBetweenExtendedReadings(a, extended)
176}
177
178// Sub returns the estimated difference between two PHC SYS_OFFSET_PRECISE readings
179func (precise *PTPSysOffsetPrecise) Sub(a *PTPSysOffsetPrecise) time.Duration {
180 return offsetBetweenPreciseReadings(a, precise)
181}
182
183// offsetBetweenExtendedReadings returns estimated difference between two PHC SYS_OFFSET_EXTENDED readings
184func offsetBetweenExtendedReadings(extendedA, extendedB *PTPSysOffsetExtended) (time.Duration, error) {
185 // SYS_OFFSET_EXTENDED can provide different system clock, we can compare samples with same system clock id
186 if extendedA.ClockID != extendedB.ClockID {
187 return 0, fmt.Errorf("different system clock ids")
188 }
189 // we expect both probes to have same number of measures
190 numProbes := min(int(extendedB.Samples), int(extendedA.Samples))
191 // calculate sys time midpoint from both samples
192 sysoffA := sysoffFromExtendedTS(extendedA.Ts[0])
193 sysoffB := sysoffFromExtendedTS(extendedB.Ts[0])
194 // offset between sys time midpoints
195 sysOffset := sysoffB.SysTime.Sub(sysoffA.SysTime)

Callers 1

SubMethod · 0.85

Calls 3

sysoffFromExtendedTSFunction · 0.85
absFunction · 0.85
SubMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…