client_relay

package
Version: v0.0.0-...-1a45790 Latest Latest
Warning

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

Go to latest
Published: Jul 9, 2021 License: MIT Imports: 15 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 interface {
	// Execute a batch update in DeviceDB. The context is bound to the
	// request. The bucket should be the name of the devicedb bucket to
	// which this update should be applied.
	Batch(ctx context.Context, bucket string, batch client.Batch) error
	// Get the value of one or more keys in devicedb. The bucket shold be
	// the name of the devicedb bucket to which this update should be applied.
	// The keys array describes which keys should be retrieved. If no error
	// occurs this function will return an array of values corresponding
	// to the keys that were requested. The results array will mirror the
	// keys array. In other words, the ith value in the result is the value
	// for key i. If a key does not exist the value will be nil.
	Get(ctx context.Context, bucket string, keys []string) ([]*client.Entry, error)
	// Get keys matching one or more prefixes. The keys array represents
	// a list of prefixes to query. The resulting iterator will iterate
	// through database values whose key matches one of the specified
	// prefixes
	GetMatches(ctx context.Context, bucket string, keys []string) (EntryIterator, error)
	// Watch for updates to a set of keys or keys matching certain prefixes
	// lastSerial specifies the serial number of the last received update.
	// The update channel that is returned by this function will stream relevant
	// updates to a consumer. If a disconnection happens from the server
	// then this client will push an error to the error channel and attempt
	// to form a new connection until it is successful. If the consumer supplies
	// a context that is cancellable they can cancel the context which will
	// cause both the update and error channels to close. These channels will
	// not close until the context is cancelled even during disconnections
	// from the server. The client must consume all messages from the update
	// and error channels until they are closed to prevent blocking of the watcher
	// goroutine.
	Watch(ctx context.Context, bucket string, keys []string, prefixes []string, lastSerial uint64) (chan Update, chan error)
}

func New

func New(config Config) Client

Create a new DeviceDB client

type Config

type Config struct {
	// The server URI is the base URI for the devicedb server
	// An example of this is https://localhost:9000
	ServerURI string
	// Provide a TLS config if you are connecting to a TLS
	// enabled devicedb relay server. You will need to provide
	// the relay CA and server name (the relay ID)
	TLSConfig *tls.Config
	// When a watcher is established by a call to Watch()
	// disconnections may occur while the watcher is still
	// up. This field determines how often the watcher
	// will try to reconnect until a new connection can be
	// established.
	WatchReconnectTimeout time.Duration
}

type EntryIterator

type EntryIterator interface {
	// Move to the next result. Returns
	// false if there is an error or if
	// there are no more results to iterate
	// through. If there is an error, the
	// Error() function will return the
	// error that occurred
	Next() bool
	// Return the prefix that matches
	// the key for the current result
	Prefix() string
	// Return the key for the current
	// result
	Key() string
	// Return the value for the
	// current result
	Entry() client.Entry
	// Return the error that occurred
	// while iterating
	Error() error
}

type HTTPClient

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

func (*HTTPClient) Batch

func (c *HTTPClient) Batch(ctx context.Context, bucket string, batch client.Batch) error

func (*HTTPClient) Get

func (c *HTTPClient) Get(ctx context.Context, bucket string, keys []string) ([]*client.Entry, error)

func (*HTTPClient) GetMatches

func (c *HTTPClient) GetMatches(ctx context.Context, bucket string, keys []string) (EntryIterator, error)

func (*HTTPClient) Watch

func (c *HTTPClient) Watch(ctx context.Context, bucket string, keys []string, prefixes []string, lastSerial uint64) (chan Update, chan error)

type StreamedEntryIterator

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

func (*StreamedEntryIterator) Entry

func (iter *StreamedEntryIterator) Entry() client.Entry

func (*StreamedEntryIterator) Error

func (iter *StreamedEntryIterator) Error() error

func (*StreamedEntryIterator) Key

func (iter *StreamedEntryIterator) Key() string

func (*StreamedEntryIterator) Next

func (iter *StreamedEntryIterator) Next() bool

func (*StreamedEntryIterator) Prefix

func (iter *StreamedEntryIterator) Prefix() string

type StreamedUpdateIterator

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

func (*StreamedUpdateIterator) Error

func (iter *StreamedUpdateIterator) Error() error

func (*StreamedUpdateIterator) Next

func (iter *StreamedUpdateIterator) Next() bool

func (*StreamedUpdateIterator) Update

func (iter *StreamedUpdateIterator) Update() Update

type Update

type Update struct {
	Key              string
	Serial           uint64
	Context          string
	Siblings         []string
	LastStableSerial uint64
}

func (*Update) IsEmpty

func (update *Update) IsEmpty() bool

type UpdateIterator

type UpdateIterator interface {
	// Move to the next result. Returns
	// false if there is an error or if
	// there are no more results to iterate
	// through. If there is an error, the
	// Error() function will return the
	// error that occurred
	Next() bool
	// Return the next update
	Update() Update
	// Return the error that occurred
	// while iterating
	Error() error
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
t or T : Toggle theme light dark auto
y or Y : Canonical URL