PreserveRefId preserve a ref id, which is used by Reference / SetReadObject to set up reference for object that is first deserialized. Returns a ref id or -1 if reference is not enabled.
()
| 215 | // set up reference for object that is first deserialized. |
| 216 | // Returns a ref id or -1 if reference is not enabled. |
| 217 | func (r *RefResolver) PreserveRefId() (int32, error) { |
| 218 | if !r.refTracking { |
| 219 | return -1, nil |
| 220 | } |
| 221 | nextReadRefId_ := len(r.readObjects) |
| 222 | if nextReadRefId_ > MaxInt32 { |
| 223 | return 0, fmt.Errorf("referencable objects exceeds max int32") |
| 224 | } |
| 225 | nextReadRefId := int32(nextReadRefId_) |
| 226 | r.readObjects = append(r.readObjects, reflect.Value{}) |
| 227 | r.readRefIds = append(r.readRefIds, nextReadRefId) |
| 228 | return nextReadRefId, nil |
| 229 | } |
| 230 | |
| 231 | func (r *RefResolver) TryPreserveRefId(buffer *ByteBuffer) (int32, error) { |
| 232 | var ctxErr Error |