orbit

package
v0.0.0-...-1aed462 Latest Latest
Warning

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

Go to latest
Published: Jan 18, 2019 License: Apache-2.0 Imports: 61 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func LoggerMiddleware

func LoggerMiddleware(c *web.C, h http.Handler) http.Handler

LoggerMiddleware is the middleware that logs http requests and resposnes to the logging subsytem of orbit.

func RecoverMiddleware

func RecoverMiddleware(c *web.C, h http.Handler) http.Handler

RecoverMiddleware helps the server recover from panics. It ensures that no request can fully bring down the orbit server, and it also logs the panics to the logging subsystem.

Types

type AccountShowAction

type AccountShowAction struct {
	Action
	Address        string
	HistoryRecord  history.Account
	CoreData       []core.AccountData
	CoreRecord     core.Account
	CoreSigners    []core.Signer
	CoreTrustlines []core.Trustline
	Resource       resource.Account
}

AccountShowAction renders a account summary found by its address.

func (*AccountShowAction) JSON

func (action *AccountShowAction) JSON()

JSON is a method for actions.JSON

func (*AccountShowAction) SSE

func (action *AccountShowAction) SSE(stream sse.Stream)

SSE is a method for actions.SSE

func (AccountShowAction) ServeHTTPC

func (action AccountShowAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request)

ServeHTTPC is a method for web.Handler

type Action

type Action struct {
	actions.Base
	App *App
	Log *log.Entry
	// contains filtered or unexported fields
}

Action is the "base type" for all actions in orbit. It provides structs that embed it with access to the App struct.

Additionally, this type is a trigger for go-codegen and causes the file at Action.tmpl to be instantiated for each struct that embeds Action.

func (*Action) CoreQ

func (action *Action) CoreQ() *core.Q

CoreQ provides access to queries that access the rover core database.

func (*Action) EnsureHistoryFreshness

func (action *Action) EnsureHistoryFreshness()

EnsureHistoryFreshness halts processing and raises

func (*Action) FullURL

func (action *Action) FullURL() *url.URL

FullURL returns the full url for this request

func (*Action) HistoryQ

func (action *Action) HistoryQ() *history.Q

HistoryQ provides access to queries that access the history portion of orbit's database.

func (*Action) Prepare

func (action *Action) Prepare(c web.C, w http.ResponseWriter, r *http.Request)

Prepare sets the action's App field based upon the goji context

func (*Action) ValidateCursorAsDefault

func (action *Action) ValidateCursorAsDefault()

ValidateCursorAsDefault ensures that the cursor parameter is valid in the way it is normally used, i.e. it is either the string "now" or a string of numerals that can be parsed as an int64.

func (*Action) ValidateCursorWithinHistory

func (action *Action) ValidateCursorWithinHistory()

ValidateCursorWithinHistory compares the requested page of data against the ledger state of the history database. In the event that the cursor is guaranteed to return no results, we return a 410 GONE http response.

type App

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

App represents the root of the state of a orbit instance.

func NewApp

func NewApp(config Config) (*App, error)

NewApp constructs an new App instance from the provided config.

func (*App) Close

func (a *App) Close()

Close cancels the app and forces the closure of db connections

func (*App) CoreQ

func (a *App) CoreQ() *core.Q

CoreQ returns a helper object for performing sql queries aginst the rover core database.

func (*App) CoreSession

func (a *App) CoreSession(ctx context.Context) *db.Session

CoreSession returns a new session that loads data from the rover core database. The returned session is bound to `ctx`.

func (*App) DeleteUnretainedHistory

func (a *App) DeleteUnretainedHistory() error

DeleteUnretainedHistory forwards to the app's reaper. See `reap.DeleteUnretainedHistory` for details

func (*App) HistoryQ

func (a *App) HistoryQ() *history.Q

HistoryQ returns a helper object for performing sql queries against the history portion of orbit's database.

func (*App) HorizonSession

func (a *App) HorizonSession(ctx context.Context) *db.Session

