// Mostly borrowed from generated thrift code `Process` method, but with timing added. func (p ThriftOverHTTPHandler) handle(iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { name, _, seqId, err := iprot.ReadMessageBegin() if err != nil { return false, err } if processor, ok := p.GetProcessorFunction(name); ok { start := time.Now() success, err = processor.Process(seqId, iprot, oprot) if p.stats != nil { p.stats.TimeSince(name, start) } return } iprot.Skip(thrift.STRUCT) iprot.ReadMessageEnd() e := thrift.NewTApplicationException(thrift.UNKNOWN_METHOD, "Unknown function "+name) oprot.WriteMessageBegin(name, thrift.EXCEPTION, seqId) e.Write(oprot) oprot.WriteMessageEnd() oprot.Flush() return false, e }
// Mostly borrowed from generated thrift code `Process` method, but with timing added. func (p LoggedProcessor) Process(iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { name, _, seqId, err := iprot.ReadMessageBegin() if err != nil { return false, err } if processor, ok := p.GetProcessorFunction(name); ok { if p.debug { log.Println("[rpc]", name) } start := time.Now() success, err = processor.Process(seqId, iprot, oprot) if p.stats != nil { if err != nil { if p.debug { log.Println("[rpc]", name, err) } p.stats.Inc("rpc.error." + name) } dur := time.Now().Sub(start) p.stats.Time("rpc.timing._all_", dur) p.stats.Time("rpc.timing."+name, dur) } return success, err } iprot.Skip(thrift.STRUCT) iprot.ReadMessageEnd() e := thrift.NewTApplicationException(thrift.UNKNOWN_METHOD, "Unknown function "+name) if p.debug { log.Println("[rpc] unknown function:", name) } if p.stats != nil { p.stats.Inc("rpc.error.unknown_function." + name) } oprot.WriteMessageBegin(name, thrift.EXCEPTION, seqId) e.Write(oprot) oprot.WriteMessageEnd() oprot.Flush() return true, e }
func (p *AccountProcessor) Process(iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { name, _, seqId, err := iprot.ReadMessageBegin() if err != nil { return false, err } if processor, ok := p.GetProcessorFunction(name); ok { return processor.Process(seqId, iprot, oprot) } iprot.Skip(thrift.STRUCT) iprot.ReadMessageEnd() x3 := thrift.NewTApplicationException(thrift.UNKNOWN_METHOD, "Unknown function "+name) oprot.WriteMessageBegin(name, thrift.EXCEPTION, seqId) x3.Write(oprot) oprot.WriteMessageEnd() oprot.Flush() return false, x3 }