func ExampleUnmarshal() { msg, s, err := capnp.NewMessage(capnp.SingleSegment(nil)) if err != nil { fmt.Printf("allocation error %v\n", err) return } d, err := air.NewRootZdate(s) if err != nil { fmt.Printf("root error %v\n", err) return } d.SetYear(2004) d.SetMonth(12) d.SetDay(7) data, err := msg.Marshal() if err != nil { fmt.Printf("marshal error %v\n", err) return } // Read msg, err = capnp.Unmarshal(data) if err != nil { fmt.Printf("unmarshal error %v\n", err) return } d, err = air.ReadRootZdate(msg) if err != nil { fmt.Printf("read root error %v\n", err) return } fmt.Printf("year %d, month %d, day %d\n", d.Year(), d.Month(), d.Day()) // Output: // year 2004, month 12, day 7 }
// actually return n segments back-to-back. // WriteTo will automatically add the stream header word with message length. // func zdateReaderNBackToBack(n int, packed bool) *bytes.Reader { buf := bytes.Buffer{} for i := 0; i < n; i++ { msg, seg, err := capnp.NewMessage(capnp.SingleSegment(nil)) if err != nil { panic(err) } d, err := air.NewRootZdate(seg) if err != nil { panic(err) } d.SetMonth(12) d.SetDay(7) d.SetYear(int16(2004 + i)) if packed { b, err := msg.MarshalPacked() if err != nil { panic(err) } buf.Write(b) } else { b, err := msg.Marshal() if err != nil { panic(err) } buf.Write(b) } } return bytes.NewReader(buf.Bytes()) }