(ctx *ReadContext, value reflect.Value)
| 371 | } |
| 372 | |
| 373 | func (s byteArraySerializer) ReadData(ctx *ReadContext, value reflect.Value) { |
| 374 | buf := ctx.Buffer() |
| 375 | err := ctx.Err() |
| 376 | length := buf.ReadLength(err) |
| 377 | if ctx.HasError() { |
| 378 | return |
| 379 | } |
| 380 | if length != value.Len() { |
| 381 | ctx.SetError(DeserializationErrorf("array length %d does not match serialized binary length %d", value.Len(), length)) |
| 382 | return |
| 383 | } |
| 384 | if !buf.CheckReadable(length, err) { |
| 385 | return |
| 386 | } |
| 387 | if length == 0 { |
| 388 | return |
| 389 | } |
| 390 | if value.CanAddr() { |
| 391 | buf.Read(value.Slice(0, length).Bytes()) |
| 392 | return |
| 393 | } |
| 394 | data := make([]byte, length) |
| 395 | buf.Read(data) |
| 396 | for i := 0; i < length && i < value.Len(); i++ { |
| 397 | value.Index(i).SetUint(uint64(data[i])) |
| 398 | } |
| 399 | } |
| 400 | |
| 401 | func (s byteArraySerializer) Read(ctx *ReadContext, refMode RefMode, readType bool, hasGenerics bool, value reflect.Value) { |
| 402 | done := readArrayRefAndType(ctx, refMode, readType, value) |
no test coverage detected