digest

package
v3.0.0-alpha.0...-e5a6d49 Latest Latest
Warning

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

Go to latest
Published: Apr 26, 2024 License: GPL-3.0 Imports: 57 Imported by: 14

Documentation

Overview

Package digest provides api features.

Index

Constants

View Source
const (
	ProblemMimetype    = "application/problem+json; charset=utf-8"
	ProblemNamespace   = "https://github.com/ProtoconNet/mitum-currency/v3/problems"
	DefaultProblemType = "others"
)

Variables

View Source
var (
	DefaultCacheExpire = time.Hour
	SkipCacheError     = mitumutil.NewIDError("skip cache")
)
View Source
var (
	HTTP2EncoderHintHeader = http.CanonicalHeaderKey("x-mitum-encoder-hint")
	HALMimetype            = "application/hal+json; charset=utf-8"
)
View Source
var (
	HandlerPathNodeInfo                   = `/`
	HandlerPathCurrencies                 = `/currency`
	HandlerPathCurrency                   = `/currency/{currencyid:.*}`
	HandlerPathManifests                  = `/block/manifests`
	HandlerPathOperations                 = `/block/operations`
	HandlerPathOperation                  = `/block/operation/{hash:(?i)[0-9a-z][0-9a-z]+}`
	HandlerPathBlockByHeight              = `/block/{height:[0-9]+}`
	HandlerPathBlockByHash                = `/block/{hash:(?i)[0-9a-z][0-9a-z]+}`
	HandlerPathOperationsByHeight         = `/block/{height:[0-9]+}/operations`
	HandlerPathManifestByHeight           = `/block/{height:[0-9]+}/manifest`
	HandlerPathManifestByHash             = `/block/{hash:(?i)[0-9a-z][0-9a-z]+}/manifest`
	HandlerPathAccount                    = `/account/{address:(?i)` + base.REStringAddressString + `}`            // revive:disable-line:line-length-limit
	HandlerPathAccountOperations          = `/account/{address:(?i)` + base.REStringAddressString + `}/operations` // revive:disable-line:line-length-limit
	HandlerPathAccounts                   = `/accounts`
	HandlerPathOperationBuildFactTemplate = `/builder/operation/fact/template/{fact:[\w][\w\-]*}`
	HandlerPathOperationBuildFact         = `/builder/operation/fact`
	HandlerPathOperationBuildSign         = `/builder/operation/sign`
	HandlerPathOperationBuild             = `/builder/operation`
	HandlerPathSend                       = `/builder/send`
	HandlerPathQueueSend                  = `/builder/send/queue`
	HandelrPathEventOperation             = `/event/operation/{hash:(?i)[0-9a-z][0-9a-z]+}`
	HandelrPathEventAccount               = `/event/account/{address:(?i)` + base.REStringAddressString + `}`
	HandlerPathEventContract              = `/event/contract/{address:(?i)` + base.REStringAddressString + `}`
)
View Source
var (
	UnknownProblem     = NewProblem(DefaultProblemType, "unknown problem occurred")
	UnknownProblemJSON []byte
)
View Source
var (
	AccountValueHint = hint.MustNewHint("mitum-currency-account-value-v0.0.1")
)
View Source
var AllCollections = []string{
	defaultColNameAccount,
	defaultColNameBalance,
	defaultColNameCurrency,
	defaultColNameOperation,
	defaultColNameBlock,
}
View Source
var (
	BaseHalHint = hint.MustNewHint("mitum-currency-hal-v0.0.1")
)
View Source
var DigestStorageLastBlockKey = "digest_last_block"
View Source
var (
	ErrBadRequest = util.NewIDError("bad request")
)
View Source
var GlobalItemsLimit int64 = 10
View Source
var HALJSONConfigDefault = jsoniter.Config{
	EscapeHTML: false,
}.Froze()
View Source
var JSON = jsoniter.Config{
	EscapeHTML:             true,
	SortMapKeys:            false,
	ValidateJsonRawMessage: false,
}.Froze()
View Source
var (
	ManifestValueHint = hint.MustNewHint("mitum-currency-manifest-value-v0.0.1")
)
View Source
var (
	OperationValueHint = hint.MustNewHint("mitum-currency-operation-value-v0.0.1")
)
View Source
var (
	ProblemHint = hint.MustNewHint("mitum-currency-problem-v0.0.1")
)