HorizonSession returns a new session that loads data from the orbit database. The returned session is bound to `ctx`.

func (*App) IsHistoryStale

func (a *App) IsHistoryStale() bool

IsHistoryStale returns true if the latest history ledger is more than `StaleThreshold` ledgers behind the latest core ledger

func (*App) Middleware

func (app *App) Middleware(c *web.C, h http.Handler) http.Handler

Adds the "app" env key into every request, so that subsequence middleware or handlers can retrieve a orbit.App instance

func (*App) Serve

func (a *App) Serve()

Serve starts the orbit web server, binding it to a socket, setting up the shutdown signals.

func (*App) Tick

func (a *App) Tick()

Tick triggers orbit to update all of it's background processes such as transaction submission, metrics, ingestion and reaping.

func (*App) UpdateLedgerState

func (a *App) UpdateLedgerState()

UpdateLedgerState triggers a refresh of several metrics gauges, such as open db connections and ledger state

func (*App) UpdateMetrics

func (a *App) UpdateMetrics()

UpdateMetrics triggers a refresh of several metrics gauges, such as open db connections and ledger state

func (*App) UpdateStellarCoreInfo

func (a *App) UpdateStellarCoreInfo()

UpdateStellarCoreInfo updates the value of coreVersion and networkPassphrase from the Stellar core API.

type AssetsAction

type AssetsAction struct {
	Action
	AssetCode    string
	AssetIssuer  string
	PagingParams db2.PageQuery
	Records      []assets.AssetStatsR
	Page         hal.Page
}

AssetsAction renders a page of Assets

func (*AssetsAction) JSON

func (action *AssetsAction) JSON()

JSON is a method for actions.JSON

func (AssetsAction) ServeHTTPC

func (action AssetsAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request)

ServeHTTPC is a method for web.Handler

type Config

type Config struct {
	DatabaseURL            string
	StellarCoreDatabaseURL string
	StellarCoreURL         string
	Port                   int
	RateLimit              throttled.Quota
	RedisURL               string
	DakibotURL             string
	LogLevel               logrus.Level
	SentryDSN              string
	LogglyHost             string
	LogglyToken            string
	// TLSCert is a path to a certificate file to use for orbit's TLS config
	TLSCert string
	// TLSKey is the path to a private key file to use for orbit's TLS config
	TLSKey string
	// Ingest is a boolean that indicates whether or not this orbit instance
	// should run the data ingestion subsystem.
	Ingest bool
	// HistoryRetentionCount represents the minimum number of ledgers worth of
	// history data to retain in the orbit database. For the purposes of
	// determining a "retention duration", each ledger roughly corresponds to 10
	// seconds of real time.
	HistoryRetentionCount uint

	// StaleThreshold represents the number of ledgers a history database may be
	// out-of-date by before orbit begins to respond with an error to history
	// requests.
	StaleThreshold uint

	// SkipCursorUpdate causes the ingestor to skip reporting the "last imported
	// ledger" state to rover-core.
	SkipCursorUpdate bool
}

Config is the configuration for orbit. It get's populated by the app's main function and is provided to NewApp.

type DataShowAction

type DataShowAction struct {
	Action
	Address string
	Key     string
	Data    core.AccountData
}

DataShowAction renders a account summary found by its address.

func (*DataShowAction) JSON

func (action *DataShowAction) JSON()

JSON is a method for actions.JSON

func (*DataShowAction) Raw

func (action *DataShowAction) Raw()

Raw is a method for actions.Raw

func (*DataShowAction) SSE

func (action *DataShowAction) SSE(stream sse.Stream)

SSE is a method for actions.SSE

func (DataShowAction) ServeHTTPC

func (action DataShowAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request)

ServeHTTPC is a method for web.Handler

type EffectIndexAction

type EffectIndexAction struct {
	Action
	AccountFilter     string
	LedgerFilter      int32
	TransactionFilter string
	OperationFilter   int64

	PagingParams db2.PageQuery
	Records      []history.Effect
	Page         hal.Page
	Ledgers      history.LedgerCache
}

