func (r *Rethinkdb) sendChanges(table string, ccursor *gorethink.Cursor) error { defer ccursor.Close() if r.debug { fmt.Printf("sending changes for %s\n", table) } var change rethinkDbChangeNotification for ccursor.Next(&change) { if stop := r.pipe.Stopped; stop { return nil } if r.debug { fmt.Printf("change: %#v\n", change) } var msg *message.Msg if change.Error != "" { return errors.New(change.Error) } else if change.OldVal != nil && change.NewVal != nil { msg = message.NewMsg(message.Update, r.prepareDocument(change.NewVal), r.computeNamespace(table)) } else if change.NewVal != nil { msg = message.NewMsg(message.Insert, r.prepareDocument(change.NewVal), r.computeNamespace(table)) } else if change.OldVal != nil { msg = message.NewMsg(message.Delete, r.prepareDocument(change.OldVal), r.computeNamespace(table)) } if msg != nil { r.pipe.Send(msg) if r.debug { fmt.Printf("msg: %#v\n", msg) } } } if err := ccursor.Err(); err != nil { return err } return nil }