Documentation ¶
Index ¶
- Constants
- Variables
- func DecodeDb(response *Message) (id uint32, err error)
- func DecodeEmpty(response *Message) (err error)
- func DecodeFailure(response *Message) (code uint64, message string, err error)
- func DecodeNode(response *Message) (id uint64, address string, err error)
- func DecodeNodeCompat(protocol *Protocol, response *Message) (uint64, string, error)
- func DecodeNodeLegacy(response *Message) (address string, err error)
- func DecodeStmt(response *Message) (db uint32, id uint32, params uint64, err error)
- func DecodeWelcome(response *Message) (heartbeatTimeout uint64, err error)
- func EncodeClient(request *Message, id uint64)
- func EncodeCluster(request *Message)
- func EncodeDump(request *Message, name string)
- func EncodeExec(request *Message, db uint32, stmt uint32, values NamedValues)
- func EncodeExecSQL(request *Message, db uint64, sql string, values NamedValues)
- func EncodeFinalize(request *Message, db uint32, stmt uint32)
- func EncodeHeartbeat(request *Message, timestamp uint64)
- func EncodeInterrupt(request *Message, db uint64)
- func EncodeJoin(request *Message, id uint64, address string)
- func EncodeLeader(request *Message)
- func EncodeOpen(request *Message, name string, flags uint64, vfs string)
- func EncodePrepare(request *Message, db uint64, sql string)
- func EncodePromote(request *Message, id uint64)
- func EncodeQuery(request *Message, db uint32, stmt uint32, values NamedValues)
- func EncodeQuerySQL(request *Message, db uint64, sql string, values NamedValues)
- func EncodeRemove(request *Message, id uint64)
- func TCPDial(ctx context.Context, address string) (net.Conn, error)
- func UnixDial(ctx context.Context, address string) (net.Conn, error)
- type Config
- type Connector
- type DialFunc
- type ErrRequest
- type Files
- type InmemNodeStore
- type Message
- type NamedValues
- type NodeInfo
- type NodeStore
- type Nodes
- type Protocol
- func (p *Protocol) Call(ctx context.Context, request, response *Message) (err error)
- func (p *Protocol) Close() error
- func (p *Protocol) Interrupt(ctx context.Context, request *Message, response *Message) error
- func (p *Protocol) More(ctx context.Context, response *Message) error
- func (p *Protocol) SetContextTimeout(timeout time.Duration)
- type Result
- type Rows
Constants ¶
const ( Integer = 1 Float = 2 Text = 3 Blob = 4 Null = 5 )
SQLite datatype codes
const ( UnixTime = 9 ISO8601 = 10 Boolean = 11 )
Special data types for time values.
const ( RequestLeader = 0 RequestClient = 1 RequestHeartbeat = 2 RequestOpen = 3 RequestPrepare = 4 RequestExec = 5 RequestQuery = 6 RequestFinalize = 7 RequestExecSQL = 8 RequestQuerySQL = 9 RequestInterrupt = 10 RequestJoin = 12 RequestPromote = 13 RequestRemove = 14 RequestDump = 15 RequestCluster = 16 )
Request types.
const ( ResponseFailure = 0 ResponseNode = 1 ResponseNodeLegacy = 1 ResponseWelcome = 2 ResponseNodes = 3 ResponseDb = 4 ResponseStmt = 5 ResponseResult = 6 ResponseRows = 7 ResponseEmpty = 8 ResponseFiles = 9 )
Response types.
const VersionLegacy = uint64(0x86104dd760433fe5)
VersionLegacy is the pre 1.0 dqlite server protocol version.
const VersionOne = uint64(1)
VersionOne is version 1 of the server protocol.
Variables ¶
var (
ErrNoAvailableLeader = fmt.Errorf("no available dqlite leader server found")
)
Client errors.
var ErrRowsPart = fmt.Errorf("not all rows were returned in this response")
ErrRowsPart is returned when the first batch of a multi-response result batch is done.
Functions ¶
func DecodeEmpty ¶ added in v1.0.0
DecodeEmpty decodes a Empty response.
func DecodeFailure ¶ added in v1.0.0
DecodeFailure decodes a Failure response.
func DecodeNode ¶ added in v1.0.0
DecodeNode decodes a Node response.
func DecodeNodeCompat ¶ added in v1.0.0
DecodeNodeCompat handles also pre-1.0 legacy server messages.
func DecodeNodeLegacy ¶ added in v1.0.0
DecodeNodeLegacy decodes a NodeLegacy response.
func DecodeStmt ¶ added in v1.0.0
DecodeStmt decodes a Stmt response.
func DecodeWelcome ¶ added in v1.0.0
DecodeWelcome decodes a Welcome response.
func EncodeClient ¶ added in v1.0.0
EncodeClient encodes a Client request.
func EncodeCluster ¶ added in v1.0.0
func EncodeCluster(request *Message)
EncodeCluster encodes a Cluster request.
func EncodeDump ¶ added in v1.0.0
EncodeDump encodes a Dump request.
func EncodeExec ¶ added in v1.0.0
func EncodeExec(request *Message, db uint32, stmt uint32, values NamedValues)
EncodeExec encodes a Exec request.
func EncodeExecSQL ¶ added in v1.0.0
func EncodeExecSQL(request *Message, db uint64, sql string, values NamedValues)
EncodeExecSQL encodes a ExecSQL request.
func EncodeFinalize ¶ added in v1.0.0
EncodeFinalize encodes a Finalize request.
func EncodeHeartbeat ¶ added in v1.0.0
EncodeHeartbeat encodes a Heartbeat request.
func EncodeInterrupt ¶ added in v1.0.0
EncodeInterrupt encodes a Interrupt request.
func EncodeJoin ¶ added in v1.0.0
EncodeJoin encodes a Join request.
func EncodeLeader ¶ added in v1.0.0
func EncodeLeader(request *Message)
EncodeLeader encodes a Leader request.
func EncodeOpen ¶ added in v1.0.0
EncodeOpen encodes a Open request.
func EncodePrepare ¶ added in v1.0.0
EncodePrepare encodes a Prepare request.
func EncodePromote ¶ added in v1.0.0
EncodePromote encodes a Promote request.
func EncodeQuery ¶ added in v1.0.0
func EncodeQuery(request *Message, db uint32, stmt uint32, values NamedValues)
EncodeQuery encodes a Query request.
func EncodeQuerySQL ¶ added in v1.0.0
func EncodeQuerySQL(request *Message, db uint64, sql string, values NamedValues)
EncodeQuerySQL encodes a QuerySQL request.
func EncodeRemove ¶ added in v1.0.0
EncodeRemove encodes a Remove request.
Types ¶
type Config ¶ added in v1.0.0
type Config struct { Dial DialFunc // Network dialer. AttemptTimeout time.Duration // Timeout for each individual Dial attempt. RetryStrategies []strategy.Strategy // Strategies used for retrying to connect to a leader. }
Config holds various configuration parameters for a dqlite client.
type Connector ¶ added in v1.0.0
type Connector struct {
// contains filtered or unexported fields
}
Connector is in charge of creating a dqlite SQL client connected to the current leader of a cluster.
func NewConnector ¶ added in v1.0.0
NewConnector returns a new connector that can be used by a dqlite driver to create new clients connected to a leader dqlite server.
type DialFunc ¶ added in v1.0.0
DialFunc is a function that can be used to establish a network connection.
type ErrRequest ¶ added in v1.0.0
ErrRequest is returned in case of request failure.
func (ErrRequest) Error ¶ added in v1.0.0
func (e ErrRequest) Error() string
type Files ¶ added in v1.0.0
type Files struct {
// contains filtered or unexported fields
}
Files holds a set of files encoded in a message body.
func DecodeFiles ¶ added in v1.0.0
DecodeFiles decodes a Files response.
type InmemNodeStore ¶ added in v1.0.0
type InmemNodeStore struct {
// contains filtered or unexported fields
}
InmemNodeStore keeps the list of servers in memory.
func NewInmemNodeStore ¶ added in v1.0.0
func NewInmemNodeStore() *InmemNodeStore
NewInmemNodeStore creates NodeStore which stores its data in-memory.
type Message ¶ added in v1.0.0
type Message struct {
// contains filtered or unexported fields
}
Message holds data about a single request or response.
type NamedValues ¶ added in v1.0.0
type NamedValues = []driver.NamedValue
NamedValues is a type alias of a slice of driver.NamedValue. It's used by schema.sh to generate encoding logic for statement parameters.
type NodeStore ¶ added in v1.0.0
type NodeStore interface { // Get return the list of known servers. Get(context.Context) ([]NodeInfo, error) // Set updates the list of known cluster servers. Set(context.Context, []NodeInfo) error }
NodeStore is used by a dqlite client to get an initial list of candidate dqlite servers that it can dial in order to find a leader server to connect to.
Once connected, the client periodically updates the server addresses in the store by querying the leader about changes in the cluster (such as servers being added or removed).
type Nodes ¶ added in v1.0.0
type Nodes []NodeInfo
Nodes is a type alias of a slice of NodeInfo. It's used by schema.sh to generate decoding logic for the heartbeat response.
func DecodeNodes ¶ added in v1.0.0
DecodeNodes decodes a Nodes response.
type Protocol ¶ added in v1.0.0
type Protocol struct {
// contains filtered or unexported fields
}
Protocol sends and receive the dqlite message on the wire.
func (*Protocol) Call ¶ added in v1.0.0
Call invokes a dqlite RPC, sending a request message and receiving a response message.
func (*Protocol) Interrupt ¶ added in v1.0.0
Interrupt sends an interrupt request and awaits for the server's empty response.
func (*Protocol) SetContextTimeout ¶ added in v1.0.0
SetContextTimeout sets the default context timeout when no deadline is provided.
type Result ¶ added in v1.0.0
Result holds the result of a statement.
func DecodeResult ¶ added in v1.0.0
DecodeResult decodes a Result response.
type Rows ¶ added in v1.0.0
type Rows struct { Columns []string // contains filtered or unexported fields }
Rows holds a result set encoded in a message body.
func DecodeRows ¶ added in v1.0.0
DecodeRows decodes a Rows response.
func (*Rows) ColumnTypes ¶ added in v1.2.0
ColumnTypes returns the column types for the the result set.