EffectIndexAction renders a page of effect resources, identified by a normal page query and optionally filtered by an account, ledger, transaction, or operation.

func (*EffectIndexAction) JSON

func (action *EffectIndexAction) JSON()

JSON is a method for actions.JSON

func (*EffectIndexAction) SSE

func (action *EffectIndexAction) SSE(stream sse.Stream)

SSE is a method for actions.SSE

func (EffectIndexAction) ServeHTTPC

func (action EffectIndexAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request)

ServeHTTPC is a method for web.Handler

func (*EffectIndexAction) ValidateCursor

func (action *EffectIndexAction) ValidateCursor()

ValidateCursor ensures that the provided cursor parameter is of the form OPERATIONID-INDEX (such as 1234-56) or is the special value "now" that represents the the cursor directly after the last closed ledger

type InitFn

type InitFn func(*App)

InitFn is a function that contributes to the initialization of an App struct

type LedgerIndexAction

type LedgerIndexAction struct {
	Action
	PagingParams db2.PageQuery
	Records      []history.Ledger
	Page         hal.Page
}

LedgerIndexAction renders a page of ledger resources, identified by a normal page query.

func (*LedgerIndexAction) JSON

func (action *LedgerIndexAction) JSON()

JSON is a method for actions.JSON

func (*LedgerIndexAction) SSE

func (action *LedgerIndexAction) SSE(stream sse.Stream)

SSE is a method for actions.SSE

func (LedgerIndexAction) ServeHTTPC

func (action LedgerIndexAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request)

ServeHTTPC is a method for web.Handler

type LedgerShowAction

type LedgerShowAction struct {
	Action
	Sequence int32
	Record   history.Ledger
}

LedgerShowAction renders a ledger found by its sequence number.

func (*LedgerShowAction) JSON

func (action *LedgerShowAction) JSON()

JSON is a method for actions.JSON

func (LedgerShowAction) ServeHTTPC

func (action LedgerShowAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request)

ServeHTTPC is a method for web.Handler

type MetricsAction

type MetricsAction struct {
	Action
	Snapshot map[string]interface{}
}

MetricsAction collects and renders a snapshot from the metrics system that will inlude any previously registered metrics.

func (*MetricsAction) JSON

func (action *MetricsAction) JSON()

JSON is a method for actions.JSON

func (*MetricsAction) LoadSnapshot

func (action *MetricsAction) LoadSnapshot()

LoadSnapshot populates action.Snapshot

Original code copied from github.com/rcrowley/go-metrics MarshalJSON

func (MetricsAction) ServeHTTPC

func (action MetricsAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request)

ServeHTTPC is a method for web.Handler

type NotFoundAction

type NotFoundAction struct {
	Action
}

NotFoundAction renders a 404 response

func (*NotFoundAction) JSON

func (action *NotFoundAction) JSON()

JSON is a method for actions.JSON

func (NotFoundAction) ServeHTTPC

func (action NotFoundAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request)

ServeHTTPC is a method for web.Handler

type NotImplementedAction

type NotImplementedAction struct {
	Action
}

NotImplementedAction renders a NotImplemented prblem

func (*NotImplementedAction) JSON

func (action *NotImplementedAction) JSON()

JSON is a method for actions.JSON

func (NotImplementedAction) ServeHTTPC

func (action NotImplementedAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request)

ServeHTTPC is a method for web.Handler

type OffersByAccountAction

type OffersByAccountAction struct {
	Action
	Address   string
	PageQuery db2.PageQuery
	Records   []core.Offer
	Page      hal.Page
}

OffersByAccountAction renders a page of offer resources, for a given account. These offers are present in the ledger as of the latest validated ledger.

func (*OffersByAccountAction) JSON

func (action *OffersByAccountAction) JSON()

JSON is a method for actions.JSON

func (*OffersByAccountAction) SSE

func (action *OffersByAccountAction) SSE(stream sse.Stream)

SSE is a method for actions.SSE

