(t reflect.Type, seen encodeFuncCache)
| 208 | } |
| 209 | |
| 210 | func encodeFuncMapAsSetOf(t reflect.Type, seen encodeFuncCache) encodeFunc { |
| 211 | key := t.Key() |
| 212 | typ := TypeOf(key) |
| 213 | enc := encodeFuncOf(key, seen) |
| 214 | |
| 215 | return func(w Writer, v reflect.Value, flags flags) error { |
| 216 | n := v.Len() |
| 217 | if n > math.MaxInt32 { |
| 218 | return fmt.Errorf("map length is too large to be represented in thrift: %d > max(int32)", n) |
| 219 | } |
| 220 | |
| 221 | err := w.WriteSet(Set{ |
| 222 | Size: int32(n), |
| 223 | Type: typ, |
| 224 | }) |
| 225 | if err != nil { |
| 226 | return err |
| 227 | } |
| 228 | if n == 0 { // empty map |
| 229 | return nil |
| 230 | } |
| 231 | |
| 232 | iter := v.MapRange() |
| 233 | for iter.Next() { |
| 234 | if err := enc(w, iter.Key(), flags); err != nil { |
| 235 | return err |
| 236 | } |
| 237 | } |
| 238 | |
| 239 | return nil |
| 240 | } |
| 241 | } |
| 242 | |
| 243 | type structEncoder struct { |
| 244 | fields []structEncoderField |
no test coverage detected
searching dependent graphs…