Functions

func AddQueryValue

func AddQueryValue(b, s string) string

func CacheKey

func CacheKey(key string, s ...string) string

func CacheKeyFromRequest

func CacheKeyFromRequest(r *http.Request) string

func CacheKeyPath

func CacheKeyPath(r *http.Request) string

func DefaultItemsLimiter

func DefaultItemsLimiter(string) int64

func DigestBlock

func DigestBlock(
	ctx context.Context,
	st *Database,
	blk base.BlockMap,
	ops []base.Operation,
	opsTree fixedtree.Tree,
	sts []base.State,
	proposal base.ProposalSignFact,
) error

func HTTP2HandleError

func HTTP2HandleError(w http.ResponseWriter, err error)

func HTTP2NotSupported

func HTTP2NotSupported(w http.ResponseWriter, err error)

func HTTP2ProblemWithError

func HTTP2ProblemWithError(w http.ResponseWriter, err error, status int)

func HTTP2Stream

func HTTP2Stream(enc encoder.Encoder, w http.ResponseWriter, bufsize int, status int) (*jsoniter.Stream, func())

func HTTP2WriteCache

func HTTP2WriteCache(w http.ResponseWriter, key string, expire time.Duration)

func HTTP2WriteHal

func HTTP2WriteHal(enc encoder.Encoder, w http.ResponseWriter, hal Hal, status int)

func HTTP2WriteHalBytes

func HTTP2WriteHalBytes(enc encoder.Encoder, w http.ResponseWriter, b []byte, status int)

func HTTP2WriteProblem

func HTTP2WriteProblem(w http.ResponseWriter, pr Problem, status int)

func IsAccountState

func IsAccountState(st base.State) (types.Account, bool, error)

func IsBalanceState

func IsBalanceState(st base.State) (types.Amount, bool, error)

func LoadBalance

func LoadBalance(decoder func(interface{}) error, encs *encoder.Encoders) (base.State, error)

func LoadContractAccountStatus

func LoadContractAccountStatus(decoder func(interface{}) error, encs *encoder.Encoders) (base.State, error)

func LoadCurrency

func LoadCurrency(decoder func(interface{}) error, encs *encoder.Encoders) (base.State, error)

func LoadFromCache

func LoadFromCache(cache Cache, key string, w http.ResponseWriter) error

func LoadManifest

func LoadManifest(decoder func(interface{}) error, encs *encoder.Encoders) (base.Manifest, uint64, string, string, uint64, error)

func LoadOperationHash

func LoadOperationHash(decoder func(interface{}) error) (util.Hash, error)

func LoadState

func LoadState(decoder func(interface{}) error, encs *encoder.Encoders) (base.State, error)

func MakeCacheKey

func MakeCacheKey(key string) string

func NodeInfo

func NodeInfo(client *isaacnetwork.BaseClient, connInfo quicstream.ConnInfo) (*isaacnetwork.NodeInfo, error)

func ParseBoolQuery

func ParseBoolQuery(s string) bool

func ParseLimitQuery

func ParseLimitQuery(s string) int64

func ParseStringQuery

func ParseStringQuery(s string) string

func ScanCRLF

func ScanCRLF(data []byte, atEOF bool) (int, []byte, error)

func StringBoolQuery

func StringBoolQuery(key string, v bool) string

func StringOffsetQuery

func StringOffsetQuery(offset string) string

func WriteFromCache

func WriteFromCache(b []byte, w http.ResponseWriter) error

Types

type AccountDoc