func (OffersByAccountAction) ServeHTTPC

func (action OffersByAccountAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request)

ServeHTTPC is a method for web.Handler

type OperationIndexAction

type OperationIndexAction struct {
	Action
	LedgerFilter      int32
	AccountFilter     string
	TransactionFilter string
	PagingParams      db2.PageQuery
	Records           []history.Operation
	Ledgers           history.LedgerCache
	Page              hal.Page
}

OperationIndexAction renders a page of operations resources, identified by a normal page query and optionally filtered by an account, ledger, or transaction.

func (*OperationIndexAction) JSON

func (action *OperationIndexAction) JSON()

JSON is a method for actions.JSON

func (*OperationIndexAction) SSE

func (action *OperationIndexAction) SSE(stream sse.Stream)

SSE is a method for actions.SSE

func (OperationIndexAction) ServeHTTPC

func (action OperationIndexAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request)

ServeHTTPC is a method for web.Handler

type OperationShowAction

type OperationShowAction struct {
	Action
	ID       int64
	Record   history.Operation
	Ledger   history.Ledger
	Resource interface{}
}

OperationShowAction renders a ledger found by its sequence number.

func (*OperationShowAction) JSON

func (action *OperationShowAction) JSON()

JSON is a method for actions.JSON

func (OperationShowAction) ServeHTTPC

func (action OperationShowAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request)

ServeHTTPC is a method for web.Handler

type OrderBookShowAction

type OrderBookShowAction struct {
	Action
	Selling  xdr.Asset
	Buying   xdr.Asset
	Record   core.OrderBookSummary
	Resource resource.OrderBookSummary
	Limit    uint64
}

OrderBookShowAction renders a account summary found by its address.

func (*OrderBookShowAction) JSON

func (action *OrderBookShowAction) JSON()

JSON is a method for actions.JSON

func (*OrderBookShowAction) LoadQuery

func (action *OrderBookShowAction) LoadQuery()

LoadQuery sets action.Query from the request params

func (*OrderBookShowAction) LoadRecord

func (action *OrderBookShowAction) LoadRecord()

LoadRecord populates action.Record

func (*OrderBookShowAction) LoadResource

func (action *OrderBookShowAction) LoadResource()

LoadResource populates action.Record

func (*OrderBookShowAction) SSE

func (action *OrderBookShowAction) SSE(stream sse.Stream)

SSE is a method for actions.SSE

func (OrderBookShowAction) ServeHTTPC

func (action OrderBookShowAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request)

ServeHTTPC is a method for web.Handler

type PathIndexAction

type PathIndexAction struct {
	Action
	Query   paths.Query
	Records []paths.Path
	Page    hal.BasePage
}

PathIndexAction provides path finding

func (*PathIndexAction) JSON

func (action *PathIndexAction) JSON()

JSON implements actions.JSON

func (PathIndexAction) ServeHTTPC

func (action PathIndexAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request)

ServeHTTPC is a method for web.Handler

type PaymentsIndexAction

type PaymentsIndexAction struct {
	Action
	LedgerFilter      int32
	AccountFilter     string
	TransactionFilter string
	PagingParams      db2.PageQuery
	Records           []history.Operation
	Ledgers           history.LedgerCache
	Page              hal.Page
}

PaymentsIndexAction returns a paged slice of payments based upon the provided filters

func (*PaymentsIndexAction) JSON

func (action *PaymentsIndexAction) JSON()

JSON is a method for actions.JSON

func (*PaymentsIndexAction) SSE

func (action *PaymentsIndexAction) SSE(stream sse.Stream)

SSE is a method for actions.SSE

func (PaymentsIndexAction) ServeHTTPC

func (action PaymentsIndexAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request)

ServeHTTPC is a method for web.Handler

type RateLimitExceededAction

type RateLimitExceededAction struct {
	Action
	App *App
}

RateLimitExceededAction renders a 429 response

func (RateLimitExceededAction) ServeHTTP

func (action RateLimitExceededAction) ServeHTTP(w http.ResponseWriter, r *http.Request)

