in hessian.go [220:249]
func (h *HessianCodec) ReadAttachments() (map[string]string, error) {
if h.reader.Buffered() < h.bodyLen {
return nil, ErrBodyNotEnough
}
buf, err := h.reader.Peek(h.bodyLen)
if err != nil {
return nil, perrors.WithStack(err)
}
_, err = h.reader.Discard(h.bodyLen)
if err != nil { // this is impossible
return nil, perrors.WithStack(err)
}
switch h.pkgType & PackageType_BitSize {
case PackageRequest:
rspObj := make([]interface{}, 7)
if err = unpackRequestBody(NewDecoderWithSkip(buf[:]), rspObj); err != nil {
return nil, perrors.WithStack(err)
}
return rspObj[6].(map[string]string), nil
case PackageResponse:
rspObj := &Response{}
if err = unpackResponseBody(NewDecoderWithSkip(buf[:]), rspObj); err != nil {
return nil, perrors.WithStack(err)
}
return rspObj.Attachments, nil
}
return nil, nil
}