type AccountDoc struct {
	mongodbstorage.BaseDoc
	// contains filtered or unexported fields
}

func NewAccountDoc

func NewAccountDoc(rs AccountValue, enc encoder.Encoder) (AccountDoc, error)

func (AccountDoc) MarshalBSON

func (doc AccountDoc) MarshalBSON() ([]byte, error)

type AccountValue

type AccountValue struct {
	hint.BaseHinter
	// contains filtered or unexported fields
}

func LoadAccountValue

func LoadAccountValue(decoder func(interface{}) error, encs *encoder.Encoders) (AccountValue, error)

func NewAccountValue

func NewAccountValue(st base.State) (AccountValue, error)

func (AccountValue) Account

func (va AccountValue) Account() types.Account

func (AccountValue) Balance

func (va AccountValue) Balance() []types.Amount

func (AccountValue) ContractAccountStatus

func (va AccountValue) ContractAccountStatus() types.ContractAccountStatus

func (*AccountValue) DecodeBSON

func (va *AccountValue) DecodeBSON(b []byte, enc *bsonenc.Encoder) error

func (*AccountValue) DecodeJSON

func (va *AccountValue) DecodeJSON(b []byte, enc encoder.Encoder) error

func (AccountValue) Height

func (va AccountValue) Height() base.Height

func (AccountValue) IsZeroValue

func (va AccountValue) IsZeroValue() bool

func (AccountValue) MarshalBSON

func (va AccountValue) MarshalBSON() ([]byte, error)

func (AccountValue) MarshalJSON

func (va AccountValue) MarshalJSON() ([]byte, error)

func (AccountValue) SetBalance

func (va AccountValue) SetBalance(balance []types.Amount) AccountValue

func (AccountValue) SetContractAccountStatus

func (va AccountValue) SetContractAccountStatus(status types.ContractAccountStatus) AccountValue

func (AccountValue) SetHeight

func (va AccountValue) SetHeight(height base.Height) AccountValue

type AccountValueBSONUnmarshaler

type AccountValueBSONUnmarshaler struct {
	Hint                  string      `bson:"_hint"`
	Account               bson.Raw    `bson:"ac"`
	Balance               bson.Raw    `bson:"balance"`
	Height                base.Height `bson:"height"`
	ContractAccountStatus bson.Raw    `bson:"contract_account_status"`
}

type AccountValueJSONMarshaler

type AccountValueJSONMarshaler struct {
	hint.BaseHinter
	types.AccountJSONMarshaler
	Balance               []types.Amount              `json:"balance,omitempty"`
	Height                base.Height                 `json:"height"`
	ContractAccountStatus types.ContractAccountStatus `json:"contract_account_status"`
}

type AccountValueJSONUnmarshaler

type AccountValueJSONUnmarshaler struct {
	Hint                  hint.Hint
	Balance               json.RawMessage `json:"balance"`
	Height                base.Height     `json:"height"`
	ContractAccountStatus json.RawMessage `json:"contract_account_status"`
}

type BalanceDoc

type BalanceDoc struct {
	mongodbstorage.BaseDoc
	// contains filtered or unexported fields
}

func NewBalanceDoc

func NewBalanceDoc(st base.State, enc encoder.Encoder) (BalanceDoc, string, error)

NewBalanceDoc gets the State of Amount

func (BalanceDoc) MarshalBSON

func (doc BalanceDoc) MarshalBSON() ([]byte, error)

type BaseHal

type BaseHal struct {
	hint.BaseHinter
	// contains filtered or unexported fields
}

func NewBaseHal

func NewBaseHal(i interface{}, self HalLink) BaseHal

func NewEmptyHal

func NewEmptyHal() BaseHal

func (BaseHal) AddExtras

func (hal BaseHal) AddExtras(key string, value interface{}) Hal
func (hal BaseHal) AddLink(rel string, link HalLink) Hal

func (BaseHal) Extras

func (hal BaseHal) Extras() map[string]interface{}

func (BaseHal) Interface

