mirror of
https://github.com/TeaOSLab/EdgeNode.git
synced 2025-11-08 03:00:27 +08:00
77 lines
1.6 KiB
Go
77 lines
1.6 KiB
Go
package caches
|
|
|
|
import (
|
|
"github.com/TeaOSLab/EdgeNode/internal/compressions"
|
|
)
|
|
|
|
type compressionWriter struct {
|
|
rawWriter Writer
|
|
writer compressions.Writer
|
|
key string
|
|
expiredAt int64
|
|
}
|
|
|
|
func NewCompressionWriter(gw Writer, cpWriter compressions.Writer, key string, expiredAt int64) Writer {
|
|
return &compressionWriter{
|
|
rawWriter: gw,
|
|
writer: cpWriter,
|
|
key: key,
|
|
expiredAt: expiredAt,
|
|
}
|
|
}
|
|
|
|
func (this *compressionWriter) WriteHeader(data []byte) (n int, err error) {
|
|
return this.writer.Write(data)
|
|
}
|
|
|
|
// WriteHeaderLength 写入Header长度数据
|
|
func (this *compressionWriter) WriteHeaderLength(headerLength int) error {
|
|
return nil
|
|
}
|
|
|
|
// WriteBodyLength 写入Body长度数据
|
|
func (this *compressionWriter) WriteBodyLength(bodyLength int64) error {
|
|
return nil
|
|
}
|
|
|
|
func (this *compressionWriter) Write(data []byte) (n int, err error) {
|
|
return this.writer.Write(data)
|
|
}
|
|
|
|
func (this *compressionWriter) Close() error {
|
|
err := this.writer.Close()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return this.rawWriter.Close()
|
|
}
|
|
|
|
func (this *compressionWriter) Discard() error {
|
|
err := this.writer.Close()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return this.rawWriter.Discard()
|
|
}
|
|
|
|
func (this *compressionWriter) Key() string {
|
|
return this.key
|
|
}
|
|
|
|
func (this *compressionWriter) ExpiredAt() int64 {
|
|
return this.expiredAt
|
|
}
|
|
|
|
func (this *compressionWriter) HeaderSize() int64 {
|
|
return this.rawWriter.HeaderSize()
|
|
}
|
|
|
|
func (this *compressionWriter) BodySize() int64 {
|
|
return this.rawWriter.BodySize()
|
|
}
|
|
|
|
// ItemType 内容类型
|
|
func (this *compressionWriter) ItemType() ItemType {
|
|
return this.rawWriter.ItemType()
|
|
}
|