func HandleEvent(tags *event.EventHeaderTags, ev event.Event, ctx appengine.Context, sender EventSendService) error { res, err := handleRecvEvent(tags, ev, ctx) if nil != err { ctx.Errorf("Failed to handle event[%d:%d] for reason:%v", ev.GetType(), ev.GetVersion(), err) return err } if nil == res { var empty bytes.Buffer sender.Send(&empty) return nil } res.SetHash(ev.GetHash()) compressType := Cfg.CompressType if httpres, ok := res.(*event.HTTPResponseEvent); ok { v := httpres.GetHeader("Content-Type") if len(v) > 0 && Cfg.CompressType != event.COMPRESSOR_NONE { if isContentTypeInCompressFilter(v) { compressType = event.COMPRESSOR_NONE } } } x := new(event.CompressEvent) x.SetHash(ev.GetHash()) x.CompressType = compressType x.Ev = res y := new(event.EncryptEvent) y.SetHash(ev.GetHash()) y.EncryptType = Cfg.EncryptType y.Ev = x var buf bytes.Buffer tags.Encode(&buf) event.EncodeEvent(&buf, y) sender.Send(&buf) return nil }