func (hal BaseHal) Interface() interface{}
func (hal BaseHal) Links() map[string]HalLink

func (BaseHal) MarshalJSON

func (hal BaseHal) MarshalJSON() ([]byte, error)

func (BaseHal) RawInterface

func (hal BaseHal) RawInterface() []byte

func (BaseHal) Self

func (hal BaseHal) Self() HalLink

func (BaseHal) SetInterface

func (hal BaseHal) SetInterface(i interface{}) Hal

func (BaseHal) SetSelf

func (hal BaseHal) SetSelf(u HalLink) Hal

func (*BaseHal) UnmarshalJSON

func (hal *BaseHal) UnmarshalJSON(b []byte) error

type BaseHalJSONMarshaler

type BaseHalJSONMarshaler struct {
	hint.BaseHinter
	Embedded interface{}            `json:"_embedded,omitempty"`
	Links    map[string]HalLink     `json:"_links,omitempty"`
	Extra    map[string]interface{} `json:"_extra,omitempty"`
}

type BaseHalJSONUnpacker

type BaseHalJSONUnpacker struct {
	Embedded json.RawMessage        `json:"_embedded,omitempty"`
	Links    map[string]HalLink     `json:"_links,omitempty"`
	Extra    map[string]interface{} `json:"_extra,omitempty"`
}

type BlockSession

type BlockSession struct {
	sync.RWMutex

	WriteModels     map[string][]mongo.WriteModel
	WriteModelsFunc map[string][]mongo.WriteModel
	// contains filtered or unexported fields
}

func NewBlockSession

func NewBlockSession(st *Database, blk base.BlockMap, ops []base.Operation, opsTree fixedtree.Tree, sts []base.State, proposal base.ProposalSignFact) (*BlockSession, error)

func (*BlockSession) Close

func (bs *BlockSession) Close() error

func (*BlockSession) Commit

func (bs *BlockSession) Commit(ctx context.Context) error

func (*BlockSession) Prepare

func (bs *BlockSession) Prepare() error

type BlockSessioner

type BlockSessioner interface {
	Prepare() error
	Commit(context.Context) error
	Close() error
}

type Cache

type Cache interface {
	Get(string) ([]byte, error)
	Set(string, []byte, time.Duration) error
}

func NewCacheFromURI

func NewCacheFromURI(uri string) (Cache, error)

type CacheResponseWriter

type CacheResponseWriter struct {
	http.ResponseWriter
	// contains filtered or unexported fields
}

func NewCacheResponseWriter

func NewCacheResponseWriter(cache Cache, w http.ResponseWriter, r *http.Request) *CacheResponseWriter

func (*CacheResponseWriter) Cache

func (cr *CacheResponseWriter) Cache() error

func (*CacheResponseWriter) Expire

func (cr *CacheResponseWriter) Expire() time.Duration

func (*CacheResponseWriter) Key

func (cr *CacheResponseWriter) Key() string

func (*CacheResponseWriter) OK

func (cr *CacheResponseWriter) OK() bool

func (*CacheResponseWriter) SetExpire

func (cr *CacheResponseWriter) SetExpire(expire time.Duration) *CacheResponseWriter

func (*CacheResponseWriter) SetKey

func (*CacheResponseWriter) SkipCache

func (cr *CacheResponseWriter) SkipCache() *CacheResponseWriter

func (*CacheResponseWriter) Write

func (cr *CacheResponseWriter) Write(b []byte) (int, error)

func (*CacheResponseWriter) WriteHeader

func (cr *CacheResponseWriter) WriteHeader(status int)

type CachedHTTPHandler

type CachedHTTPHandler struct {
	*zerolog.Logger
	// contains filtered or unexported fields
}

func NewCachedHTTPHandler

func NewCachedHTTPHandler(cache Cache, f func(http.ResponseWriter, *http.Request)) CachedHTTPHandler

func (CachedHTTPHandler) ServeHTTP

func (ch CachedHTTPHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)

