func main() { flag.Parse() pcap, err := pcap.OpenOffline(*pcapFile) if err != nil { fmt.Fprintln(os.Stderr, "error opening pcap file:", err) os.Exit(1) } h := mongocaputils.NewPacketHandler(pcap) m := mongocaputils.NewMongoOpStream(*packetBufSize) ch := make(chan struct{}) go func() { defer close(ch) for op := range m.Ops { bsonBytes, err := bson.Marshal(op) if err != nil { fmt.Fprintln(os.Stderr, "error marshaling message:", err) os.Exit(1) } _, err = os.Stdout.Write(bsonBytes) if err != nil { fmt.Fprintln(os.Stderr, "error writing message:", err) os.Exit(1) } } }() if err := h.Handle(m, -1); err != nil { fmt.Fprintln(os.Stderr, "mongorecord: error handling packet stream:", err) } <-ch }
func main() { flag.Parse() pcap, err := pcap.OpenOffline(*pcapFile) if err != nil { fmt.Fprintln(os.Stderr, "error opening pcap file:", err) os.Exit(1) } h := mongocaputils.NewPacketHandler(pcap) m := mongocaputils.NewMongoOpStream(*packetBufSize) ch := make(chan struct{}) go func() { defer close(ch) for op := range m.Ops { if _, ok := op.Op.(*mongoproto.OpUnknown); !ok { fmt.Printf("%f %v\n", float64(op.Seen.Sub(m.FirstSeen))/10e8, op) } } }() if err := h.Handle(m, -1); err != nil { fmt.Fprintln(os.Stderr, "mongocapcat: error handling packet stream:", err) } <-ch }