agent/bill/monitor.go
func NewMonitor(interval uint64, db *reform.DB,
	logger log.Logger, pr *proc.Processor) (*Monitor, error) {
	if db == nil || logger == nil || pr == nil || interval == 0 {
		return nil, ErrInput
	}

	return &Monitor{
		db:       db,
		logger:   logger.Add("type", "agent/bill.Monitor"),
		pr:       pr,
		interval: interval,
	}, nil
}
func NewMonitor(interval uint64, db *reform.DB,
	logger log.Logger, pr *proc.Processor) (*Monitor, error) {
	if db == nil || logger == nil || pr == nil || interval == 0 {
		return nil, ErrInput
	}

	return &Monitor{
		db:       db,
		logger:   logger.Add("type", "agent/bill.Monitor"),
		pr:       pr,
		interval: interval,
	}, nil
}
// NewMonitor creates new instance of billing monitor.
// 'interval' specifies how often channels checks must be performed.