コード例 #1
0
ファイル: main.go プロジェクト: gmelika/rack
func main() {
	ch := make(chan changes.Change)

	for _, watch := range os.Args[1:] {
		go changes.Watch(watch, ch)
	}

	for c := range ch {
		fmt.Printf("%s|%s|%s\n", c.Operation, c.Base, c.Path)
	}
}
コード例 #2
0
ファイル: sync.go プロジェクト: gmelika/rack
func (s *Sync) watchOutgoing(st Stream) {
	ch := make(chan changes.Change)

	go changes.Watch(s.Local, ch)

	for c := range ch {
		s.lock.Lock()

		if s.outgoingBlocks[c.Path] > 0 {
			s.outgoingBlocks[c.Path] -= 1
		} else {
			s.outgoing[c] = true
		}

		s.lock.Unlock()
	}
}
コード例 #3
0
ファイル: sync.go プロジェクト: convox/rack
func (s *Sync) watchOutgoing(st Stream) {
	ch := make(chan changes.Change, 1)

	go func() {
		if err := changes.Watch(s.Local, ch); err != nil {
			st <- fmt.Sprintf("error: %s", err)
		}
	}()

	for c := range ch {
		s.lock.Lock()

		if s.outgoingBlocks[c.Path] > 0 {
			s.outgoingBlocks[c.Path] -= 1
		} else {
			s.outgoing <- c
		}

		s.lock.Unlock()
	}
}