]> 127.0.0.1 Git - bili_danmu/.git/commitdiff
Improve 精准的保持牌子
authorqydysky <qydysky@foxmail.com>
Wed, 31 Jul 2024 13:32:30 +0000 (21:32 +0800)
committerqydysky <qydysky@foxmail.com>
Wed, 31 Jul 2024 13:32:30 +0000 (21:32 +0800)
Reply/F.go
Reply/Reply.go
Reply/flvHeader [deleted file]

index 02acea734034dce217f3f46a5b9c704476b25202..9be9e335c2eaca155bf0743b4266dce84e6b0e4b 100644 (file)
@@ -1017,21 +1017,21 @@ func KeepMedalLight(ctx context.Context, common *c.Common) {
                        h, m, s := time.Now().Clock()
                        now := h*3600 + m*60 + s
 
-                       if sec > now {
-                               select {
-                               case <-time.After(time.Second * time.Duration(sec-now)):
-                               case <-ctx.Done():
-                                       return
-                               }
-                       } else {
-                               select {
-                               case <-time.After(time.Hour*24 + time.Second*time.Duration(sec-now)):
-                               case <-ctx.Done():
-                                       return
+                       for {
+                               if sec >= now {
+                                       select {
+                                       case <-time.After(time.Second * time.Duration(sec-now)):
+                                       case <-ctx.Done():
+                                               return
+                                       }
+                               } else {
+                                       select {
+                                       case <-time.After(time.Hour*24 + time.Second*time.Duration(sec-now)):
+                                       case <-ctx.Done():
+                                               return
+                                       }
                                }
-                       }
 
-                       for {
                                if _, e := keepMedalLight.Main.Run(ctx, keepMedalLight.Func{
                                        Uid:         common.Uid,
                                        Logg:        flog,
@@ -1042,11 +1042,6 @@ func KeepMedalLight(ctx context.Context, common *c.Common) {
                                        flog.L(`E: `, e)
                                        return
                                }
-                               select {
-                               case <-time.After(time.Hour * 24):
-                               case <-ctx.Done():
-                                       return
-                               }
                        }
                }()
        }
index 37b9773654f92876680e15d8c310aabde072b6e9..b7ad593825231a2b8a8101962a2e94f1a6c6e73d 100644 (file)
@@ -39,20 +39,17 @@ type brotliDecoder struct {
        o     *bytes.Buffer
 }
 
-func (t *brotliDecoder) Decode(b *[]byte, offset int) error {
+func (t *brotliDecoder) Decode(b []byte, offset int) (buf []byte, err error) {
        t.inuse.Store(true)
-       defer t.inuse.Store(false)
-
-       t.i.Reset((*b)[offset:])
+       t.i.Reset(b[offset:])
        if err := t.d.Reset(t.i); err != nil {
-               return err
+               return nil, err
        }
        t.o.Reset()
        if _, err := t.o.ReadFrom(t.d); err != nil {
-               return err
+               return nil, err
        }
-       *b = append((*b)[:0], t.o.Bytes()...)
-       return nil
+       return t.o.Bytes(), nil
 }
 
 var brotliDecoders = pool.New(pool.PoolFunc[brotliDecoder]{
@@ -67,7 +64,10 @@ var brotliDecoders = pool.New(pool.PoolFunc[brotliDecoder]{
                return bd.inuse.Load()
        },
        Reuse: func(bd *brotliDecoder) *brotliDecoder { return bd },
-       Pool:  func(bd *brotliDecoder) *brotliDecoder { return bd },
+       Pool: func(bd *brotliDecoder) *brotliDecoder {
+               bd.inuse.Store(false)
+               return bd
+       },
 }, 10)
 
 // 返回数据分派
@@ -106,8 +106,9 @@ func Reply(common *c.Common, b []byte) {
                b = buf.Bytes()
        case c.WS_BODY_PROTOCOL_VERSION_BROTLI: // BROTLI
                decoder := brotliDecoders.Get()
-               e := decoder.Decode(&b, 16)
-               brotliDecoders.Put(decoder)
+               defer brotliDecoders.Put(decoder)
+               var e error
+               b, e = decoder.Decode(b, 16)
                if e != nil {
                        reply_log.L(`E: `, "解压错误", e)
                        return
diff --git a/Reply/flvHeader b/Reply/flvHeader
deleted file mode 100644 (file)
index 75362c7..0000000
Binary files a/Reply/flvHeader and /dev/null differ