Source File
worker_commands.go
Belonging Package
go.opencensus.io/stats/view
type getViewByNameReq struct {
name string
c chan *getViewByNameResp
}
type getViewByNameResp struct {
v *View
}
func ( *getViewByNameReq) ( *worker) {
:= .views[.name]
if == nil {
.c <- &getViewByNameResp{nil}
return
}
.c <- &getViewByNameResp{.view}
}
type registerViewReq struct {
views []*View
err chan error
}
func ( *registerViewReq) ( *worker) {
for , := range .views {
if := .canonicalize(); != nil {
.err <-
return
}
}
var []string
for , := range .views {
, := .tryRegisterView()
if != nil {
= append(, fmt.Sprintf("%s: %v", .Name, ))
continue
}
internal.SubscriptionReporter(.Measure.Name())
.subscribe()
}
if len() > 0 {
.err <- errors.New(strings.Join(, "\n"))
} else {
.err <- nil
}
}
type unregisterFromViewReq struct {
views []string
done chan struct{}
}
func ( *unregisterFromViewReq) ( *worker) {
for , := range .views {
, := .views[]
if ! {
continue
}
.reportView()
.unsubscribe()
.clearRows()
}
.unregisterView()
}
.done <- struct{}{}
}
type retrieveDataReq struct {
now time.Time
v string
c chan *retrieveDataResp
}
type retrieveDataResp struct {
rows []*Row
err error
}
func ( *retrieveDataReq) ( *worker) {
.mu.Lock()
defer .mu.Unlock()
, := .views[.v]
if ! {
.c <- &retrieveDataResp{
nil,
fmt.Errorf("cannot retrieve data; view %q is not registered", .v),
}
return
}
if !.isSubscribed() {
.c <- &retrieveDataResp{
nil,
fmt.Errorf("cannot retrieve data; view %q has no subscriptions or collection is not forcibly started", .v),
}
return
}
.c <- &retrieveDataResp{
.collectedRows(),
nil,
}
}
type recordReq struct {
tm *tag.Map
ms []stats.Measurement
attachments map[string]interface{}
t time.Time
}
func ( *recordReq) ( *worker) {
.mu.Lock()
defer .mu.Unlock()
for , := range .ms {
if ( == stats.Measurement{}) { // not registered
continue
}
:= .getMeasureRef(.Measure().Name())
for := range .views {
.addSample(.tm, .Value(), .attachments, .t)
}
}
}
![]() |
The pages are generated with Golds v0.3.2-preview. (GOOS=darwin GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds. |