type ContractAccountStatusDoc

type ContractAccountStatusDoc struct {
	mongodbstorage.BaseDoc
	// contains filtered or unexported fields
}

func NewContractAccountStatusDoc

func NewContractAccountStatusDoc(st base.State, enc encoder.Encoder) (ContractAccountStatusDoc, error)

func (ContractAccountStatusDoc) MarshalBSON

func (doc ContractAccountStatusDoc) MarshalBSON() ([]byte, error)

type CurrencyDoc

type CurrencyDoc struct {
	mongodbstorage.BaseDoc
	// contains filtered or unexported fields
}

func NewCurrencyDoc

func NewCurrencyDoc(st base.State, enc encoder.Encoder) (CurrencyDoc, error)

NewBalanceDoc gets the State of Amount

func (CurrencyDoc) MarshalBSON

func (doc CurrencyDoc) MarshalBSON() ([]byte, error)

type Database

type Database struct {
	sync.RWMutex
	*logging.Logging
	// contains filtered or unexported fields
}

func NewDatabase

func NewDatabase(mitum *isaacdatabase.Center, st *mongodbstorage.Database) (*Database, error)

func NewReadonlyDatabase

func NewReadonlyDatabase(mitum *isaacdatabase.Center, st *mongodbstorage.Database) (*Database, error)

func (*Database) Account

func (st *Database) Account(a base.Address) (AccountValue, bool, error)

Account returns AccountValue.

func (*Database) AccountsByPublickey

func (st *Database) AccountsByPublickey(
	pub base.Publickey,
	loadBalance bool,
	offsetHeight base.Height,
	offsetAddress string,
	limit int64,
	callback func(AccountValue) (bool, error),
) error

AccountsByPublickey finds Accounts, which are related with the given Publickey. * offset: returns from next of offset, usually it is "<height>,<address>".

func (*Database) Clean

func (st *Database) Clean() error

func (*Database) CleanByHeight

func (st *Database) CleanByHeight(ctx context.Context, height base.Height) error

func (*Database) CleanByHeightColName

func (st *Database) CleanByHeightColName(
	ctx context.Context,
	height base.Height,
	colName string,
	filters ...bson.D,
) error

func (*Database) Close

func (st *Database) Close() error

func (*Database) DatabaseClient

func (st *Database) DatabaseClient() *mongodbstorage.Client

func (*Database) DatabaseEncoder

func (st *Database) DatabaseEncoder() encoder.Encoder

func (*Database) DatabaseEncoders

func (st *Database) DatabaseEncoders() *encoder.Encoders

func (*Database) Initialize

func (st *Database) Initialize() error

func (*Database) LastBlock

func (st *Database) LastBlock() base.Height

func (*Database) ManifestByHash

func (st *Database) ManifestByHash(hash mitumutil.Hash) (base.Manifest, uint64, string, string, uint64, error)

func (*Database) ManifestByHeight

func (st *Database) ManifestByHeight(height base.Height) (base.Manifest, uint64, string, string, uint64, error)

func (*Database) Manifests

func (st *Database) Manifests(
	load bool,
	reverse bool,
	offset base.Height,
	limit int64,
	callback func(base.Height, base.Manifest, uint64, string, string, uint64) (bool, error),
) error

Manifests returns block.Manifests by order and height.

func (*Database) New

func (st *Database) New() (*Database, error)

func (*Database) Operation

func (st *Database) Operation(
	h mitumutil.Hash,
	load bool,
) (OperationValue, bool, error)

Operation returns operation.Operation. If load is false, just returns nil Operation.

func (*Database) Operations

func (st *Database) Operations(
	filter bson.M,
	load bool,
	reverse bool,
	limit int64,
	callback func(mitumutil.Hash, OperationValue, int64) (bool, error),
) error

Operations returns operation.Operations by order, height and index.

func (*Database) OperationsByAddress

