github.com/cloudwego/dynamicgo@v0.2.6-0.20240519101509-707f41b6b834/testdata/kitex_gen/null/k-null.go (about)

     1  // Code generated by Kitex v0.0.3. DO NOT EDIT.
     2  
     3  package null
     4  
     5  import (
     6  	"bytes"
     7  	"fmt"
     8  	"reflect"
     9  	"strings"
    10  
    11  	"github.com/apache/thrift/lib/go/thrift"
    12  
    13  	"github.com/cloudwego/kitex/pkg/protocol/bthrift"
    14  )
    15  
    16  // unused protection
    17  var (
    18  	_ = fmt.Formatter(nil)
    19  	_ = (*bytes.Buffer)(nil)
    20  	_ = (*strings.Builder)(nil)
    21  	_ = reflect.Type(nil)
    22  	_ = thrift.TProtocol(nil)
    23  	_ = bthrift.BinaryWriter(nil)
    24  )
    25  
    26  func (p *NullStruct) FastRead(buf []byte) (int, error) {
    27  	var err error
    28  	var offset int
    29  	var l int
    30  	var fieldTypeId thrift.TType
    31  	var fieldId int16
    32  	var issetNull3 bool = false
    33  	_, l, err = bthrift.Binary.ReadStructBegin(buf)
    34  	offset += l
    35  	if err != nil {
    36  		goto ReadStructBeginError
    37  	}
    38  
    39  	for {
    40  		_, fieldTypeId, fieldId, l, err = bthrift.Binary.ReadFieldBegin(buf[offset:])
    41  		offset += l
    42  		if err != nil {
    43  			goto ReadFieldBeginError
    44  		}
    45  		if fieldTypeId == thrift.STOP {
    46  			break
    47  		}
    48  		switch fieldId {
    49  		case 1:
    50  			if fieldTypeId == thrift.I64 {
    51  				l, err = p.FastReadField1(buf[offset:])
    52  				offset += l
    53  				if err != nil {
    54  					goto ReadFieldError
    55  				}
    56  			} else {
    57  				l, err = bthrift.Binary.Skip(buf[offset:], fieldTypeId)
    58  				offset += l
    59  				if err != nil {
    60  					goto SkipFieldError
    61  				}
    62  			}
    63  		case 2:
    64  			if fieldTypeId == thrift.I64 {
    65  				l, err = p.FastReadField2(buf[offset:])
    66  				offset += l
    67  				if err != nil {
    68  					goto ReadFieldError
    69  				}
    70  			} else {
    71  				l, err = bthrift.Binary.Skip(buf[offset:], fieldTypeId)
    72  				offset += l
    73  				if err != nil {
    74  					goto SkipFieldError
    75  				}
    76  			}
    77  		case 3:
    78  			if fieldTypeId == thrift.I64 {
    79  				l, err = p.FastReadField3(buf[offset:])
    80  				offset += l
    81  				if err != nil {
    82  					goto ReadFieldError
    83  				}
    84  				issetNull3 = true
    85  			} else {
    86  				l, err = bthrift.Binary.Skip(buf[offset:], fieldTypeId)
    87  				offset += l
    88  				if err != nil {
    89  					goto SkipFieldError
    90  				}
    91  			}
    92  		case 4:
    93  			if fieldTypeId == thrift.LIST {
    94  				l, err = p.FastReadField4(buf[offset:])
    95  				offset += l
    96  				if err != nil {
    97  					goto ReadFieldError
    98  				}
    99  			} else {
   100  				l, err = bthrift.Binary.Skip(buf[offset:], fieldTypeId)
   101  				offset += l
   102  				if err != nil {
   103  					goto SkipFieldError
   104  				}
   105  			}
   106  		case 5:
   107  			if fieldTypeId == thrift.MAP {
   108  				l, err = p.FastReadField5(buf[offset:])
   109  				offset += l
   110  				if err != nil {
   111  					goto ReadFieldError
   112  				}
   113  			} else {
   114  				l, err = bthrift.Binary.Skip(buf[offset:], fieldTypeId)
   115  				offset += l
   116  				if err != nil {
   117  					goto SkipFieldError
   118  				}
   119  			}
   120  		case 6:
   121  			if fieldTypeId == thrift.MAP {
   122  				l, err = p.FastReadField6(buf[offset:])
   123  				offset += l
   124  				if err != nil {
   125  					goto ReadFieldError
   126  				}
   127  			} else {
   128  				l, err = bthrift.Binary.Skip(buf[offset:], fieldTypeId)
   129  				offset += l
   130  				if err != nil {
   131  					goto SkipFieldError
   132  				}
   133  			}
   134  		default:
   135  			l, err = bthrift.Binary.Skip(buf[offset:], fieldTypeId)
   136  			offset += l
   137  			if err != nil {
   138  				goto SkipFieldError
   139  			}
   140  		}
   141  
   142  		l, err = bthrift.Binary.ReadFieldEnd(buf[offset:])
   143  		offset += l
   144  		if err != nil {
   145  			goto ReadFieldEndError
   146  		}
   147  	}
   148  	l, err = bthrift.Binary.ReadStructEnd(buf[offset:])
   149  	offset += l
   150  	if err != nil {
   151  		goto ReadStructEndError
   152  	}
   153  
   154  	if !issetNull3 {
   155  		fieldId = 3
   156  		goto RequiredFieldNotSetError
   157  	}
   158  	return offset, nil
   159  ReadStructBeginError:
   160  	return offset, thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err)
   161  ReadFieldBeginError:
   162  	return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err)
   163  ReadFieldError:
   164  	return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_NullStruct[fieldId]), err)
   165  SkipFieldError:
   166  	return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err)
   167  ReadFieldEndError:
   168  	return offset, thrift.PrependError(fmt.Sprintf("%T read field end error", p), err)
   169  ReadStructEndError:
   170  	return offset, thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
   171  RequiredFieldNotSetError:
   172  	return offset, thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field %s is not set", fieldIDToName_NullStruct[fieldId]))
   173  }
   174  
   175  func (p *NullStruct) FastReadField1(buf []byte) (int, error) {
   176  	offset := 0
   177  
   178  	if v, l, err := bthrift.Binary.ReadI64(buf[offset:]); err != nil {
   179  		return offset, err
   180  	} else {
   181  		offset += l
   182  
   183  		p.Null1 = v
   184  
   185  	}
   186  	return offset, nil
   187  }
   188  
   189  func (p *NullStruct) FastReadField2(buf []byte) (int, error) {
   190  	offset := 0
   191  
   192  	if v, l, err := bthrift.Binary.ReadI64(buf[offset:]); err != nil {
   193  		return offset, err
   194  	} else {
   195  		offset += l
   196  		p.Null2 = &v
   197  
   198  	}
   199  	return offset, nil
   200  }
   201  
   202  func (p *NullStruct) FastReadField3(buf []byte) (int, error) {
   203  	offset := 0
   204  
   205  	if v, l, err := bthrift.Binary.ReadI64(buf[offset:]); err != nil {
   206  		return offset, err
   207  	} else {
   208  		offset += l
   209  
   210  		p.Null3 = v
   211  
   212  	}
   213  	return offset, nil
   214  }
   215  
   216  func (p *NullStruct) FastReadField4(buf []byte) (int, error) {
   217  	offset := 0
   218  
   219  	_, size, l, err := bthrift.Binary.ReadListBegin(buf[offset:])
   220  	offset += l
   221  	if err != nil {
   222  		return offset, err
   223  	}
   224  	p.Null4 = make([]int64, 0, size)
   225  	for i := 0; i < size; i++ {
   226  		var _elem int64
   227  		if v, l, err := bthrift.Binary.ReadI64(buf[offset:]); err != nil {
   228  			return offset, err
   229  		} else {
   230  			offset += l
   231  
   232  			_elem = v
   233  
   234  		}
   235  
   236  		p.Null4 = append(p.Null4, _elem)
   237  	}
   238  	if l, err := bthrift.Binary.ReadListEnd(buf[offset:]); err != nil {
   239  		return offset, err
   240  	} else {
   241  		offset += l
   242  	}
   243  	return offset, nil
   244  }
   245  
   246  func (p *NullStruct) FastReadField5(buf []byte) (int, error) {
   247  	offset := 0
   248  
   249  	_, _, size, l, err := bthrift.Binary.ReadMapBegin(buf[offset:])
   250  	offset += l
   251  	if err != nil {
   252  		return offset, err
   253  	}
   254  	p.Null5 = make(map[string]int64, size)
   255  	for i := 0; i < size; i++ {
   256  		var _key string
   257  		if v, l, err := bthrift.Binary.ReadString(buf[offset:]); err != nil {
   258  			return offset, err
   259  		} else {
   260  			offset += l
   261  
   262  			_key = v
   263  
   264  		}
   265  
   266  		var _val int64
   267  		if v, l, err := bthrift.Binary.ReadI64(buf[offset:]); err != nil {
   268  			return offset, err
   269  		} else {
   270  			offset += l
   271  
   272  			_val = v
   273  
   274  		}
   275  
   276  		p.Null5[_key] = _val
   277  	}
   278  	if l, err := bthrift.Binary.ReadMapEnd(buf[offset:]); err != nil {
   279  		return offset, err
   280  	} else {
   281  		offset += l
   282  	}
   283  	return offset, nil
   284  }
   285  
   286  func (p *NullStruct) FastReadField6(buf []byte) (int, error) {
   287  	offset := 0
   288  
   289  	_, _, size, l, err := bthrift.Binary.ReadMapBegin(buf[offset:])
   290  	offset += l
   291  	if err != nil {
   292  		return offset, err
   293  	}
   294  	p.Null6 = make(map[int64]int64, size)
   295  	for i := 0; i < size; i++ {
   296  		var _key int64
   297  		if v, l, err := bthrift.Binary.ReadI64(buf[offset:]); err != nil {
   298  			return offset, err
   299  		} else {
   300  			offset += l
   301  
   302  			_key = v
   303  
   304  		}
   305  
   306  		var _val int64
   307  		if v, l, err := bthrift.Binary.ReadI64(buf[offset:]); err != nil {
   308  			return offset, err
   309  		} else {
   310  			offset += l
   311  
   312  			_val = v
   313  
   314  		}
   315  
   316  		p.Null6[_key] = _val
   317  	}
   318  	if l, err := bthrift.Binary.ReadMapEnd(buf[offset:]); err != nil {
   319  		return offset, err
   320  	} else {
   321  		offset += l
   322  	}
   323  	return offset, nil
   324  }
   325  
   326  // for compatibility
   327  func (p *NullStruct) FastWrite(buf []byte) int {
   328  	return 0
   329  }
   330  
   331  func (p *NullStruct) FastWriteNocopy(buf []byte, binaryWriter bthrift.BinaryWriter) int {
   332  	offset := 0
   333  	offset += bthrift.Binary.WriteStructBegin(buf[offset:], "NullStruct")
   334  	if p != nil {
   335  		offset += p.fastWriteField1(buf[offset:], binaryWriter)
   336  		offset += p.fastWriteField2(buf[offset:], binaryWriter)
   337  		offset += p.fastWriteField3(buf[offset:], binaryWriter)
   338  		offset += p.fastWriteField4(buf[offset:], binaryWriter)
   339  		offset += p.fastWriteField5(buf[offset:], binaryWriter)
   340  		offset += p.fastWriteField6(buf[offset:], binaryWriter)
   341  	}
   342  	offset += bthrift.Binary.WriteFieldStop(buf[offset:])
   343  	offset += bthrift.Binary.WriteStructEnd(buf[offset:])
   344  	return offset
   345  }
   346  
   347  func (p *NullStruct) BLength() int {
   348  	l := 0
   349  	l += bthrift.Binary.StructBeginLength("NullStruct")
   350  	if p != nil {
   351  		l += p.field1Length()
   352  		l += p.field2Length()
   353  		l += p.field3Length()
   354  		l += p.field4Length()
   355  		l += p.field5Length()
   356  		l += p.field6Length()
   357  	}
   358  	l += bthrift.Binary.FieldStopLength()
   359  	l += bthrift.Binary.StructEndLength()
   360  	return l
   361  }
   362  
   363  func (p *NullStruct) fastWriteField1(buf []byte, binaryWriter bthrift.BinaryWriter) int {
   364  	offset := 0
   365  	offset += bthrift.Binary.WriteFieldBegin(buf[offset:], "Null1", thrift.I64, 1)
   366  	offset += bthrift.Binary.WriteI64(buf[offset:], p.Null1)
   367  
   368  	offset += bthrift.Binary.WriteFieldEnd(buf[offset:])
   369  	return offset
   370  }
   371  
   372  func (p *NullStruct) fastWriteField2(buf []byte, binaryWriter bthrift.BinaryWriter) int {
   373  	offset := 0
   374  	if p.IsSetNull2() {
   375  		offset += bthrift.Binary.WriteFieldBegin(buf[offset:], "Null2", thrift.I64, 2)
   376  		offset += bthrift.Binary.WriteI64(buf[offset:], *p.Null2)
   377  
   378  		offset += bthrift.Binary.WriteFieldEnd(buf[offset:])
   379  	}
   380  	return offset
   381  }
   382  
   383  func (p *NullStruct) fastWriteField3(buf []byte, binaryWriter bthrift.BinaryWriter) int {
   384  	offset := 0
   385  	offset += bthrift.Binary.WriteFieldBegin(buf[offset:], "Null3", thrift.I64, 3)
   386  	offset += bthrift.Binary.WriteI64(buf[offset:], p.Null3)
   387  
   388  	offset += bthrift.Binary.WriteFieldEnd(buf[offset:])
   389  	return offset
   390  }
   391  
   392  func (p *NullStruct) fastWriteField4(buf []byte, binaryWriter bthrift.BinaryWriter) int {
   393  	offset := 0
   394  	offset += bthrift.Binary.WriteFieldBegin(buf[offset:], "Null4", thrift.LIST, 4)
   395  	offset += bthrift.Binary.WriteListBegin(buf[offset:], thrift.I64, len(p.Null4))
   396  	for _, v := range p.Null4 {
   397  		offset += bthrift.Binary.WriteI64(buf[offset:], v)
   398  
   399  	}
   400  	offset += bthrift.Binary.WriteListEnd(buf[offset:])
   401  	offset += bthrift.Binary.WriteFieldEnd(buf[offset:])
   402  	return offset
   403  }
   404  
   405  func (p *NullStruct) fastWriteField5(buf []byte, binaryWriter bthrift.BinaryWriter) int {
   406  	offset := 0
   407  	offset += bthrift.Binary.WriteFieldBegin(buf[offset:], "Null5", thrift.MAP, 5)
   408  	offset += bthrift.Binary.WriteMapBegin(buf[offset:], thrift.STRING, thrift.I64, len(p.Null5))
   409  	for k, v := range p.Null5 {
   410  
   411  		offset += bthrift.Binary.WriteStringNocopy(buf[offset:], binaryWriter, k)
   412  
   413  		offset += bthrift.Binary.WriteI64(buf[offset:], v)
   414  
   415  	}
   416  	offset += bthrift.Binary.WriteMapEnd(buf[offset:])
   417  	offset += bthrift.Binary.WriteFieldEnd(buf[offset:])
   418  	return offset
   419  }
   420  
   421  func (p *NullStruct) fastWriteField6(buf []byte, binaryWriter bthrift.BinaryWriter) int {
   422  	offset := 0
   423  	offset += bthrift.Binary.WriteFieldBegin(buf[offset:], "Null6", thrift.MAP, 6)
   424  	offset += bthrift.Binary.WriteMapBegin(buf[offset:], thrift.I64, thrift.I64, len(p.Null6))
   425  	for k, v := range p.Null6 {
   426  
   427  		offset += bthrift.Binary.WriteI64(buf[offset:], k)
   428  
   429  		offset += bthrift.Binary.WriteI64(buf[offset:], v)
   430  
   431  	}
   432  	offset += bthrift.Binary.WriteMapEnd(buf[offset:])
   433  	offset += bthrift.Binary.WriteFieldEnd(buf[offset:])
   434  	return offset
   435  }
   436  
   437  func (p *NullStruct) field1Length() int {
   438  	l := 0
   439  	l += bthrift.Binary.FieldBeginLength("Null1", thrift.I64, 1)
   440  	l += bthrift.Binary.I64Length(p.Null1)
   441  
   442  	l += bthrift.Binary.FieldEndLength()
   443  	return l
   444  }
   445  
   446  func (p *NullStruct) field2Length() int {
   447  	l := 0
   448  	if p.IsSetNull2() {
   449  		l += bthrift.Binary.FieldBeginLength("Null2", thrift.I64, 2)
   450  		l += bthrift.Binary.I64Length(*p.Null2)
   451  
   452  		l += bthrift.Binary.FieldEndLength()
   453  	}
   454  	return l
   455  }
   456  
   457  func (p *NullStruct) field3Length() int {
   458  	l := 0
   459  	l += bthrift.Binary.FieldBeginLength("Null3", thrift.I64, 3)
   460  	l += bthrift.Binary.I64Length(p.Null3)
   461  
   462  	l += bthrift.Binary.FieldEndLength()
   463  	return l
   464  }
   465  
   466  func (p *NullStruct) field4Length() int {
   467  	l := 0
   468  	l += bthrift.Binary.FieldBeginLength("Null4", thrift.LIST, 4)
   469  	l += bthrift.Binary.ListBeginLength(thrift.I64, len(p.Null4))
   470  	var tmpV int64
   471  	l += bthrift.Binary.I64Length(int64(tmpV)) * len(p.Null4)
   472  	l += bthrift.Binary.ListEndLength()
   473  	l += bthrift.Binary.FieldEndLength()
   474  	return l
   475  }
   476  
   477  func (p *NullStruct) field5Length() int {
   478  	l := 0
   479  	l += bthrift.Binary.FieldBeginLength("Null5", thrift.MAP, 5)
   480  	l += bthrift.Binary.MapBeginLength(thrift.STRING, thrift.I64, len(p.Null5))
   481  	for k, v := range p.Null5 {
   482  
   483  		l += bthrift.Binary.StringLength(k)
   484  
   485  		l += bthrift.Binary.I64Length(v)
   486  
   487  	}
   488  	l += bthrift.Binary.MapEndLength()
   489  	l += bthrift.Binary.FieldEndLength()
   490  	return l
   491  }
   492  
   493  func (p *NullStruct) field6Length() int {
   494  	l := 0
   495  	l += bthrift.Binary.FieldBeginLength("Null6", thrift.MAP, 6)
   496  	l += bthrift.Binary.MapBeginLength(thrift.I64, thrift.I64, len(p.Null6))
   497  	var tmpK int64
   498  	var tmpV int64
   499  	l += (bthrift.Binary.I64Length(int64(tmpK)) + bthrift.Binary.I64Length(int64(tmpV))) * len(p.Null6)
   500  	l += bthrift.Binary.MapEndLength()
   501  	l += bthrift.Binary.FieldEndLength()
   502  	return l
   503  }
   504  
   505  func (p *NullServiceNullTestArgs) FastRead(buf []byte) (int, error) {
   506  	var err error
   507  	var offset int
   508  	var l int
   509  	var fieldTypeId thrift.TType
   510  	var fieldId int16
   511  	_, l, err = bthrift.Binary.ReadStructBegin(buf)
   512  	offset += l
   513  	if err != nil {
   514  		goto ReadStructBeginError
   515  	}
   516  
   517  	for {
   518  		_, fieldTypeId, fieldId, l, err = bthrift.Binary.ReadFieldBegin(buf[offset:])
   519  		offset += l
   520  		if err != nil {
   521  			goto ReadFieldBeginError
   522  		}
   523  		if fieldTypeId == thrift.STOP {
   524  			break
   525  		}
   526  		switch fieldId {
   527  		case 1:
   528  			if fieldTypeId == thrift.STRUCT {
   529  				l, err = p.FastReadField1(buf[offset:])
   530  				offset += l
   531  				if err != nil {
   532  					goto ReadFieldError
   533  				}
   534  			} else {
   535  				l, err = bthrift.Binary.Skip(buf[offset:], fieldTypeId)
   536  				offset += l
   537  				if err != nil {
   538  					goto SkipFieldError
   539  				}
   540  			}
   541  		default:
   542  			l, err = bthrift.Binary.Skip(buf[offset:], fieldTypeId)
   543  			offset += l
   544  			if err != nil {
   545  				goto SkipFieldError
   546  			}
   547  		}
   548  
   549  		l, err = bthrift.Binary.ReadFieldEnd(buf[offset:])
   550  		offset += l
   551  		if err != nil {
   552  			goto ReadFieldEndError
   553  		}
   554  	}
   555  	l, err = bthrift.Binary.ReadStructEnd(buf[offset:])
   556  	offset += l
   557  	if err != nil {
   558  		goto ReadStructEndError
   559  	}
   560  
   561  	return offset, nil
   562  ReadStructBeginError:
   563  	return offset, thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err)
   564  ReadFieldBeginError:
   565  	return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err)
   566  ReadFieldError:
   567  	return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_NullServiceNullTestArgs[fieldId]), err)
   568  SkipFieldError:
   569  	return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err)
   570  ReadFieldEndError:
   571  	return offset, thrift.PrependError(fmt.Sprintf("%T read field end error", p), err)
   572  ReadStructEndError:
   573  	return offset, thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
   574  }
   575  
   576  func (p *NullServiceNullTestArgs) FastReadField1(buf []byte) (int, error) {
   577  	offset := 0
   578  	p.Req = NewNullStruct()
   579  	if l, err := p.Req.FastRead(buf[offset:]); err != nil {
   580  		return offset, err
   581  	} else {
   582  		offset += l
   583  	}
   584  	return offset, nil
   585  }
   586  
   587  // for compatibility
   588  func (p *NullServiceNullTestArgs) FastWrite(buf []byte) int {
   589  	return 0
   590  }
   591  
   592  func (p *NullServiceNullTestArgs) FastWriteNocopy(buf []byte, binaryWriter bthrift.BinaryWriter) int {
   593  	offset := 0
   594  	offset += bthrift.Binary.WriteStructBegin(buf[offset:], "NullTest_args")
   595  	if p != nil {
   596  		offset += p.fastWriteField1(buf[offset:], binaryWriter)
   597  	}
   598  	offset += bthrift.Binary.WriteFieldStop(buf[offset:])
   599  	offset += bthrift.Binary.WriteStructEnd(buf[offset:])
   600  	return offset
   601  }
   602  
   603  func (p *NullServiceNullTestArgs) BLength() int {
   604  	l := 0
   605  	l += bthrift.Binary.StructBeginLength("NullTest_args")
   606  	if p != nil {
   607  		l += p.field1Length()
   608  	}
   609  	l += bthrift.Binary.FieldStopLength()
   610  	l += bthrift.Binary.StructEndLength()
   611  	return l
   612  }
   613  
   614  func (p *NullServiceNullTestArgs) fastWriteField1(buf []byte, binaryWriter bthrift.BinaryWriter) int {
   615  	offset := 0
   616  	offset += bthrift.Binary.WriteFieldBegin(buf[offset:], "req", thrift.STRUCT, 1)
   617  	offset += p.Req.FastWriteNocopy(buf[offset:], binaryWriter)
   618  	offset += bthrift.Binary.WriteFieldEnd(buf[offset:])
   619  	return offset
   620  }
   621  
   622  func (p *NullServiceNullTestArgs) field1Length() int {
   623  	l := 0
   624  	l += bthrift.Binary.FieldBeginLength("req", thrift.STRUCT, 1)
   625  	l += p.Req.BLength()
   626  	l += bthrift.Binary.FieldEndLength()
   627  	return l
   628  }
   629  
   630  func (p *NullServiceNullTestResult) FastRead(buf []byte) (int, error) {
   631  	var err error
   632  	var offset int
   633  	var l int
   634  	var fieldTypeId thrift.TType
   635  	var fieldId int16
   636  	_, l, err = bthrift.Binary.ReadStructBegin(buf)
   637  	offset += l
   638  	if err != nil {
   639  		goto ReadStructBeginError
   640  	}
   641  
   642  	for {
   643  		_, fieldTypeId, fieldId, l, err = bthrift.Binary.ReadFieldBegin(buf[offset:])
   644  		offset += l
   645  		if err != nil {
   646  			goto ReadFieldBeginError
   647  		}
   648  		if fieldTypeId == thrift.STOP {
   649  			break
   650  		}
   651  		switch fieldId {
   652  		case 0:
   653  			if fieldTypeId == thrift.STRUCT {
   654  				l, err = p.FastReadField0(buf[offset:])
   655  				offset += l
   656  				if err != nil {
   657  					goto ReadFieldError
   658  				}
   659  			} else {
   660  				l, err = bthrift.Binary.Skip(buf[offset:], fieldTypeId)
   661  				offset += l
   662  				if err != nil {
   663  					goto SkipFieldError
   664  				}
   665  			}
   666  		default:
   667  			l, err = bthrift.Binary.Skip(buf[offset:], fieldTypeId)
   668  			offset += l
   669  			if err != nil {
   670  				goto SkipFieldError
   671  			}
   672  		}
   673  
   674  		l, err = bthrift.Binary.ReadFieldEnd(buf[offset:])
   675  		offset += l
   676  		if err != nil {
   677  			goto ReadFieldEndError
   678  		}
   679  	}
   680  	l, err = bthrift.Binary.ReadStructEnd(buf[offset:])
   681  	offset += l
   682  	if err != nil {
   683  		goto ReadStructEndError
   684  	}
   685  
   686  	return offset, nil
   687  ReadStructBeginError:
   688  	return offset, thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err)
   689  ReadFieldBeginError:
   690  	return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err)
   691  ReadFieldError:
   692  	return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_NullServiceNullTestResult[fieldId]), err)
   693  SkipFieldError:
   694  	return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err)
   695  ReadFieldEndError:
   696  	return offset, thrift.PrependError(fmt.Sprintf("%T read field end error", p), err)
   697  ReadStructEndError:
   698  	return offset, thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
   699  }
   700  
   701  func (p *NullServiceNullTestResult) FastReadField0(buf []byte) (int, error) {
   702  	offset := 0
   703  	p.Success = NewNullStruct()
   704  	if l, err := p.Success.FastRead(buf[offset:]); err != nil {
   705  		return offset, err
   706  	} else {
   707  		offset += l
   708  	}
   709  	return offset, nil
   710  }
   711  
   712  // for compatibility
   713  func (p *NullServiceNullTestResult) FastWrite(buf []byte) int {
   714  	return 0
   715  }
   716  
   717  func (p *NullServiceNullTestResult) FastWriteNocopy(buf []byte, binaryWriter bthrift.BinaryWriter) int {
   718  	offset := 0
   719  	offset += bthrift.Binary.WriteStructBegin(buf[offset:], "NullTest_result")
   720  	if p != nil {
   721  		offset += p.fastWriteField0(buf[offset:], binaryWriter)
   722  	}
   723  	offset += bthrift.Binary.WriteFieldStop(buf[offset:])
   724  	offset += bthrift.Binary.WriteStructEnd(buf[offset:])
   725  	return offset
   726  }
   727  
   728  func (p *NullServiceNullTestResult) BLength() int {
   729  	l := 0
   730  	l += bthrift.Binary.StructBeginLength("NullTest_result")
   731  	if p != nil {
   732  		l += p.field0Length()
   733  	}
   734  	l += bthrift.Binary.FieldStopLength()
   735  	l += bthrift.Binary.StructEndLength()
   736  	return l
   737  }
   738  
   739  func (p *NullServiceNullTestResult) fastWriteField0(buf []byte, binaryWriter bthrift.BinaryWriter) int {
   740  	offset := 0
   741  	if p.IsSetSuccess() {
   742  		offset += bthrift.Binary.WriteFieldBegin(buf[offset:], "success", thrift.STRUCT, 0)
   743  		offset += p.Success.FastWriteNocopy(buf[offset:], binaryWriter)
   744  		offset += bthrift.Binary.WriteFieldEnd(buf[offset:])
   745  	}
   746  	return offset
   747  }
   748  
   749  func (p *NullServiceNullTestResult) field0Length() int {
   750  	l := 0
   751  	if p.IsSetSuccess() {
   752  		l += bthrift.Binary.FieldBeginLength("success", thrift.STRUCT, 0)
   753  		l += p.Success.BLength()
   754  		l += bthrift.Binary.FieldEndLength()
   755  	}
   756  	return l
   757  }
   758  
   759  func (p *NullServiceNullTestArgs) GetFirstArgument() interface{} {
   760  	return p.Req
   761  }
   762  
   763  func (p *NullServiceNullTestResult) GetResult() interface{} {
   764  	return p.Success
   765  }