func NewFileSourcer()

in lib/filesourcer.go [39:75]


func NewFileSourcer(stablePath, rcPath string, version int) (*FileSourcer, error) {
	watcher, err := fsnotify.NewWatcher()
	if err != nil {
		glog.Fatal(err)
	}
	err = watcher.Add(filepath.Dir(stablePath))
	if err != nil {
		glog.Fatalf("Error watching stable: %s", err)
	}
	// RC is optional, only add to fsnotify and read if rcPath is present
	if len(rcPath) > 0 {
		err = watcher.Add(filepath.Dir(rcPath))
		if err != nil {
			glog.Fatalf("Error watching rc: %s", err)
		}
	}
	sourcer, err := &FileSourcer{
		stablePath: stablePath,
		rcPath:     rcPath,
		version:    version,
		watcher:    watcher,
	}, nil
	sourcer.lock.Lock()
	sourcer.stableServers, err = sourcer.GetServersFromTier(stablePath)
	if err != nil {
		glog.Errorf("Failed to load stable servers: %s", err)
	}
	if len(rcPath) > 0 {
		sourcer.rcServers, err = sourcer.GetServersFromTier(rcPath)
		if err != nil {
			glog.Errorf("Failed to load RC servers: %s", err)
		}
	}
	sourcer.lock.Unlock()
	go sourcer.watchFsnotifyEvents()
	return sourcer, err
}