chunkmaker

package
v1.4.4-alpha1202-diff-... Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 2, 2025 License: AGPL-3.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BytesHandler

func BytesHandler(data []byte, chunkSize int64, sep []byte, emitFunc func([]byte)) []byte

func NewChunkChannelFromFilename

func NewChunkChannelFromFilename(ctx context.Context, filename string) *chanx.UnlimitedChan[Chunk]

func NewChunkChannelFromReader

func NewChunkChannelFromReader(ctx context.Context, r io.ReadCloser) *chanx.UnlimitedChan[Chunk]

func RuneHandler

func RuneHandler(data []rune, chunkSize int64, sep []rune, emitFunc func([]rune)) []rune

Types

type BufferChunk

type BufferChunk struct {
	// contains filtered or unexported fields
}

func NewBufferChunk

func NewBufferChunk(buffer []byte) *BufferChunk

func NewBufferChunkEx

func NewBufferChunkEx(buffer []byte, mimeType *mimetype.MIME, verbose string) *BufferChunk

func (*BufferChunk) BytesSize

func (c *BufferChunk) BytesSize() int64

func (*BufferChunk) Data

func (c *BufferChunk) Data() []byte

func (*BufferChunk) Dump

func (c *BufferChunk) Dump() string

func (*BufferChunk) DumpWithOverlap

func (c *BufferChunk) DumpWithOverlap(i int) string

func (*BufferChunk) FlushAllChunkSizeTo

func (c *BufferChunk) FlushAllChunkSizeTo(dst *chanx.UnlimitedChan[Chunk], chunkSize int64, sep string, haveTheLastChunk bool)

func (*BufferChunk) FlushFullChunkSizeTo

func (c *BufferChunk) FlushFullChunkSizeTo(dst *chanx.UnlimitedChan[Chunk], chunkSize int64, sep string)

func (*BufferChunk) HaveLastChunk

func (c *BufferChunk) HaveLastChunk() bool

func (*BufferChunk) IsTheLastChunk

func (c *BufferChunk) IsTheLastChunk() bool

func (*BufferChunk) IsUTF8

func (c *BufferChunk) IsUTF8() bool

func (*BufferChunk) LastChunk

func (c *BufferChunk) LastChunk() Chunk

func (*BufferChunk) MIMEType

func (c *BufferChunk) MIMEType() *mimetype.MIME

func (*BufferChunk) PrevNBytes

func (c *BufferChunk) PrevNBytes(n int) []byte

PrevNBytes collects N bytes by traversing the prev chain, excluding the current chunk's data.

func (*BufferChunk) PrevNBytesUntil

func (c *BufferChunk) PrevNBytesUntil(sep []byte, n int) ([]byte, bool)

func (*BufferChunk) RunesSize

func (c *BufferChunk) RunesSize() int64

func (*BufferChunk) SetIsTheLastChunk

func (c *BufferChunk) SetIsTheLastChunk(isLast bool)

func (*BufferChunk) SetPreviousChunk

func (c *BufferChunk) SetPreviousChunk(prev Chunk)

func (*BufferChunk) VerboseMessage

func (c *BufferChunk) VerboseMessage() string

func (*BufferChunk) Write

func (c *BufferChunk) Write(i []byte)

type Chunk

type Chunk interface {
	IsUTF8() bool
	Data() []byte
	Dump() string
	DumpWithOverlap(i int) string
	BytesSize() int64
	RunesSize() int64
	HaveLastChunk() bool
	LastChunk() Chunk
	PrevNBytes(n int) []byte
	PrevNBytesUntil(sep []byte, n int) ([]byte, bool)
	MIMEType() *mimetype.MIME
	IsTheLastChunk() bool // 是否是最后一个 chunk
	SetIsTheLastChunk(bool)
	VerboseMessage() string
	SetPreviousChunk(Chunk)
}

type ChunkMaker

type ChunkMaker interface {
	Close() error
	OutputChannel() <-chan Chunk
}

