internal

package
v0.0.0-...-d64d2f6 Latest Latest
Warning

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

Go to latest
Published: May 28, 2020 License: MIT Imports: 13 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

type Client struct {
}

func NewClient

func NewClient() *Client

func (*Client) Run

func (c *Client) Run()

run client connect to server and get value

type DataReader

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

read data from original file

func NewDataReader

func NewDataReader() (*DataReader, error)

func (*DataReader) ReadAt

func (d *DataReader) ReadAt(size, offset uint64) ([]byte, error)

type DataStreamReader

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

stream read original file once read a chunk into buf and then loop through

file format is as follow

+----------+--------+------------+--------+ | key_size | key | value_size | value | | uint32 | []byte | uint64 | []byte | +----------+--------+------------+--------+

func NewDataStreamReader

func NewDataStreamReader() (*DataStreamReader, error)

func (*DataStreamReader) GetOffset

func (d *DataStreamReader) GetOffset() uint64

func (*DataStreamReader) ReadKey

func (d *DataStreamReader) ReadKey(keySize uint32) ([]byte, error)

read key

func (*DataStreamReader) ReadKeySize

func (d *DataStreamReader) ReadKeySize() (uint32, error)

read key_size

func (*DataStreamReader) ReadValue

func (d *DataStreamReader) ReadValue(valueSize uint64) ([]byte, error)

read value

func (*DataStreamReader) ReadValueSize

func (d *DataStreamReader) ReadValueSize() (uint64, error)

read value_size

func (*DataStreamReader) Skip

func (d *DataStreamReader) Skip(valueSize uint64) error

skip a value

type Db

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

func NewDb

func NewDb() (*Db, error)

func (*Db) Get

func (db *Db) Get(key string) ([]byte, error)

first search in tree index if key is exist, we can get a postion then get the value from data file @todo use buffer pool to store recent page

func (*Db) Init

func (db *Db) Init() error

init db read index file and build adaptive-radix-tree

type IdxEncoder

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

func NewIdxEncoder

func NewIdxEncoder(w io.Writer) *IdxEncoder

func (*IdxEncoder) Encode

func (e *IdxEncoder) Encode(p *IdxPage) (uint32, error)

encode index data to disk format

type IdxPage

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

index page struct default 32mb

+--------+----------+------------+------------+------------+--------+ | count | keySizes | keyOffsets | valPageIds | valOffsets | buf | | uint32 | []uint32 | []uint32 | []uint32 | []uint32 | []byte | +--------+----------+------------+------------+------------+--------+

func NewIdxPage

func NewIdxPage(pageSize uint32) (*IdxPage, error)

func (*IdxPage) Append

func (p *IdxPage) Append(keySize, valPageId, valOffset uint32, key []byte) error

append a index item

type IdxPageWriter

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

func NewIdxPageWriter

func NewIdxPageWriter(path string) (*IdxPageWriter, error)

func (*IdxPageWriter) Write

func (pw *IdxPageWriter) Write(p *IdxPage) (uint32, uint32, error)

write index to disk

type IdxReader

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

func NewIdxReader

func NewIdxReader() (*IdxReader, error)

func (*IdxReader) Read

func (r *IdxReader) Read(offset uint32) ([][]byte, []uint32, []uint32, error)

read data from disk and get keys

func (*IdxReader) ReadAt

func (r *IdxReader) ReadAt(offset uint32) ([]byte, error)

read data from disk

type Indexer

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

func NewIndexer

func NewIndexer() *Indexer

func (*Indexer) Run

func (idxer *Indexer) Run()

read original data file build index file and value file

type Pos

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

pos is used to store value postion in value file

type Server

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

func NewServer

func NewServer() (*Server, error)

func (*Server) Run

func (s *Server) Run()

type ValEncoder

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

func NewValEncoder

func NewValEncoder(w io.Writer) *ValEncoder

func (*ValEncoder) Encode

func (e *ValEncoder) Encode(p *ValPage) (uint32, error)

encode value data to disk format

type ValPage

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

value page struct default 64mb

+--------+----------+------------+--------+ | count | valSizes | valOffsets | buf | | uint64 | []uint64 | []uint64 | []byte | +--------+----------+------------+--------+

func NewValPage

func NewValPage(pageSize uint64) (*ValPage, error)

func (*ValPage) Append

func (p *ValPage) Append(valSize uint64, val []byte) error

append a value item

type ValPageWriter

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

func NewValPageWriter

func NewValPageWriter(path string) (*ValPageWriter, error)

func (*ValPageWriter) Write

func (pw *ValPageWriter) Write(p *ValPage) (uint32, uint32, error)

type ValReader

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

func NewValReader

func NewValReader() (*ValReader, error)

func (*ValReader) Read

func (r *ValReader) Read(pageOffset, valOffset uint64) ([]byte, error)

read data from disk and get values

func (*ValReader) ReadAt

func (r *ValReader) ReadAt(offset uint64) ([]byte, error)

Jump to

Keyboard shortcuts

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