(ctx context.Context, kv *Client, key string, updateFn func(*data) (*data, bool, error))
| 231 | } |
| 232 | |
| 233 | func casWithErr(ctx context.Context, kv *Client, key string, updateFn func(*data) (*data, bool, error)) error { |
| 234 | fn := func(in interface{}) (out interface{}, retry bool, err error) { |
| 235 | var r *data |
| 236 | if in != nil { |
| 237 | r = in.(*data) |
| 238 | } |
| 239 | |
| 240 | d, rt, e := updateFn(r) |
| 241 | if d == nil { |
| 242 | // translate nil pointer to nil interface value |
| 243 | return nil, rt, e |
| 244 | } |
| 245 | return d, rt, e |
| 246 | } |
| 247 | |
| 248 | return kv.CAS(ctx, key, fn) |
| 249 | } |
| 250 | |
| 251 | func getLocalhostAddr() string { |
| 252 | return getLocalhostAddrs()[0] |
no test coverage detected