func NewChunkMakerFromFile

func NewChunkMakerFromFile(targetFile string, opts ...Option) (ChunkMaker, error)

func NewChunkMakerFromPath

func NewChunkMakerFromPath(targetPath string, opts ...Option) (ChunkMaker, error)

type Config

type Config struct {
	// contains filtered or unexported fields
}

func NewConfig

func NewConfig(opts ...Option) *Config

type MergerChunkMaker

type MergerChunkMaker struct {
	// contains filtered or unexported fields
}

func NewMergerChunkMaker

func NewMergerChunkMaker(ctx context.Context) *MergerChunkMaker

func (*MergerChunkMaker) AddInput

func (m *MergerChunkMaker) AddInput(input <-chan Chunk)

func (*MergerChunkMaker) Close

func (m *MergerChunkMaker) Close() error

func (*MergerChunkMaker) OutputChannel

func (m *MergerChunkMaker) OutputChannel() <-chan Chunk

type Option

type Option func(c *Config)

func WithChunkSize

func WithChunkSize(size int64) Option

func WithCtx

func WithCtx(ctx context.Context) Option

func WithSeparatorTrigger

func WithSeparatorTrigger(separator string) Option

func WithTimeTrigger

func WithTimeTrigger(interval time.Duration) Option

func WithTimeTriggerSeconds

func WithTimeTriggerSeconds(interval float64) Option

type SimpleChunkMaker

type SimpleChunkMaker struct {
	// contains filtered or unexported fields
}

func NewImageChunkMakerFromFile

func NewImageChunkMakerFromFile(targetFile string, opts ...Option) (*SimpleChunkMaker, error)

func NewImageChunkMakerFromFileEx

func NewImageChunkMakerFromFileEx(targetFile string, cfg *Config) (*SimpleChunkMaker, error)

func NewSimpleChunkMaker

func NewSimpleChunkMaker[T any](src <-chan T, handle func(T) Chunk, opts ...Option) (*SimpleChunkMaker, error)

func NewSimpleStringerChunkMaker

func NewSimpleStringerChunkMaker(src chan fmt.Stringer, opts ...Option) (*SimpleChunkMaker, error)

NewSimpleStringerChunkMaker NewSimpleChunkMakerEx creates a SimpleChunkMaker from an input channel of fmt.Stringer. It reads from the input channel, converts each fmt.Stringer to a BufferChunk, is Simple , config chunk size or separator is not used.

func (*SimpleChunkMaker) Close

func (i *SimpleChunkMaker) Close() error

func (*SimpleChunkMaker) OutputChannel

func (i *SimpleChunkMaker) OutputChannel() <-chan Chunk

type SimpleChunkWriter

type SimpleChunkWriter struct {
	// contains filtered or unexported fields
}

func NewSimpleChunkWriter

func NewSimpleChunkWriter(dst *chanx.UnlimitedChan[Chunk]) *SimpleChunkWriter

func (*SimpleChunkWriter) Close

func (w *SimpleChunkWriter) Close() error

func (*SimpleChunkWriter) Write

func (w *SimpleChunkWriter) Write(p []byte) (n int, err error)

type TextChunkMaker

type TextChunkMaker struct {
	// contains filtered or unexported fields
}

func NewTextChunkMaker

func NewTextChunkMaker(dst io.Reader, opts ...Option) (*TextChunkMaker, error)

func NewTextChunkMakerEx

func NewTextChunkMakerEx(
	input *chanx.UnlimitedChan[Chunk],
	c *Config,
) (*TextChunkMaker, error)

func (*TextChunkMaker) Close

func (cm *TextChunkMaker) Close() error

func (*TextChunkMaker) OutputChannel

func (cm *TextChunkMaker) OutputChannel() <-chan Chunk

func (*TextChunkMaker) Write

func (cm *TextChunkMaker) Write(p []byte) (n int, err error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL