func main() { flag.Parse() log.Printf("Connecting to %s/%s", *prot, *dest) client, err := memcached.Connect(*prot, *dest) if err != nil { log.Fatalf("Error connecting: %v", err) } if *u != "" { _, err := client.Auth(*u, *p) if err != nil { log.Fatalf("auth error: %v", err) } } args := tap.TapArguments{ Backfill: 131313, VBuckets: []uint16{0, 2, 4}, ClientName: "go_go_gadget_tap", } ch, err := tap.Feed(client, args) if err != nil { log.Fatalf("Error starting tap feed: %v", err) } for op := range ch { log.Printf("Tap OP: %s\n", op.ToString()) } }
func main() { flag.Parse() log.Printf("Connecting to %s/%s", *prot, *dest) client, err := memcached.Connect(*prot, *dest) if err != nil { log.Fatalf("Error connecting: %v", err) } if *u != "" { resp, err := client.Auth(*u, *p) if err != nil { log.Fatalf("auth error: %v", err) } log.Printf("Auth response = %v", resp) } args := memcached.DefaultTapArguments() args.Backfill = uint64(*back) args.Dump = *dump args.SupportAck = *ack args.KeysOnly = *keysOnly args.Checkpoint = *checkpoint feed, err := client.StartTapFeed(args) if err != nil { log.Fatalf("Error starting tap feed: %v", err) } for op := range feed.C { if *raw { log.Printf("Received %#v\n", op) } else { log.Printf("Received %s\n", op.String()) if len(op.Value) > 0 && len(op.Value) < 500 { log.Printf("\tValue: %s", op.Value) } } } log.Printf("Tap feed closed; err = %v.", feed.Error) }