ServeHTTPC is a method for web.Handler

func (RateLimitExceededAction) ServeHTTPC

func (action RateLimitExceededAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request)

ServeHTTPC is a method for web.Handler

type RootAction

type RootAction struct {
	Action
}

RootAction provides a summary of the orbit instance and links to various useful endpoints

func (*RootAction) JSON

func (action *RootAction) JSON()

JSON renders the json response for RootAction

func (RootAction) ServeHTTPC

func (action RootAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request)

ServeHTTPC is a method for web.Handler

type TradeAggregateIndexAction

type TradeAggregateIndexAction struct {
	Action
	BaseAssetFilter    xdr.Asset
	CounterAssetFilter xdr.Asset
	StartTimeFilter    time.Millis
	EndTimeFilter      time.Millis
	ResolutionFilter   int64
	PagingParams       db2.PageQuery
	Records            []history.TradeAggregation
	Page               hal.Page
}

func (*TradeAggregateIndexAction) JSON

func (action *TradeAggregateIndexAction) JSON()

JSON is a method for actions.JSON

func (TradeAggregateIndexAction) ServeHTTPC

func (action TradeAggregateIndexAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request)

ServeHTTPC is a method for web.Handler

type TradeEffectIndexAction

type TradeEffectIndexAction struct {
	Action
	AccountFilter string
	PagingParams  db2.PageQuery
	Records       []history.Effect
	Ledgers       history.LedgerCache
	Page          hal.Page
}

TradeEffectIndexAction

func (*TradeEffectIndexAction) JSON

func (action *TradeEffectIndexAction) JSON()

JSON is a method for actions.JSON

func (TradeEffectIndexAction) ServeHTTPC

func (action TradeEffectIndexAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request)

ServeHTTPC is a method for web.Handler

type TradeIndexAction

type TradeIndexAction struct {
	Action
	BaseAssetFilter       xdr.Asset
	HasBaseAssetFilter    bool
	CounterAssetFilter    xdr.Asset
	HasCounterAssetFilter bool
	OfferFilter           int64
	PagingParams          db2.PageQuery
	Records               []history.Trade
	Page                  hal.Page
}

func (*TradeIndexAction) JSON

func (action *TradeIndexAction) JSON()

JSON is a method for actions.JSON

func (TradeIndexAction) ServeHTTPC

func (action TradeIndexAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request)

ServeHTTPC is a method for web.Handler

type TransactionCreateAction

type TransactionCreateAction struct {
	Action
	TX       string
	Result   txsub.Result
	Resource resource.TransactionSuccess
}

TransactionCreateAction submits a transaction to the rover-core network on behalf of the requesting client.

func (*TransactionCreateAction) JSON

func (action *TransactionCreateAction) JSON()

JSON format action handler

func (TransactionCreateAction) ServeHTTPC

func (action TransactionCreateAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request)

ServeHTTPC is a method for web.Handler

type TransactionIndexAction

type TransactionIndexAction struct {
	Action
	LedgerFilter  int32
	AccountFilter string
	PagingParams  db2.PageQuery
	Records       []history.Transaction
	Page          hal.Page
}

TransactionIndexAction renders a page of ledger resources, identified by a normal page query.

func (*TransactionIndexAction) JSON

func (action *TransactionIndexAction) JSON()

JSON is a method for actions.JSON

func (*TransactionIndexAction) SSE

func (action *TransactionIndexAction) SSE(stream sse.Stream)

SSE is a method for actions.SSE

func (TransactionIndexAction) ServeHTTPC

func (action TransactionIndexAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request)

ServeHTTPC is a method for web.Handler

type TransactionShowAction

type TransactionShowAction struct {
	Action
	Hash     string
	Record   history.Transaction
	Resource resource.Transaction
}

TransactionShowAction renders a ledger found by its sequence number.

func (*TransactionShowAction) JSON

func (action *TransactionShowAction) JSON()

JSON is a method for actions.JSON

func (TransactionShowAction) ServeHTTPC

