observer.go
func NewObserver(channel chan Observation, blocking bool, filter FilterFn) *Observer {
	return &Observer{
		channel:  channel,
		blocking: blocking,
		filter:   filter,
		id:       atomic.AddUint64(&nextObserverID, 1),
	}
}
func NewObserver(channel chan Observation, blocking bool, filter FilterFn) *Observer {
	return &Observer{
		channel:  channel,
		blocking: blocking,
		filter:   filter,
		id:       atomic.AddUint64(&nextObserverID, 1),
	}
}
func NewObserver ( channel chan Observation , blocking bool , filter FilterFn ) * Observer { return & Observer { channel : channel , blocking : blocking , filter : filter , id : atomic . AddUint64 ( & nextObserverID , 1 ) , } }
// NewObserver creates a new observer that can be registered
// to make observations on a Raft instance. Observations
// will be sent on the given channel if they satisfy the
// given filter.
//
// If blocking is true, the observer will block when it can't
// send on the channel, otherwise it may discard events.
NewObserver creates a new observer that can be registered to make observations on a Raft instance . Observations will be sent on the given channel if they satisfy the given filter . If blocking is true the observer will block when it can t send on the channel otherwise it may discard events .