func (c *connection) call(request *call) error { id := c.idGen.incrAndGet() rh := &proto.RequestHeader{ CallId: pb.Uint32(uint32(id)), MethodName: pb.String(request.methodName), RequestParam: pb.Bool(true), } request.id = uint32(id) bfrh := iohelper.NewPbBuffer() err := bfrh.WritePBMessage(rh) if err != nil { return errors.Trace(err) } bfr := iohelper.NewPbBuffer() err = bfr.WritePBMessage(request.request) if err != nil { return errors.Trace(err) } // Buf => // | total size | pb1 size | pb1 | pb2 size | pb2 | ... buf := iohelper.NewPbBuffer() buf.WriteDelimitedBuffers(bfrh, bfr) c.mu.Lock() c.ongoingCalls[id] = request c.in <- buf c.mu.Unlock() return nil }
func (c *connection) writeConnectionHeader() error { buf := iohelper.NewPbBuffer() service := pb.String(ServiceString[c.serviceType]) err := buf.WritePBMessage(&proto.ConnectionHeader{ UserInfo: &proto.UserInformation{ EffectiveUser: pb.String("pingcap"), }, ServiceName: service, }) if err != nil { return errors.Trace(err) } err = buf.PrependSize() if err != nil { return errors.Trace(err) } _, err = c.conn.Write(buf.Bytes()) if err != nil { return errors.Trace(err) } return nil }
func (c *connection) writeConnectionHeader() error { buf := iohelper.NewPbBuffer() service := pb.String("ClientService") if c.isMaster { service = pb.String("MasterService") } err := buf.WritePBMessage(&proto.ConnectionHeader{ UserInfo: &proto.UserInformation{ EffectiveUser: pb.String("pingcap"), }, ServiceName: service, }) if err != nil { return err } err = buf.PrependSize() if err != nil { return err } _, err = c.conn.Write(buf.Bytes()) if err != nil { return err } return nil }
func (c *connection) call(request *call) error { id := c.idGen.incrAndGet() rh := &proto.RequestHeader{ CallId: pb.Uint32(uint32(id)), MethodName: pb.String(request.methodName), RequestParam: pb.Bool(true), } request.id = uint32(id) bfrh := iohelper.NewPbBuffer() err := bfrh.WritePBMessage(rh) if err != nil { return err } bfr := iohelper.NewPbBuffer() err = bfr.WritePBMessage(request.request) if err != nil { return err } buf := iohelper.NewPbBuffer() //Buf=> | total size | pb1 size| pb1 size | pb2 size | pb2 | ... buf.WriteDelimitedBuffers(bfrh, bfr) c.mu.Lock() c.ongoingCalls[id] = request //n, err := c.conn.Write(buf.Bytes()) c.in <- buf c.mu.Unlock() /* if err != nil { return err } if n != len(buf.Bytes()) { return fmt.Errorf("Sent bytes not match number bytes [n=%d] [actual_n=%d]", n, len(buf.Bytes())) } */ return nil }