本文整理汇总了Golang中github.com/uber/tchannel-go.InboundCall.Response方法的典型用法代码示例。如果您正苦于以下问题:Golang InboundCall.Response方法的具体用法?Golang InboundCall.Response怎么用?Golang InboundCall.Response使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/uber/tchannel-go.InboundCall
的用法示例。
在下文中一共展示了InboundCall.Response方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: handle
func (s *Server) handle(origCtx context.Context, handler handler, method string, call *tchannel.InboundCall) error {
reader, err := call.Arg2Reader()
if err != nil {
return err
}
headers, err := readHeaders(reader)
if err != nil {
return err
}
if err := reader.Close(); err != nil {
return err
}
reader, err = call.Arg3Reader()
if err != nil {
return err
}
ctx := WithHeaders(origCtx, headers)
protocol := thrift.NewTBinaryProtocolTransport(&readWriterTransport{Reader: reader})
success, resp, err := handler.server.Handle(ctx, method, protocol)
if err != nil {
reader.Close()
call.Response().SendSystemError(err)
return nil
}
if err := reader.Close(); err != nil {
return err
}
if !success {
call.Response().SetApplicationError()
}
writer, err := call.Response().Arg2Writer()
if err != nil {
return err
}
if err := writeHeaders(writer, ctx.ResponseHeaders()); err != nil {
return err
}
if err := writer.Close(); err != nil {
return err
}
writer, err = call.Response().Arg3Writer()
protocol = thrift.NewTBinaryProtocolTransport(&readWriterTransport{Writer: writer})
resp.Write(protocol)
err = writer.Close()
if handler.postResponseCB != nil {
handler.postResponseCB(method, resp)
}
return err
}
示例2: handle
func (s *Server) handle(origCtx context.Context, handler handler, method string, call *tchannel.InboundCall) error {
reader, err := call.Arg2Reader()
if err != nil {
return err
}
headers, err := ReadHeaders(reader)
if err != nil {
return err
}
if err := reader.Close(); err != nil {
return err
}
reader, err = call.Arg3Reader()
if err != nil {
return err
}
tracer := tchannel.TracerFromRegistrar(s.ch)
origCtx = tchannel.ExtractInboundSpan(origCtx, call, headers, tracer)
ctx := s.ctxFn(origCtx, method, headers)
wp := getProtocolReader(reader)
success, resp, err := handler.server.Handle(ctx, method, wp.protocol)
thriftProtocolPool.Put(wp)
if err != nil {
if _, ok := err.(thrift.TProtocolException); ok {
// We failed to parse the Thrift generated code, so convert the error to bad request.
err = tchannel.NewSystemError(tchannel.ErrCodeBadRequest, err.Error())
}
reader.Close()
call.Response().SendSystemError(err)
return nil
}
if err := reader.Close(); err != nil {
return err
}
if !success {
call.Response().SetApplicationError()
}
writer, err := call.Response().Arg2Writer()
if err != nil {
return err
}
if err := WriteHeaders(writer, ctx.ResponseHeaders()); err != nil {
return err
}
if err := writer.Close(); err != nil {
return err
}
writer, err = call.Response().Arg3Writer()
wp = getProtocolWriter(writer)
resp.Write(wp.protocol)
thriftProtocolPool.Put(wp)
err = writer.Close()
if handler.postResponseCB != nil {
handler.postResponseCB(ctx, method, resp)
}
return err
}