package main import "log" import "bytes" import "os" import "bufio" // import "io" import "io/ioutil" import "github.com/golang/protobuf/proto" import pb "git.wit.com/wit/witProtobuf" // Main reads the entire address book from a file and prints all the // information inside. func main() { TestWriteEvent() in, err := ioutil.ReadFile("/tmp/testing4.protobuf") if err != nil { log.Fatalln("Error reading file:", err) } allEvents := &pb.Event{} if err := proto.Unmarshal(in, allEvents); err != nil { log.Fatalln("Failed to parse events:", err) } // listPeople(os.Stdout, allEvents) // got := in.String() log.Println(in) } func marshalWriteToFile(myWriter *bufio.Writer, e *pb.Event) { buf, err := proto.Marshal(e) if err != nil { log.Fatal("marshaling error: ", err) } tmp, err := myWriter.Write(buf) myWriter.Flush() log.Println("bufio.Write() tmp, err = ", tmp, err) e.Id += 1 e.Name = "jcarrEvent21" buf, err = proto.Marshal(e) tmp2, err := myWriter.Write(buf) myWriter.Flush() log.Println("bufio.Write() tmp2, err = ", tmp2, err) } func TestWriteEvent() { buf := new(bytes.Buffer) // [START populate_proto] e := &pb.Event{ Id: 1234, Name: "jcarrEvent1", Email: "jcarr@wit.com", Results: []*pb.Response{ {Name: "555-4321", Type: pb.EventType_ADD}, }, } // [END populate_proto] e.Id += 1 e.Name = "jcarrEvent2" got := buf.String() log.Println(got) newfile, _ := os.Create("/tmp/testing4.protobuf") myWriter := bufio.NewWriter(newfile) marshalWriteToFile(myWriter, e) marshalUnmarshal() } func marshalUnmarshal() { test := &pb.Event{ Id: 1234, Name: "jcarrEvent1", Email: "jcarr@wit.com", Result: []*pb.Response{ {Name: "555-4321", Type: pb.EventType_ADD}, }, } data, err := proto.Marshal(test) if err != nil { log.Fatal("marshaling error: ", err) } newTest := &pb.Event{} err = proto.Unmarshal(data, newTest) if err != nil { log.Fatal("unmarshaling error: ", err) } else { log.Println("proto.Marshal() and proto.Unmarshal() worked") } }