func (action TransactionShowAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request)

ServeHTTPC is a method for web.Handler

type Web

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

Web contains the http server related fields for orbit: the router, rate limiter, etc.

func (*Web) RateLimitMiddleware

func (web *Web) RateLimitMiddleware(c *web.C, next http.Handler) http.Handler

Directories

Path Synopsis
Package actions provides the infrastructure for defining and executing actions (code that is triggered in response to an client request) on orbit.
Package actions provides the infrastructure for defining and executing actions (code that is triggered in response to an client request) on orbit.
Package assets is a simple helper package to help convert to/from xdr.AssetType values
Package assets is a simple helper package to help convert to/from xdr.AssetType values
Package codes is a helper package to help convert to transaction and operation result codes to strings used in orbit.
Package codes is a helper package to help convert to transaction and operation result codes to strings used in orbit.
context
requestid
Package requestid provides functions to support embedded and retrieving a request id from a go context tree
Package requestid provides functions to support embedded and retrieving a request id from a go context tree
db2
Package db2 is the replacement for db.
Package db2 is the replacement for db.
core
Package core contains database record definitions useable for reading rows from a Rover Core db
Package core contains database record definitions useable for reading rows from a Rover Core db
history
Package history contains database record definitions useable for reading rows from a the history portion of orbit's database
Package history contains database record definitions useable for reading rows from a the history portion of orbit's database
sqx
Package sqx contains utilities and extensions for the squirrel package which is used by orbit to generate sql statements.
Package sqx contains utilities and extensions for the squirrel package which is used by orbit to generate sql statements.
Package ingest contains the ingestion system for orbit.
Package ingest contains the ingestion system for orbit.
participants
Package participants contains functions to derive a set of "participant" addresses for various data structures in the Rover network's ledger.
Package participants contains functions to derive a set of "participant" addresses for various data structures in the Rover network's ledger.
Package ledger provides useful utilities concerning ledgers within stellar, specifically as a central location to store a cached snapshot of the state of both orbit's and rover-core's views of the ledger.
Package ledger provides useful utilities concerning ledgers within stellar, specifically as a central location to store a cached snapshot of the state of both orbit's and rover-core's views of the ledger.
Package log provides the logging facilities used for orbit.
Package log provides the logging facilities used for orbit.
Package paths provides utilities and facilities for payment paths as needed by orbit.
Package paths provides utilities and facilities for payment paths as needed by orbit.
Package reap contains the history reaping subsystem for orbit.
Package reap contains the history reaping subsystem for orbit.
hal
sse
This package contains the Server Sent Events implementation used by orbit.
This package contains the Server Sent Events implementation used by orbit.
Package resource contains the type definitions for all of horizons response resources.
Package resource contains the type definitions for all of horizons response resources.
Package simplepath provides an implementation of paths.Finder that performs a breadth first search for paths against a rover-core's database
Package simplepath provides an implementation of paths.Finder that performs a breadth first search for paths against a rover-core's database
Package test contains simple test helpers that should not have any dependencies on orbit's packages.
Package test contains simple test helpers that should not have any dependencies on orbit's packages.
db
Package db provides helpers to connect to test databases.
Package db provides helpers to connect to test databases.
trades
Common infrastructure for testing Trades
Common infrastructure for testing Trades
Package txsub provides the machinery that orbit uses to submit transactions to the rover network and track their progress.
Package txsub provides the machinery that orbit uses to submit transactions to the rover network and track their progress.
results/db
Package results provides an implementation of the txsub.ResultProvider interface backed using the SQL databases used by both rover core and orbit
Package results provides an implementation of the txsub.ResultProvider interface backed using the SQL databases used by both rover core and orbit
sequence
Package sequence providers helpers to manage sequence numbers on behalf of orbit clients.
Package sequence providers helpers to manage sequence numbers on behalf of orbit clients.
Package utf8 contains utilities for working with utf8 data.
Package utf8 contains utilities for working with utf8 data.

Jump to

Keyboard shortcuts

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