func (st *Database) OperationsByAddress(
	address base.Address,
	load,
	reverse bool,
	offset string,
	limit int64,
	callback func(mitumutil.Hash, OperationValue) (bool, error),
) error

OperationsByAddress finds the operation.Operations, which are related with the given Address. The returned valuehash.Hash is the operation.Operation.Fact().Hash(). * load:if true, load operation.Operation and returns it. If not, just hash will be returned * reverse: order by height; if true, higher height will be returned first. * offset: returns from next of offset, usually it is combination of "<height>,<fact>".

func (*Database) Readonly

func (st *Database) Readonly() bool

func (*Database) SetLastBlock

func (st *Database) SetLastBlock(height base.Height) error

type DigestError

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

func NewDigestError

func NewDigestError(err error, height base.Height) DigestError

func (DigestError) Error

func (de DigestError) Error() string

func (DigestError) Height

func (de DigestError) Height() base.Height

func (DigestError) IsError

func (de DigestError) IsError() bool

type Digester

type Digester struct {
	sync.RWMutex
	*util.ContextDaemon
	*logging.Logging
	// contains filtered or unexported fields
}

func NewDigester

func NewDigester(
	st *Database,
	root string,
	sourceReaders *isaac.BlockItemReaders,
	fromRemotes isaac.RemotesBlockItemReadFunc,
	networkID base.NetworkID,
	errChan chan error,
) *Digester

func (*Digester) Digest

func (di *Digester) Digest(blocks []base.BlockMap)

type DummyCache

type DummyCache struct{}

func (DummyCache) Get

func (DummyCache) Get(string) ([]byte, error)

func (DummyCache) Set

type HTTP2Server

type HTTP2Server struct {
	sync.RWMutex
	*logging.Logging
	*mitumutil.ContextDaemon
	// contains filtered or unexported fields
}

func NewHTTP2Server

func NewHTTP2Server(bind, host string, certs []tls.Certificate, encs *encoder.Encoders, networkID base.NetworkID) (*HTTP2Server, error)

func (*HTTP2Server) HandleRequest

func (sv *HTTP2Server) HandleRequest(wrapper RequestWrapper)

func (*HTTP2Server) Initialize

func (sv *HTTP2Server) Initialize() error

func (*HTTP2Server) Queue

func (sv *HTTP2Server) Queue() chan RequestWrapper

func (*HTTP2Server) Router

func (sv *HTTP2Server) Router() *mux.Router

func (*HTTP2Server) SetEncoder

func (sv *HTTP2Server) SetEncoder(encs *encoder.Encoders)

func (*HTTP2Server) SetNetworkClientFunc

func (sv *HTTP2Server) SetNetworkClientFunc(f func() (*isaacnetwork.BaseClient, *quicmemberlist.Memberlist, []quicstream.ConnInfo, error)) *HTTP2Server

func (*HTTP2Server) SetRouter

func (sv *HTTP2Server) SetRouter(router *mux.Router)

type Hal

type Hal interface {
	RawInterface() []byte
	Interface() interface{}
	SetInterface(interface{}) Hal
	Self() HalLink
	SetSelf(HalLink) Hal
	Links() map[string]HalLink
	AddLink(rel string, link HalLink) Hal
	Extras() map[string]interface{}
	AddExtras(string, interface{}) Hal
}
type HalLink struct {
	// contains filtered or unexported fields
}
func NewHalLink(href string, properties map[string]interface{}) HalLink

func (HalLink) Href

func (hl HalLink) Href() string

func (HalLink) MarshalJSON

func (hl HalLink) MarshalJSON() ([]byte, error)

func (HalLink) Properties

func (hl HalLink) Properties() map[string]interface{}

func (HalLink) SetProperty

func (hl HalLink) SetProperty(key string, value interface{}) HalLink

func (HalLink) SetTemplated

func (hl HalLink) SetTemplated() HalLink

func (HalLink) URL

func (hl HalLink) URL() (*url.URL, error)

func (*HalLink) UnmarshalJSON

