cmd/stream.go
changeset 103 7a4604bb12d9
parent 81 b1671f83e91b
child 110 57843255fd1a
equal deleted inserted replaced
102:84ad56b643c8 103:7a4604bb12d9
   113 		for i, t := range hashTagList {
   113 		for i, t := range hashTagList {
   114 			if verbose {
   114 			if verbose {
   115 				errPrint("Launching listener for tag '%s'", t)
   115 				errPrint("Launching listener for tag '%s'", t)
   116 			}
   116 			}
   117 			tagEvCh[i] = make(chan madon.StreamEvent)
   117 			tagEvCh[i] = make(chan madon.StreamEvent)
       
   118 			tagDoneCh[i] = make(chan bool)
   118 			e := gClient.StreamListener(streamName, t, tagEvCh[i], stop, tagDoneCh[i])
   119 			e := gClient.StreamListener(streamName, t, tagEvCh[i], stop, tagDoneCh[i])
   119 			if e != nil {
   120 			if e != nil {
   120 				if i > 0 { // Close previous connections
   121 				if i > 0 { // Close previous connections
   121 					close(stop)
   122 					close(stop)
   122 				}
   123 				}
   155 	}
   156 	}
   156 
   157 
   157 LISTEN:
   158 LISTEN:
   158 	for {
   159 	for {
   159 		select {
   160 		select {
   160 		case _, ok := <-done:
   161 		case v, ok := <-done:
   161 			if !ok { // done is closed, end of streaming
   162 			if !ok || v == true { // done is closed, end of streaming
   162 				break LISTEN
   163 				break LISTEN
   163 			}
   164 			}
   164 		case ev := <-evChan:
   165 		case ev := <-evChan:
   165 			switch ev.Event {
   166 			switch ev.Event {
   166 			case "error":
   167 			case "error":