Dispatch is used to call the server side implement for the method defined in the tars file. withContext shows using context or not.
(tarsCtx context.Context, val interface{}, tarsReq *requestf.RequestPacket, tarsResp *requestf.ResponsePacket, withContext bool)
| 484 | |
| 485 | // Dispatch is used to call the server side implement for the method defined in the tars file. withContext shows using context or not. |
| 486 | func (obj *ServerF) Dispatch(tarsCtx context.Context, val interface{}, tarsReq *requestf.RequestPacket, tarsResp *requestf.ResponsePacket, withContext bool) (err error) { |
| 487 | var ( |
| 488 | length int32 |
| 489 | have bool |
| 490 | ty byte |
| 491 | ) |
| 492 | readBuf := codec.NewReader(tools.Int8ToByte(tarsReq.SBuffer)) |
| 493 | buf := codec.NewBuffer() |
| 494 | switch tarsReq.SFuncName { |
| 495 | case "keepAlive": |
| 496 | var serverInfo ServerInfo |
| 497 | if tarsReq.IVersion == basef.TARSVERSION { |
| 498 | err = serverInfo.ReadBlock(readBuf, 1, true) |
| 499 | if err != nil { |
| 500 | return err |
| 501 | } |
| 502 | } else if tarsReq.IVersion == basef.TUPVERSION { |
| 503 | reqTup := tup.NewUniAttribute() |
| 504 | reqTup.Decode(readBuf) |
| 505 | |
| 506 | var tupBuffer []byte |
| 507 | |
| 508 | reqTup.GetBuffer("serverInfo", &tupBuffer) |
| 509 | readBuf.Reset(tupBuffer) |
| 510 | err = serverInfo.ReadBlock(readBuf, 0, true) |
| 511 | if err != nil { |
| 512 | return err |
| 513 | } |
| 514 | } else if tarsReq.IVersion == basef.JSONVERSION { |
| 515 | var jsonData map[string]interface{} |
| 516 | decoder := json.NewDecoder(bytes.NewReader(readBuf.ToBytes())) |
| 517 | decoder.UseNumber() |
| 518 | err = decoder.Decode(&jsonData) |
| 519 | if err != nil { |
| 520 | return fmt.Errorf("decode reqpacket failed, error: %+v", err) |
| 521 | } |
| 522 | { |
| 523 | jsonStr, _ := json.Marshal(jsonData["serverInfo"]) |
| 524 | serverInfo.ResetDefault() |
| 525 | if err = json.Unmarshal(jsonStr, &serverInfo); err != nil { |
| 526 | return err |
| 527 | } |
| 528 | } |
| 529 | } else { |
| 530 | err = fmt.Errorf("decode reqpacket fail, error version: %d", tarsReq.IVersion) |
| 531 | return err |
| 532 | } |
| 533 | |
| 534 | var funRet int32 |
| 535 | if !withContext { |
| 536 | imp := val.(ServerFServant) |
| 537 | funRet, err = imp.KeepAlive(&serverInfo) |
| 538 | } else { |
| 539 | imp := val.(ServerFServantWithContext) |
| 540 | funRet, err = imp.KeepAlive(tarsCtx, &serverInfo) |
| 541 | } |
| 542 | if err != nil { |
| 543 | return err |
nothing calls this directly
no test coverage detected