64 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // package loader manages loading from multiple sources
 | |
| package loader
 | |
| 
 | |
| import (
 | |
| 	"context"
 | |
| 
 | |
| 	"github.com/micro/go-micro/config/reader"
 | |
| 	"github.com/micro/go-micro/config/source"
 | |
| )
 | |
| 
 | |
| // Loader manages loading sources
 | |
| type Loader interface {
 | |
| 	// Stop the loader
 | |
| 	Close() error
 | |
| 	// Load the sources
 | |
| 	Load(...source.Source) error
 | |
| 	// A Snapshot of loaded config
 | |
| 	Snapshot() (*Snapshot, error)
 | |
| 	// Force sync of sources
 | |
| 	Sync() error
 | |
| 	// Watch for changes
 | |
| 	Watch(...string) (Watcher, error)
 | |
| 	// Name of loader
 | |
| 	String() string
 | |
| }
 | |
| 
 | |
| // Watcher lets you watch sources and returns a merged ChangeSet
 | |
| type Watcher interface {
 | |
| 	// First call to next may return the current Snapshot
 | |
| 	// If you are watching a path then only the data from
 | |
| 	// that path is returned.
 | |
| 	Next() (*Snapshot, error)
 | |
| 	// Stop watching for changes
 | |
| 	Stop() error
 | |
| }
 | |
| 
 | |
| // Snapshot is a merged ChangeSet
 | |
| type Snapshot struct {
 | |
| 	// The merged ChangeSet
 | |
| 	ChangeSet *source.ChangeSet
 | |
| 	// Deterministic and comparable version of the snapshot
 | |
| 	Version string
 | |
| }
 | |
| 
 | |
| type Options struct {
 | |
| 	Reader reader.Reader
 | |
| 	Source []source.Source
 | |
| 
 | |
| 	// for alternative data
 | |
| 	Context context.Context
 | |
| }
 | |
| 
 | |
| type Option func(o *Options)
 | |
| 
 | |
| // Copy snapshot
 | |
| func Copy(s *Snapshot) *Snapshot {
 | |
| 	cs := *(s.ChangeSet)
 | |
| 
 | |
| 	return &Snapshot{
 | |
| 		ChangeSet: &cs,
 | |
| 		Version:   s.Version,
 | |
| 	}
 | |
| }
 |