| 228 | var overrideApiTypes [numApis]map[OverrideTypeKey]apiType |
| 229 | |
| 230 | func RegisterOverride(req, res Message, key OverrideTypeKey) { |
| 231 | k1 := req.ApiKey() |
| 232 | k2 := res.ApiKey() |
| 233 | |
| 234 | if k1 != k2 { |
| 235 | panic(fmt.Sprintf("[%T/%T]: request and response API keys mismatch: %d != %d", req, res, k1, k2)) |
| 236 | } |
| 237 | |
| 238 | if overrideApiTypes[k1] == nil { |
| 239 | overrideApiTypes[k1] = make(map[OverrideTypeKey]apiType) |
| 240 | } |
| 241 | overrideApiTypes[k1][key] = apiType{ |
| 242 | requests: typesOf(req), |
| 243 | responses: typesOf(res), |
| 244 | } |
| 245 | } |
| 246 | |
| 247 | func typesOf(v interface{}) []messageType { |
| 248 | return makeTypes(reflect.TypeOf(v).Elem()) |