func (hl *HalLink) UnmarshalJSON(b []byte) error

type HalLinkJSONUnpacker

type HalLinkJSONUnpacker struct {
	Href       string                 `json:"href"`
	Properties map[string]interface{} `json:"properties,omitempty"`
}

type Handlers

type Handlers struct {
	*zerolog.Logger
	// contains filtered or unexported fields
}

func NewHandlers

func NewHandlers(
	ctx context.Context,
	networkID base.NetworkID,
	encs *encoder.Encoders,
	enc encoder.Encoder,
	st *Database,
	cache Cache,
	router *mux.Router,
	queue chan RequestWrapper,
) *Handlers

func (*Handlers) Cache

func (hd *Handlers) Cache() Cache

func (*Handlers) Handler

func (hd *Handlers) Handler() http.Handler

func (*Handlers) Initialize

func (hd *Handlers) Initialize() error

func (*Handlers) Router

func (hd *Handlers) Router() *mux.Router

func (*Handlers) Routes

func (hd *Handlers) Routes() map[string]*mux.Route

func (*Handlers) SetLimiter

func (hd *Handlers) SetLimiter(f func(string) int64) *Handlers

func (*Handlers) SetNetworkClientFunc

func (hd *Handlers) SetNetworkClientFunc(f func() (*isaacnetwork.BaseClient, *quicmemberlist.Memberlist, []quicstream.ConnInfo, error)) *Handlers

func (*Handlers) SetNodeInfoHandler

func (hd *Handlers) SetNodeInfoHandler(handler NodeInfoHandler) *Handlers

type LocalMemCache

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

func NewLocalMemCache

func NewLocalMemCache(size int, expire time.Duration) *LocalMemCache

func (*LocalMemCache) Get

func (ca *LocalMemCache) Get(key string) ([]byte, error)

func (*LocalMemCache) Set

func (ca *LocalMemCache) Set(key string, b []byte, expire time.Duration) error

type ManifestDoc

type ManifestDoc struct {
	mongodbstorage.BaseDoc
	// contains filtered or unexported fields
}

func NewManifestDoc

func NewManifestDoc(
	manifest base.Manifest,
	enc encoder.Encoder,
	height base.Height,
	operations []base.Operation,
	confirmedAt time.Time,
	proposer base.Address,
	round base.Round,
) (ManifestDoc, error)

func (ManifestDoc) MarshalBSON

func (doc ManifestDoc) MarshalBSON() ([]byte, error)

type ManifestValue

type ManifestValue struct {
	hint.BaseHinter
	// contains filtered or unexported fields
}

func NewManifestValue

func NewManifestValue(
	manifest base.Manifest,
	height base.Height,
	confirmedAt time.Time,
) ManifestValue

func (ManifestValue) ConfirmedAt

func (va ManifestValue) ConfirmedAt() time.Time

func (ManifestValue) Height

func (va ManifestValue) Height() base.Height

func (ManifestValue) Hint

func (ManifestValue) Hint() hint.Hint

func (ManifestValue) Manifest

func (va ManifestValue) Manifest() base.Manifest

type Memcached

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

func NewMemcached

func NewMemcached(servers ...string) (*Memcached, error)

func (*Memcached) Get

func (mc *Memcached) Get(key string) ([]byte, error)

func (*Memcached) Set

func (mc *Memcached) Set(key string, b []byte, expire time.Duration) error

type NodeInfoHandler

type NodeInfoHandler func() (isaacnetwork.NodeInfo, error)

type OperationDoc

type OperationDoc struct {
	mongodbstorage.BaseDoc
	// contains filtered or unexported fields
}

func NewOperationDoc

func NewOperationDoc(
	op base.Operation,
	enc encoder.Encoder,
	height base.Height,
	confirmedAt time.Time,
	inState bool,
	reason string,
	index uint64,
) (OperationDoc, error)

func (OperationDoc) MarshalBSON

func (doc OperationDoc) MarshalBSON() ([]byte, error)

