Ejemplo n.º 1
0
Archivo: main.go Proyecto: 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)
	}
}
Ejemplo n.º 2
0
Archivo: sync.go Proyecto: 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()
	}
}
Ejemplo n.º 3
0
Archivo: sync.go Proyecto: 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()
	}
}