type OperationValue

type OperationValue struct {
	hint.BaseHinter
	// contains filtered or unexported fields
}

func LoadOperation

func LoadOperation(decoder func(interface{}) error, encs *encoder.Encoders) (OperationValue, error)

func NewOperationValue

func NewOperationValue(
	op base.Operation,
	height base.Height,
	confirmedAt time.Time,
	inState bool,
	reason string,
	index uint64,
) OperationValue

func (OperationValue) ConfirmedAt

func (va OperationValue) ConfirmedAt() time.Time

func (*OperationValue) DecodeBSON

func (va *OperationValue) DecodeBSON(b []byte, enc *bsonenc.Encoder) error

func (*OperationValue) DecodeJSON

func (va *OperationValue) DecodeJSON(b []byte, enc encoder.Encoder) error

func (OperationValue) Height

func (va OperationValue) Height() base.Height

func (OperationValue) Hint

func (OperationValue) Hint() hint.Hint

func (OperationValue) InState

func (va OperationValue) InState() bool

func (OperationValue) Index

func (va OperationValue) Index() uint64

Index indicates the index number of Operation in OperationTree of block.

func (OperationValue) IsZeroValue

func (va OperationValue) IsZeroValue() bool

func (OperationValue) MarshalBSON

func (va OperationValue) MarshalBSON() ([]byte, error)

func (OperationValue) MarshalJSON

func (va OperationValue) MarshalJSON() ([]byte, error)

func (OperationValue) Operation

func (va OperationValue) Operation() base.Operation

func (OperationValue) Reason

func (va OperationValue) Reason() string

type OperationValueBSONUnmarshaler

type OperationValueBSONUnmarshaler struct {
	Hint        string      `bson:"_hint"`
	OP          bson.Raw    `bson:"op"`
	Height      base.Height `bson:"height"`
	ConfirmedAt time.Time   `bson:"confirmed_at"`
	InState     bool        `bson:"in_state"`
	RS          string      `bson:"reason"`
	Index       uint64      `bson:"index"`
}

type OperationValueJSONMarshaler

type OperationValueJSONMarshaler struct {
	hint.BaseHinter
	Hash        util.Hash      `json:"hash"`
	Operation   base.Operation `json:"operation"`
	Height      base.Height    `json:"height"`
	ConfirmedAt localtime.Time `json:"confirmed_at"`
	Reason      string         `json:"reason"`
	InState     bool           `json:"in_state"`
	Index       uint64         `json:"index"`
}

type OperationValueJSONUnmarshaler

type OperationValueJSONUnmarshaler struct {
	Operation   json.RawMessage `json:"operation"`
	Height      base.Height     `json:"height"`
	ConfirmedAt localtime.Time  `json:"confirmed_at"`
	InState     bool            `json:"in_state"`
	Reason      string          `json:"reason"`
	Index       uint64          `json:"index"`
}

type Problem

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

Problem implements "Problem Details for HTTP APIs"<https://tools.ietf.org/html/rfc7807>.

func NewProblem

func NewProblem(t, title string) Problem

func NewProblemFromError

func NewProblemFromError(err error) Problem

func (Problem) Error

func (pr Problem) Error() string

func (Problem) Hint

func (Problem) Hint() hint.Hint

func (Problem) SetDetail

func (pr Problem) SetDetail(detail string) Problem

func (Problem) SetExtra

func (pr Problem) SetExtra(key string, value interface{}) Problem

func (Problem) SetTitle

func (pr Problem) SetTitle(title string) Problem

type RequestWrapper

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

type WriteModelPrepareFunc

type WriteModelPrepareFunc func(BlockSession, base.State) ([]mongo.WriteModel, error)

Directories

Path Synopsis
Package cache provides caching.
Package cache provides caching.
bson
Package bsonenc support encoding and decoding by bson.
Package bsonenc support encoding and decoding by bson.

Jump to

Keyboard shortcuts

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