Documentation ¶
Index ¶
- Constants
- Variables
- func CommandToSignal(command Command) (syscall.Signal, error)
- func ErrorIs(err, target error) bool
- func GatewayDoNotForceInterestOnlyMode(doNotForce bool)
- func GenTLSConfig(tc *TLSConfigOpts) (*tls.Config, error)
- func IsEncodedStreamState(buf []byte) bool
- func IsNatsErr(err error, ids ...ErrorIdentifier) bool
- func IsValidLiteralSubject(subject string) bool
- func IsValidPublishSubject(subject string) bool
- func IsValidSubject(subject string) bool
- func NewErrorCtx(err error, format string, args ...interface{}) error
- func NewSubjectTransform(src, dest string) (*subjectTransform, error)
- func NewSubjectTransformStrict(src, dest string) (*subjectTransform, error)
- func NewSubjectTransformWithStrict(src, dest string, strict bool) (*subjectTransform, error)
- func NoErrOnUnknownFields(noError bool)
- func PrintAndDie(msg string)
- func PrintServerAndExit()
- func PrintTLSHelpAndDie()
- func ProcessCommandLineArgs(cmd *flag.FlagSet) (showVersion bool, showHelp bool, err error)
- func ProcessSignal(command Command, pidExpr string) error
- func ReadOperatorJWT(jwtfile string) (*jwt.OperatorClaims, error)
- func RemoveSelfReference(clusterPort int, routes []*url.URL) ([]*url.URL, error)
- func ResetGatewaysSolicitDelay()
- func ResponseHandler(w http.ResponseWriter, r *http.Request, data []byte)
- func RoutesFromStr(routesStr string) []*url.URL
- func Run(server *Server) error
- func SetGatewaysSolicitDelay(delay time.Duration)
- func SetProcessName(name string)
- func SubjectsCollide(subj1, subj2 string) bool
- func UnpackIfErrorCtx(err error) string
- func ValidateMappingDestination(subject string) error
- type AccInfoEventOptions
- type Account
- func (a *Account) AddMappedStreamImport(account *Account, from, to string) error
- func (a *Account) AddMappedStreamImportWithClaim(account *Account, from, to string, imClaim *jwt.Import) error
- func (a *Account) AddMapping(src, dest string) error
- func (a *Account) AddServiceExport(subject string, accounts []*Account) error
- func (a *Account) AddServiceExportWithResponse(subject string, respType ServiceRespType, accounts []*Account) error
- func (a *Account) AddServiceImport(destination *Account, from, to string) error
- func (a *Account) AddServiceImportWithClaim(destination *Account, from, to string, imClaim *jwt.Import) error
- func (a *Account) AddStreamExport(subject string, accounts []*Account) error
- func (a *Account) AddStreamImport(account *Account, from, prefix string) error
- func (a *Account) AddStreamImportWithClaim(account *Account, from, prefix string, imClaim *jwt.Import) error
- func (a *Account) AddWeightedMappings(src string, dests ...*MapDest) error
- func (a *Account) DisableJetStream() error
- func (a *Account) EnableJetStream(limits map[string]JetStreamAccountLimits) error
- func (a *Account) GetName() string
- func (a *Account) Interest(subject string) int
- func (a *Account) IsExpired() bool
- func (a *Account) IsExportService(service string) bool
- func (a *Account) IsExportServiceTracking(service string) bool
- func (a *Account) JetStreamEnabled() bool
- func (a *Account) JetStreamIsConsumerLeader(stream, consumer string) bool
- func (a *Account) JetStreamIsStreamLeader(stream string) bool
- func (a *Account) JetStreamUsage() JetStreamAccountStats
- func (a *Account) MaxActiveConnections() int
- func (a *Account) MaxActiveLeafNodes() int
- func (a *Account) MaxTotalConnectionsReached() bool
- func (a *Account) MaxTotalLeafNodesReached() bool
- func (a *Account) NumConnections() int
- func (a *Account) NumLeafNodes() int
- func (a *Account) NumLocalConnections() int
- func (a *Account) NumPendingAllResponses() int
- func (a *Account) NumPendingResponses(filter string) int
- func (a *Account) NumPendingReverseResponses() int
- func (a *Account) NumRemoteConnections() int
- func (a *Account) NumRemoteLeafNodes() int
- func (a *Account) NumServiceImports() int
- func (a *Account) RemoveMapping(src string) bool
- func (a *Account) RestoreStream(ncfg *StreamConfig, r io.Reader) (*stream, error)
- func (a *Account) RoutedSubs() int
- func (a *Account) ServiceExportResponseThreshold(export string) (time.Duration, error)
- func (a *Account) SetServiceExportAllowTrace(export string, allowTrace bool) error
- func (a *Account) SetServiceExportResponseThreshold(export string, maxTime time.Duration) error
- func (a *Account) SetServiceImportSharing(destination *Account, to string, allow bool) error
- func (a *Account) String() string
- func (a *Account) SubscriptionInterest(subject string) bool
- func (a *Account) TotalSubs() int
- func (a *Account) TrackServiceExport(service, results string) error
- func (a *Account) TrackServiceExportWithSampling(service, results string, sampling int) error
- func (a *Account) UnTrackServiceExport(service string)
- func (a *Account) UpdateJetStreamLimits(limits map[string]JetStreamAccountLimits) error
- type AccountDetail
- type AccountGatewayz
- type AccountInfo
- type AccountNumConns
- type AccountResolver
- type AccountStat
- type AccountStatz
- type AccountStatzEventOptions
- type AccountStatzOptions
- type Accountz
- type AccountzEventOptions
- type AccountzOptions
- type AckPolicy
- type ActionAdvisoryType
- type ApiError
- func NewJSAccountResourcesExceededError(opts ...ErrorOption) *ApiError
- func NewJSBadRequestError(opts ...ErrorOption) *ApiError
- func NewJSClusterIncompleteError(opts ...ErrorOption) *ApiError
- func NewJSClusterNoPeersError(err error, opts ...ErrorOption) *ApiError
- func NewJSClusterNotActiveError(opts ...ErrorOption) *ApiError
- func NewJSClusterNotAssignedError(opts ...ErrorOption) *ApiError
- func NewJSClusterNotAvailError(opts ...ErrorOption) *ApiError
- func NewJSClusterNotLeaderError(opts ...ErrorOption) *ApiError
- func NewJSClusterPeerNotMemberError(opts ...ErrorOption) *ApiError
- func NewJSClusterRequiredError(opts ...ErrorOption) *ApiError
- func NewJSClusterServerNotMemberError(opts ...ErrorOption) *ApiError
- func NewJSClusterTagsError(opts ...ErrorOption) *ApiError
- func NewJSClusterUnSupportFeatureError(opts ...ErrorOption) *ApiError
- func NewJSConsumerAlreadyExistsError(opts ...ErrorOption) *ApiError
- func NewJSConsumerBadDurableNameError(opts ...ErrorOption) *ApiError
- func NewJSConsumerConfigRequiredError(opts ...ErrorOption) *ApiError
- func NewJSConsumerCreateDurableAndNameMismatchError(opts ...ErrorOption) *ApiError
- func NewJSConsumerCreateError(err error, opts ...ErrorOption) *ApiError
- func NewJSConsumerCreateFilterSubjectMismatchError(opts ...ErrorOption) *ApiError
- func NewJSConsumerDeliverCycleError(opts ...ErrorOption) *ApiError
- func NewJSConsumerDeliverToWildcardsError(opts ...ErrorOption) *ApiError
- func NewJSConsumerDescriptionTooLongError(max interface{}, opts ...ErrorOption) *ApiError
- func NewJSConsumerDirectRequiresEphemeralError(opts ...ErrorOption) *ApiError
- func NewJSConsumerDirectRequiresPushError(opts ...ErrorOption) *ApiError
- func NewJSConsumerDoesNotExistError(opts ...ErrorOption) *ApiError
- func NewJSConsumerDuplicateFilterSubjectsError(opts ...ErrorOption) *ApiError
- func NewJSConsumerDurableNameNotInSubjectError(opts ...ErrorOption) *ApiError
- func NewJSConsumerDurableNameNotMatchSubjectError(opts ...ErrorOption) *ApiError
- func NewJSConsumerDurableNameNotSetError(opts ...ErrorOption) *ApiError
- func NewJSConsumerEmptyFilterError(opts ...ErrorOption) *ApiError
- func NewJSConsumerEphemeralWithDurableInSubjectError(opts ...ErrorOption) *ApiError
- func NewJSConsumerEphemeralWithDurableNameError(opts ...ErrorOption) *ApiError
- func NewJSConsumerExistingActiveError(opts ...ErrorOption) *ApiError
- func NewJSConsumerFCRequiresPushError(opts ...ErrorOption) *ApiError
- func NewJSConsumerFilterNotSubsetError(opts ...ErrorOption) *ApiError
- func NewJSConsumerHBRequiresPushError(opts ...ErrorOption) *ApiError
- func NewJSConsumerInactiveThresholdExcessError(limit interface{}, opts ...ErrorOption) *ApiError
- func NewJSConsumerInvalidDeliverSubjectError(opts ...ErrorOption) *ApiError
- func NewJSConsumerInvalidPolicyError(err error, opts ...ErrorOption) *ApiError
- func NewJSConsumerInvalidSamplingError(err error, opts ...ErrorOption) *ApiError
- func NewJSConsumerMaxDeliverBackoffError(opts ...ErrorOption) *ApiError
- func NewJSConsumerMaxPendingAckExcessError(limit interface{}, opts ...ErrorOption) *ApiError
- func NewJSConsumerMaxPendingAckPolicyRequiredError(opts ...ErrorOption) *ApiError
- func NewJSConsumerMaxRequestBatchExceededError(limit interface{}, opts ...ErrorOption) *ApiError
- func NewJSConsumerMaxRequestBatchNegativeError(opts ...ErrorOption) *ApiError
- func NewJSConsumerMaxRequestExpiresToSmallError(opts ...ErrorOption) *ApiError
- func NewJSConsumerMaxWaitingNegativeError(opts ...ErrorOption) *ApiError
- func NewJSConsumerMetadataLengthError(limit interface{}, opts ...ErrorOption) *ApiError
- func NewJSConsumerMultipleFiltersNotAllowedError(opts ...ErrorOption) *ApiError
- func NewJSConsumerNameContainsPathSeparatorsError(opts ...ErrorOption) *ApiError
- func NewJSConsumerNameExistError(opts ...ErrorOption) *ApiError
- func NewJSConsumerNameTooLongError(max interface{}, opts ...ErrorOption) *ApiError
- func NewJSConsumerNotFoundError(opts ...ErrorOption) *ApiError
- func NewJSConsumerOfflineError(opts ...ErrorOption) *ApiError
- func NewJSConsumerOnMappedError(opts ...ErrorOption) *ApiError
- func NewJSConsumerOverlappingSubjectFiltersError(opts ...ErrorOption) *ApiError
- func NewJSConsumerPullNotDurableError(opts ...ErrorOption) *ApiError
- func NewJSConsumerPullRequiresAckError(opts ...ErrorOption) *ApiError
- func NewJSConsumerPullWithRateLimitError(opts ...ErrorOption) *ApiError
- func NewJSConsumerPushMaxWaitingError(opts ...ErrorOption) *ApiError
- func NewJSConsumerReplacementWithDifferentNameError(opts ...ErrorOption) *ApiError
- func NewJSConsumerReplicasExceedsStreamError(opts ...ErrorOption) *ApiError
- func NewJSConsumerReplicasShouldMatchStreamError(opts ...ErrorOption) *ApiError
- func NewJSConsumerSmallHeartbeatError(opts ...ErrorOption) *ApiError
- func NewJSConsumerStoreFailedError(err error, opts ...ErrorOption) *ApiError
- func NewJSConsumerWQConsumerNotDeliverAllError(opts ...ErrorOption) *ApiError
- func NewJSConsumerWQConsumerNotUniqueError(opts ...ErrorOption) *ApiError
- func NewJSConsumerWQMultipleUnfilteredError(opts ...ErrorOption) *ApiError
- func NewJSConsumerWQRequiresExplicitAckError(opts ...ErrorOption) *ApiError
- func NewJSConsumerWithFlowControlNeedsHeartbeatsError(opts ...ErrorOption) *ApiError
- func NewJSInsufficientResourcesError(opts ...ErrorOption) *ApiError
- func NewJSInvalidJSONError(opts ...ErrorOption) *ApiError
- func NewJSMaximumConsumersLimitError(opts ...ErrorOption) *ApiError
- func NewJSMaximumStreamsLimitError(opts ...ErrorOption) *ApiError
- func NewJSMemoryResourcesExceededError(opts ...ErrorOption) *ApiError
- func NewJSMirrorConsumerSetupFailedError(err error, opts ...ErrorOption) *ApiError
- func NewJSMirrorInvalidStreamNameError(opts ...ErrorOption) *ApiError
- func NewJSMirrorInvalidSubjectFilterError(opts ...ErrorOption) *ApiError
- func NewJSMirrorMaxMessageSizeTooBigError(opts ...ErrorOption) *ApiError
- func NewJSMirrorMultipleFiltersNotAllowedError(opts ...ErrorOption) *ApiError
- func NewJSMirrorOverlappingSubjectFiltersError(opts ...ErrorOption) *ApiError
- func NewJSMirrorWithFirstSeqError(opts ...ErrorOption) *ApiError
- func NewJSMirrorWithSourcesError(opts ...ErrorOption) *ApiError
- func NewJSMirrorWithStartSeqAndTimeError(opts ...ErrorOption) *ApiError
- func NewJSMirrorWithSubjectFiltersError(opts ...ErrorOption) *ApiError
- func NewJSMirrorWithSubjectsError(opts ...ErrorOption) *ApiError
- func NewJSNoAccountError(opts ...ErrorOption) *ApiError
- func NewJSNoLimitsError(opts ...ErrorOption) *ApiError
- func NewJSNoMessageFoundError(opts ...ErrorOption) *ApiError
- func NewJSNotEmptyRequestError(opts ...ErrorOption) *ApiError
- func NewJSNotEnabledError(opts ...ErrorOption) *ApiError
- func NewJSNotEnabledForAccountError(opts ...ErrorOption) *ApiError
- func NewJSPeerRemapError(opts ...ErrorOption) *ApiError
- func NewJSRaftGeneralError(err error, opts ...ErrorOption) *ApiError
- func NewJSReplicasCountCannotBeNegativeError(opts ...ErrorOption) *ApiError
- func NewJSRestoreSubscribeFailedError(err error, subject interface{}, opts ...ErrorOption) *ApiError
- func NewJSSequenceNotFoundError(seq uint64, opts ...ErrorOption) *ApiError
- func NewJSSnapshotDeliverSubjectInvalidError(opts ...ErrorOption) *ApiError
- func NewJSSourceConsumerSetupFailedError(err error, opts ...ErrorOption) *ApiError
- func NewJSSourceDuplicateDetectedError(opts ...ErrorOption) *ApiError
- func NewJSSourceInvalidStreamNameError(opts ...ErrorOption) *ApiError
- func NewJSSourceInvalidSubjectFilterError(opts ...ErrorOption) *ApiError
- func NewJSSourceInvalidTransformDestinationError(opts ...ErrorOption) *ApiError
- func NewJSSourceMaxMessageSizeTooBigError(opts ...ErrorOption) *ApiError
- func NewJSSourceMultipleFiltersNotAllowedError(opts ...ErrorOption) *ApiError
- func NewJSSourceOverlappingSubjectFiltersError(opts ...ErrorOption) *ApiError
- func NewJSStorageResourcesExceededError(opts ...ErrorOption) *ApiError
- func NewJSStreamAssignmentError(err error, opts ...ErrorOption) *ApiError
- func NewJSStreamCreateError(err error, opts ...ErrorOption) *ApiError
- func NewJSStreamDeleteError(err error, opts ...ErrorOption) *ApiError
- func NewJSStreamExternalApiOverlapError(prefix interface{}, subject interface{}, opts ...ErrorOption) *ApiError
- func NewJSStreamExternalDelPrefixOverlapsError(prefix interface{}, subject interface{}, opts ...ErrorOption) *ApiError
- func NewJSStreamGeneralError(err error, opts ...ErrorOption) *ApiError
- func NewJSStreamHeaderExceedsMaximumError(opts ...ErrorOption) *ApiError
- func NewJSStreamInfoMaxSubjectsError(opts ...ErrorOption) *ApiError
- func NewJSStreamInvalidConfigError(err error, opts ...ErrorOption) *ApiError
- func NewJSStreamInvalidError(opts ...ErrorOption) *ApiError
- func NewJSStreamInvalidExternalDeliverySubjError(prefix interface{}, opts ...ErrorOption) *ApiError
- func NewJSStreamLimitsError(err error, opts ...ErrorOption) *ApiError
- func NewJSStreamMaxBytesRequiredError(opts ...ErrorOption) *ApiError
- func NewJSStreamMaxStreamBytesExceededError(opts ...ErrorOption) *ApiError
- func NewJSStreamMessageExceedsMaximumError(opts ...ErrorOption) *ApiError
- func NewJSStreamMirrorNotUpdatableError(opts ...ErrorOption) *ApiError
- func NewJSStreamMismatchError(opts ...ErrorOption) *ApiError
- func NewJSStreamMoveAndScaleError(opts ...ErrorOption) *ApiError
- func NewJSStreamMoveInProgressError(msg interface{}, opts ...ErrorOption) *ApiError
- func NewJSStreamMoveNotInProgressError(opts ...ErrorOption) *ApiError
- func NewJSStreamMsgDeleteFailedError(err error, opts ...ErrorOption) *ApiError
- func NewJSStreamNameContainsPathSeparatorsError(opts ...ErrorOption) *ApiError
- func NewJSStreamNameExistError(opts ...ErrorOption) *ApiError
- func NewJSStreamNameExistRestoreFailedError(opts ...ErrorOption) *ApiError
- func NewJSStreamNotFoundError(opts ...ErrorOption) *ApiError
- func NewJSStreamNotMatchError(opts ...ErrorOption) *ApiError
- func NewJSStreamOfflineError(opts ...ErrorOption) *ApiError
- func NewJSStreamPurgeFailedError(err error, opts ...ErrorOption) *ApiError
- func NewJSStreamReplicasNotSupportedError(opts ...ErrorOption) *ApiError
- func NewJSStreamReplicasNotUpdatableError(opts ...ErrorOption) *ApiError
- func NewJSStreamRestoreError(err error, opts ...ErrorOption) *ApiError
- func NewJSStreamRollupFailedError(err error, opts ...ErrorOption) *ApiError
- func NewJSStreamSealedError(opts ...ErrorOption) *ApiError
- func NewJSStreamSequenceNotMatchError(opts ...ErrorOption) *ApiError
- func NewJSStreamSnapshotError(err error, opts ...ErrorOption) *ApiError
- func NewJSStreamStoreFailedError(err error, opts ...ErrorOption) *ApiError
- func NewJSStreamSubjectOverlapError(opts ...ErrorOption) *ApiError
- func NewJSStreamTemplateCreateError(err error, opts ...ErrorOption) *ApiError
- func NewJSStreamTemplateDeleteError(err error, opts ...ErrorOption) *ApiError
- func NewJSStreamTemplateNotFoundError(opts ...ErrorOption) *ApiError
- func NewJSStreamUpdateError(err error, opts ...ErrorOption) *ApiError
- func NewJSStreamWrongLastMsgIDError(id interface{}, opts ...ErrorOption) *ApiError
- func NewJSStreamWrongLastSequenceError(seq uint64, opts ...ErrorOption) *ApiError
- func NewJSTempStorageFailedError(opts ...ErrorOption) *ApiError
- func NewJSTemplateNameNotMatchSubjectError(opts ...ErrorOption) *ApiError
- type ApiPaged
- type ApiPagedRequest
- type ApiResponse
- type AuthCallout
- type Authentication
- type CacheDirAccResolver
- type ClaimUpdateError
- type ClaimUpdateStatus
- type ClientAuthentication
- type ClientInfo
- type ClientOpts
- type ClosedState
- type ClusterInfo
- type ClusterOpts
- type ClusterOptsVarz
- type Command
- type CommittedEntry
- type CompressionInfo
- type CompressionOpts
- type ConnInfo
- type ConnInfos
- type ConnState
- type ConnectEventMsg
- type Connz
- type ConnzEventOptions
- type ConnzOptions
- type ConsumerAction
- type ConsumerConfig
- type ConsumerInfo
- type ConsumerNakOptions
- type ConsumerState
- type ConsumerStore
- type CreateConsumerRequest
- type DataStats
- type DeleteBlock
- type DeleteBlocks
- type DeleteRange
- type DeleteSlice
- type DeliverPolicy
- type DenyRules
- type DirAccResolver
- type DirJWTStore
- func NewDirJWTStore(dirPath string, shard bool, create bool, _ ...dirJWTStoreOption) (*DirJWTStore, error)
- func NewExpiringDirJWTStore(dirPath string, shard bool, create bool, delete deleteType, ...) (*DirJWTStore, error)
- func NewImmutableDirJWTStore(dirPath string, shard bool, _ ...dirJWTStoreOption) (*DirJWTStore, error)
- func (store *DirJWTStore) Close()
- func (store *DirJWTStore) Hash() [sha256.Size]byte
- func (store *DirJWTStore) IsReadOnly() bool
- func (store *DirJWTStore) LoadAcc(publicKey string) (string, error)
- func (store *DirJWTStore) LoadAct(hash string) (string, error)
- func (store *DirJWTStore) Merge(pack string) error
- func (store *DirJWTStore) Pack(maxJWTs int) (string, error)
- func (store *DirJWTStore) PackWalk(maxJWTs int, cb func(partialPackMsg string)) error
- func (store *DirJWTStore) Reload() error
- func (store *DirJWTStore) SaveAcc(publicKey string, theJWT string) error
- func (store *DirJWTStore) SaveAct(hash string, theJWT string) error
- type DirResOption
- type DiscardPolicy
- type DisconnectEventMsg
- type Entry
- type EntryType
- type ErrorIdentifier
- type ErrorOption
- type ErrorsData
- type EventFilterOptions
- type ExtExport
- type ExtImport
- type ExtMap
- type ExtVrIssues
- type ExternalStream
- type FileConsumerInfo
- type FileStoreConfig
- type FileStreamInfo
- type GatewayInterestMode
- type GatewayOpts
- type GatewayOptsVarz
- type GatewayStat
- type Gatewayz
- type GatewayzEventOptions
- type GatewayzOptions
- type HealthStatus
- type HealthZErrorType
- type HealthzError
- type HealthzEventOptions
- type HealthzOptions
- type Info
- type JSAPIAudit
- type JSApiAccountInfoResponse
- type JSApiAccountPurgeResponse
- type JSApiConsumerCreateResponse
- type JSApiConsumerDeleteResponse
- type JSApiConsumerGetNextRequest
- type JSApiConsumerInfoResponse
- type JSApiConsumerLeaderStepDownResponse
- type JSApiConsumerListResponse
- type JSApiConsumerNamesResponse
- type JSApiConsumerPauseRequest
- type JSApiConsumerPauseResponse
- type JSApiConsumersRequest
- type JSApiLeaderStepDownResponse
- type JSApiLeaderStepdownRequest
- type JSApiMetaServerRemoveRequest
- type JSApiMetaServerRemoveResponse
- type JSApiMetaServerStreamMoveRequest
- type JSApiMsgDeleteRequest
- type JSApiMsgDeleteResponse
- type JSApiMsgGetRequest
- type JSApiMsgGetResponse
- type JSApiStreamCreateResponse
- type JSApiStreamDeleteResponse
- type JSApiStreamInfoRequest
- type JSApiStreamInfoResponse
- type JSApiStreamLeaderStepDownResponse
- type JSApiStreamListRequest
- type JSApiStreamListResponse
- type JSApiStreamNamesRequest
- type JSApiStreamNamesResponse
- type JSApiStreamPurgeRequest
- type JSApiStreamPurgeResponse
- type JSApiStreamRemovePeerRequest
- type JSApiStreamRemovePeerResponse
- type JSApiStreamRestoreRequest
- type JSApiStreamRestoreResponse
- type JSApiStreamSnapshotRequest
- type JSApiStreamSnapshotResponse
- type JSApiStreamTemplateCreateResponse
- type JSApiStreamTemplateDeleteResponse
- type JSApiStreamTemplateInfoResponse
- type JSApiStreamTemplateNamesResponse
- type JSApiStreamTemplatesRequest
- type JSApiStreamUpdateResponse
- type JSConsumerAckMetric
- type JSConsumerActionAdvisory
- type JSConsumerDeliveryExceededAdvisory
- type JSConsumerDeliveryNakAdvisory
- type JSConsumerDeliveryTerminatedAdvisory
- type JSConsumerLeaderElectedAdvisory
- type JSConsumerPauseAdvisory
- type JSConsumerQuorumLostAdvisory
- type JSDomainLeaderElectedAdvisory
- type JSInfo
- type JSLimitOpts
- type JSPubAckResponse
- type JSRestoreCompleteAdvisory
- type JSRestoreCreateAdvisory
- type JSServerOutOfSpaceAdvisory
- type JSServerRemovedAdvisory
- type JSSnapshotCompleteAdvisory
- type JSSnapshotCreateAdvisory
- type JSStreamActionAdvisory
- type JSStreamLeaderElectedAdvisory
- type JSStreamQuorumLostAdvisory
- type JSzOptions
- type JWTChanged
- type JetStreamAPIStats
- type JetStreamAccountLimits
- type JetStreamAccountStats
- type JetStreamConfig
- type JetStreamStats
- type JetStreamTier
- type JetStreamVarz
- type JszEventOptions
- type KickClientReq
- type LDMClientReq
- type LeafInfo
- type LeafNodeOpts
- type LeafNodeOptsVarz
- type Leafz
- type LeafzEventOptions
- type LeafzOptions
- type LocalCache
- func (c *LocalCache) Compress(buf []byte) ([]byte, error)
- func (c *LocalCache) Config() *OCSPResponseCacheConfig
- func (c *LocalCache) Decompress(buf []byte) ([]byte, error)
- func (c *LocalCache) Delete(key string, wasMiss bool, log *certidp.Log)
- func (c *LocalCache) Get(key string, log *certidp.Log) []byte
- func (c *LocalCache) Online() bool
- func (c *LocalCache) Put(key string, caResp *ocsp.Response, subj string, log *certidp.Log)
- func (c *LocalCache) Start(s *Server)
- func (c *LocalCache) Stats() *OCSPResponseCacheStats
- func (c *LocalCache) Stop(s *Server)
- func (c *LocalCache) Type() string
- type Logger
- type LostStreamData
- type MQTTOpts
- type MQTTOptsVarz
- type MapDest
- type MemAccResolver
- func (*MemAccResolver) Close()
- func (m *MemAccResolver) Fetch(name string) (string, error)
- func (m *MemAccResolver) IsReadOnly() bool
- func (*MemAccResolver) IsTrackingUpdate() bool
- func (*MemAccResolver) Reload() error
- func (*MemAccResolver) Start(*Server) error
- func (m *MemAccResolver) Store(name, jwt string) error
- type MetaClusterInfo
- type MsgTrace
- type MsgTraceBase
- type MsgTraceEgress
- type MsgTraceEvent
- func (t *MsgTraceEvent) Egresses() []*MsgTraceEgress
- func (t *MsgTraceEvent) Ingress() *MsgTraceIngress
- func (t *MsgTraceEvent) JetStream() *MsgTraceJetStream
- func (t *MsgTraceEvent) ServiceImports() []*MsgTraceServiceImport
- func (t *MsgTraceEvent) StreamExports() []*MsgTraceStreamExport
- func (t *MsgTraceEvent) SubjectMapping() *MsgTraceSubjectMapping
- type MsgTraceEvents
- type MsgTraceIngress
- type MsgTraceJetStream
- type MsgTraceRequest
- type MsgTraceServiceImport
- type MsgTraceStreamExport
- type MsgTraceSubjectMapping
- type MsgTraceType
- type NetworkIntercept
- type NkeyUser
- type NoOpCache
- func (c *NoOpCache) Config() *OCSPResponseCacheConfig
- func (c *NoOpCache) Delete(_ string, _ bool, _ *certidp.Log)
- func (c *NoOpCache) Get(_ string, _ *certidp.Log) []byte
- func (c *NoOpCache) Online() bool
- func (c *NoOpCache) Put(_ string, _ *ocsp.Response, _ string, _ *certidp.Log)
- func (c *NoOpCache) Start(_ *Server)
- func (c *NoOpCache) Stats() *OCSPResponseCacheStats
- func (c *NoOpCache) Stop(_ *Server)
- func (c *NoOpCache) Type() string
- type Number
- type OCSPConfig
- type OCSPMode
- type OCSPMonitor
- type OCSPPeerChainlinkInvalidEventMsg
- type OCSPPeerRejectEventMsg
- type OCSPResponseCache
- type OCSPResponseCacheConfig
- type OCSPResponseCacheItem
- type OCSPResponseCacheStats
- type OCSPResponseCacheType
- type OCSPResponseCacheVarz
- type Options
- type Peer
- type PeerInfo
- type Pending
- type Permissions
- type PinnedCertSet
- type Placement
- type Ports
- type ProfilezEventOptions
- type ProfilezOptions
- type ProfilezStatus
- type PubAck
- type RaftConfig
- type RaftGroupDetail
- type RaftNode
- type RaftState
- type RePublish
- type RemoteGatewayOpts
- type RemoteGatewayOptsVarz
- type RemoteGatewayz
- type RemoteLeafOpts
- type RemoteLeafOptsVarz
- type ReplayPolicy
- type ResponsePermission
- type RetentionPolicy
- type RouteInfo
- type RoutePermissions
- type RouteStat
- type RouteType
- type Routez
- type RoutezEventOptions
- type RoutezOptions
- type SequenceInfo
- type SequencePair
- type Server
- func (s *Server) AcceptLoop(clr chan struct{})
- func (s *Server) AccountResolver() AccountResolver
- func (s *Server) AccountStatz(opts *AccountStatzOptions) (*AccountStatz, error)
- func (s *Server) Accountz(optz *AccountzOptions) (*Accountz, error)
- func (s *Server) ActivePeers() (peers []string)
- func (s *Server) Addr() net.Addr
- func (s *Server) ClientURL() string
- func (s *Server) ClusterAddr() *net.TCPAddr
- func (s *Server) ClusterName() string
- func (s *Server) ConfigTime() time.Time
- func (s *Server) ConfigureLogger()
- func (s *Server) Connz(opts *ConnzOptions) (*Connz, error)
- func (s *Server) Debugf(format string, v ...interface{})
- func (s *Server) DisableJetStream() error
- func (s *Server) DisconnectClientByID(id uint64) error
- func (s *Server) EnableJetStream(config *JetStreamConfig) error
- func (s *Server) Errorc(ctx string, e error)
- func (s *Server) Errorf(format string, v ...interface{})
- func (s *Server) Errors(scope interface{}, e error)
- func (s *Server) Errorsc(scope interface{}, ctx string, e error)
- func (s *Server) EventsEnabled() bool
- func (s *Server) Fatalf(format string, v ...interface{})
- func (s *Server) GatewayAddr() *net.TCPAddr
- func (s *Server) Gatewayz(opts *GatewayzOptions) (*Gatewayz, error)
- func (s *Server) GetClient(cid uint64) *client
- func (s *Server) GetLeafNode(cid uint64) *client
- func (s *Server) GlobalAccount() *Account
- func (s *Server) HTTPHandler() http.Handler
- func (s *Server) HandleAccountStatz(w http.ResponseWriter, r *http.Request)
- func (s *Server) HandleAccountz(w http.ResponseWriter, r *http.Request)
- func (s *Server) HandleConnz(w http.ResponseWriter, r *http.Request)
- func (s *Server) HandleGatewayz(w http.ResponseWriter, r *http.Request)
- func (s *Server) HandleHealthz(w http.ResponseWriter, r *http.Request)
- func (s *Server) HandleIPQueuesz(w http.ResponseWriter, r *http.Request)
- func (s *Server) HandleJsz(w http.ResponseWriter, r *http.Request)
- func (s *Server) HandleLeafz(w http.ResponseWriter, r *http.Request)
- func (s *Server) HandleRoot(w http.ResponseWriter, r *http.Request)
- func (s *Server) HandleRoutez(w http.ResponseWriter, r *http.Request)
- func (s *Server) HandleStacksz(w http.ResponseWriter, r *http.Request)
- func (s *Server) HandleSubsz(w http.ResponseWriter, r *http.Request)
- func (s *Server) HandleVarz(w http.ResponseWriter, r *http.Request)
- func (s *Server) ID() string
- func (s *Server) InProcessConn() (net.Conn, error)
- func (s *Server) JetStreamClusterPeers() []string
- func (s *Server) JetStreamConfig() *JetStreamConfig
- func (s *Server) JetStreamEnabled() bool
- func (s *Server) JetStreamEnabledForDomain() bool
- func (s *Server) JetStreamIsClustered() bool
- func (s *Server) JetStreamIsConsumerLeader(account, stream, consumer string) bool
- func (s *Server) JetStreamIsCurrent() bool
- func (s *Server) JetStreamIsLeader() bool
- func (s *Server) JetStreamIsStreamAssigned(account, stream string) bool
- func (s *Server) JetStreamIsStreamCurrent(account, stream string) bool
- func (s *Server) JetStreamIsStreamLeader(account, stream string) bool
- func (s *Server) JetStreamNumAccounts() int
- func (s *Server) JetStreamReservedResources() (int64, int64, error)
- func (s *Server) JetStreamSnapshotMeta() error
- func (s *Server) JetStreamSnapshotStream(account, stream string) error
- func (s *Server) JetStreamStepdownConsumer(account, stream, consumer string) error
- func (s *Server) JetStreamStepdownStream(account, stream string) error
- func (s *Server) Jsz(opts *JSzOptions) (*JSInfo, error)
- func (s *Server) JszAccount(opts *JSzOptions) (*AccountDetail, error)
- func (s *Server) LDMClientByID(id uint64) error
- func (s *Server) Leafz(opts *LeafzOptions) (*Leafz, error)
- func (s *Server) Logger() Logger
- func (s *Server) LookupAccount(name string) (*Account, error)
- func (s *Server) LookupOrRegisterAccount(name string) (account *Account, isNew bool)
- func (s *Server) MonitorAddr() *net.TCPAddr
- func (s *Server) Name() string
- func (srv *Server) NewOCSPMonitor(config *tlsConfigKind) (*tls.Config, *OCSPMonitor, error)
- func (s *Server) Node() string
- func (s *Server) NodeName() string
- func (s *Server) NonceRequired() bool
- func (s *Server) Noticef(format string, v ...interface{})
- func (s *Server) NumActiveAccounts() int32
- func (s *Server) NumClients() int
- func (s *Server) NumLeafNodes() int
- func (s *Server) NumLoadedAccounts() int
- func (s *Server) NumOutboundGateways() int
- func (s *Server) NumRemotes() int
- func (s *Server) NumRoutes() int
- func (s *Server) NumSlowConsumers() int64
- func (s *Server) NumSlowConsumersClients() uint64
- func (s *Server) NumSlowConsumersGateways() uint64
- func (s *Server) NumSlowConsumersLeafs() uint64
- func (s *Server) NumSlowConsumersRoutes() uint64
- func (s *Server) NumSubscriptions() uint32
- func (s *Server) PortsInfo(maxWait time.Duration) *Ports
- func (s *Server) ProfilerAddr() *net.TCPAddr
- func (s *Server) RateLimitDebugf(format string, v ...interface{})
- func (s *Server) RateLimitWarnf(format string, v ...interface{})
- func (s *Server) ReOpenLogFile()
- func (s *Server) ReadyForConnections(dur time.Duration) bool
- func (s *Server) RegisterAccount(name string) (*Account, error)
- func (s *Server) RegisterExternalConn(con net.Conn) error
- func (s *Server) Reload() error
- func (s *Server) ReloadOptions(newOpts *Options) error
- func (s *Server) Routez(routezOpts *RoutezOptions) (*Routez, error)
- func (s *Server) Running() bool
- func (s *Server) SetAccountResolver(ar AccountResolver)
- func (s *Server) SetDefaultSystemAccount() error
- func (s *Server) SetLogger(logger Logger, debugFlag, traceFlag bool)
- func (s *Server) SetLoggerV2(logger Logger, debugFlag, traceFlag, sysTrace bool)
- func (s *Server) SetSystemAccount(accName string) error
- func (s *Server) Shutdown()
- func (s *Server) Start()
- func (s *Server) StartHTTPMonitoring()
- func (s *Server) StartHTTPSMonitoring()
- func (s *Server) StartMonitoring() error
- func (s *Server) StartProfiler()
- func (s *Server) StartRouting(clientListenReady chan struct{})
- func (s *Server) StoreDir() string
- func (s *Server) String() string
- func (s *Server) Subsz(opts *SubszOptions) (*Subsz, error)
- func (s *Server) SystemAccount() *Account
- func (s *Server) Tracef(format string, v ...interface{})
- func (s *Server) TrackedRemoteServers() int
- func (s *Server) UpdateAccountClaims(a *Account, ac *jwt.AccountClaims)
- func (s *Server) Varz(varzOpts *VarzOptions) (*Varz, error)
- func (s *Server) WaitForShutdown()
- func (s *Server) Warnf(format string, v ...interface{})
- type ServerAPIClaimUpdateResponse
- type ServerAPIConnzResponse
- type ServerAPIResponse
- type ServerCapability
- type ServerID
- type ServerInfo
- type ServerStats
- type ServerStatsMsg
- type ServiceLatency
- type ServiceRespType
- type SignatureHandler
- type SimpleState
- type SlowConsumersStats
- type SnapshotResult
- type SortOpt
- type StatszEventOptions
- type StorageType
- type StorageUpdateHandler
- type StoreCipher
- type StoreCompression
- type StoreMsg
- type StoredMsg
- type StreamAlternate
- type StreamConfig
- type StreamConsumerLimits
- type StreamDetail
- type StreamInfo
- type StreamReplicatedState
- type StreamSource
- type StreamSourceInfo
- type StreamState
- type StreamStore
- type StreamTemplateConfig
- type StreamTemplateInfo
- type SubDetail
- type SubjectPermission
- type SubjectTransformConfig
- type SubjectTransformer
- type Sublist
- func (s *Sublist) All(subs *[]*subscription)
- func (s *Sublist) CacheCount() int
- func (s *Sublist) CacheEnabled() bool
- func (s *Sublist) ClearNotification(subject string, notify chan<- bool) bool
- func (s *Sublist) ClearQueueNotification(subject, queue string, notify chan<- bool) bool
- func (s *Sublist) Count() uint32
- func (s *Sublist) Insert(sub *subscription) error
- func (s *Sublist) Match(subject string) *SublistResult
- func (s *Sublist) RegisterNotification(subject string, notify chan<- bool) error
- func (s *Sublist) RegisterQueueNotification(subject, queue string, notify chan<- bool) error
- func (s *Sublist) Remove(sub *subscription) error
- func (s *Sublist) RemoveBatch(subs []*subscription) error
- func (s *Sublist) ReverseMatch(subject string) *SublistResult
- func (s *Sublist) Stats() *SublistStats
- func (s *Sublist) UpdateRemoteQSub(sub *subscription)
- type SublistResult
- type SublistStats
- type Subsz
- type SubszEventOptions
- type SubszOptions
- type TLSCertPairOpt
- type TLSConfigOpts
- type TLSPeerCert
- type TemplateStore
- type TypedEvent
- type URLAccResolver
- func (*URLAccResolver) Close()
- func (ur *URLAccResolver) Fetch(name string) (string, error)
- func (*URLAccResolver) IsReadOnly() bool
- func (*URLAccResolver) IsTrackingUpdate() bool
- func (*URLAccResolver) Reload() error
- func (*URLAccResolver) Start(*Server) error
- func (*URLAccResolver) Store(_, _ string) error
- type User
- type UserInfo
- type Varz
- type VarzEventOptions
- type VarzOptions
- type WAL
- type WebsocketOpts
- type WebsocketOptsVarz
Constants ¶
const ( AuthCalloutSubject = "$SYS.REQ.USER.AUTH" AuthRequestSubject = "nats-authorization-request" AuthRequestXKeyHeader = "Nats-Server-Xkey" )
const ( // CLIENT is an end user. CLIENT = iota // ROUTER represents another server in the cluster. ROUTER // GATEWAY is a link between 2 clusters. GATEWAY // SYSTEM is an internal system client. SYSTEM // LEAF is for leaf node connections. LEAF // JETSTREAM is an internal jetstream client. JETSTREAM // ACCOUNT is for the internal client for accounts. ACCOUNT )
Type of client connection.
const ( // If the connection is not a CLIENT connection. NON_CLIENT = iota // Regular NATS client. NATS // MQTT client. MQTT // Websocket client. WS )
Extended type of a CLIENT connection. This is returned by c.clientType() and indicate what type of client connection we are dealing with. If invoked on a non CLIENT connection, NON_CLIENT type is returned.
const ( // ClientProtoZero is the original Client protocol from 2009. // http://nats.io/documentation/internals/nats-protocol/ ClientProtoZero = iota // ClientProtoInfo signals a client can receive more then the original INFO block. // This can be used to update clients on other cluster members, etc. ClientProtoInfo )
const ( ClientClosed = ClosedState(iota + 1) AuthenticationTimeout AuthenticationViolation TLSHandshakeError SlowConsumerPendingBytes SlowConsumerWriteDeadline WriteError ReadError ParseError StaleConnection ProtocolViolation BadClientProtocolVersion WrongPort MaxAccountConnectionsExceeded MaxConnectionsExceeded MaxPayloadExceeded MaxControlLineExceeded MaxSubscriptionsExceeded DuplicateRoute RouteRemoved ServerShutdown AuthenticationExpired WrongGateway MissingAccount Revocation InternalClient MsgHeaderViolation NoRespondersRequiresHeaders ClusterNameConflict DuplicateRemoteLeafnodeConnection DuplicateClientID DuplicateServerName MinimumVersionRequired ClusterNamesIdentical Kicked )
const ( CommandStop = Command("stop") CommandQuit = Command("quit") CommandReopen = Command("reopen") CommandReload = Command("reload") )
Valid Command values.
const ( // VERSION is the current version for the server. VERSION = "2.11.0-pmesh" // PROTO is the currently supported protocol. // 0 was the original // 1 maintains proto 0, adds echo abilities for CONNECT from the client. Clients // should not send echo unless proto in INFO is >= 1. PROTO = 1 // DEFAULT_PORT is the default port for client connections. DEFAULT_PORT = 4222 // RANDOM_PORT is the value for port that, when supplied, will cause the // server to listen on a randomly-chosen available port. The resolved port // is available via the Addr() method. RANDOM_PORT = -1 // DEFAULT_HOST defaults to all interfaces. DEFAULT_HOST = "0.0.0.0" // MAX_CONTROL_LINE_SIZE is the maximum allowed protocol control line size. // 4k should be plenty since payloads sans connect/info string are separate. MAX_CONTROL_LINE_SIZE = 4096 // MAX_PAYLOAD_SIZE is the maximum allowed payload size. Should be using // something different if > 1MB payloads are needed. MAX_PAYLOAD_SIZE = (1024 * 1024) // MAX_PAYLOAD_MAX_SIZE is the size at which the server will warn about // max_payload being too high. In the future, the server may enforce/reject // max_payload above this value. MAX_PAYLOAD_MAX_SIZE = (8 * 1024 * 1024) // MAX_PENDING_SIZE is the maximum outbound pending bytes per client. MAX_PENDING_SIZE = (64 * 1024 * 1024) // DEFAULT_MAX_CONNECTIONS is the default maximum connections allowed. DEFAULT_MAX_CONNECTIONS = (64 * 1024) // TLS_TIMEOUT is the TLS wait time. TLS_TIMEOUT = 2 * time.Second // DEFAULT_TLS_HANDSHAKE_FIRST_FALLBACK_DELAY is the default amount of // time for the server to wait for the TLS handshake with a client to // be initiated before falling back to sending the INFO protocol first. // See TLSHandshakeFirst and TLSHandshakeFirstFallback options. DEFAULT_TLS_HANDSHAKE_FIRST_FALLBACK_DELAY = 50 * time.Millisecond // AUTH_TIMEOUT is the authorization wait time. AUTH_TIMEOUT = 2 * time.Second // DEFAULT_PING_INTERVAL is how often pings are sent to clients, etc... DEFAULT_PING_INTERVAL = 2 * time.Minute // DEFAULT_PING_MAX_OUT is maximum allowed pings outstanding before disconnect. DEFAULT_PING_MAX_OUT = 2 // CR_LF string CR_LF = "\r\n" // LEN_CR_LF hold onto the computed size. LEN_CR_LF = len(CR_LF) // DEFAULT_FLUSH_DEADLINE is the write/flush deadlines. DEFAULT_FLUSH_DEADLINE = 10 * time.Second // DEFAULT_HTTP_PORT is the default monitoring port. DEFAULT_HTTP_PORT = 8222 // DEFAULT_HTTP_BASE_PATH is the default base path for monitoring. DEFAULT_HTTP_BASE_PATH = "/" // ACCEPT_MIN_SLEEP is the minimum acceptable sleep times on temporary errors. ACCEPT_MIN_SLEEP = 10 * time.Millisecond // ACCEPT_MAX_SLEEP is the maximum acceptable sleep times on temporary errors ACCEPT_MAX_SLEEP = 1 * time.Second // DEFAULT_ROUTE_CONNECT Route solicitation intervals. DEFAULT_ROUTE_CONNECT = 1 * time.Second // DEFAULT_ROUTE_RECONNECT Route reconnect intervals. DEFAULT_ROUTE_RECONNECT = 1 * time.Second // DEFAULT_ROUTE_DIAL Route dial timeout. DEFAULT_ROUTE_DIAL = 1 * time.Second // DEFAULT_ROUTE_POOL_SIZE Route default pool size DEFAULT_ROUTE_POOL_SIZE = 3 // DEFAULT_LEAF_NODE_RECONNECT LeafNode reconnect interval. DEFAULT_LEAF_NODE_RECONNECT = time.Second // DEFAULT_LEAF_TLS_TIMEOUT TLS timeout for LeafNodes DEFAULT_LEAF_TLS_TIMEOUT = 2 * time.Second // PROTO_SNIPPET_SIZE is the default size of proto to print on parse errors. PROTO_SNIPPET_SIZE = 32 // MAX_CONTROL_LINE_SNIPPET_SIZE is the default size of proto to print on max control line errors. MAX_CONTROL_LINE_SNIPPET_SIZE = 128 // MAX_MSG_ARGS Maximum possible number of arguments from MSG proto. MAX_MSG_ARGS = 4 // MAX_RMSG_ARGS Maximum possible number of arguments from RMSG proto. MAX_RMSG_ARGS = 6 // MAX_HMSG_ARGS Maximum possible number of arguments from HMSG proto. MAX_HMSG_ARGS = 7 // MAX_PUB_ARGS Maximum possible number of arguments from PUB proto. MAX_PUB_ARGS = 3 // MAX_HPUB_ARGS Maximum possible number of arguments from HPUB proto. MAX_HPUB_ARGS = 4 // DEFAULT_MAX_CLOSED_CLIENTS is the maximum number of closed connections we hold onto. DEFAULT_MAX_CLOSED_CLIENTS = 10000 // DEFAULT_LAME_DUCK_DURATION is the time in which the server spreads // the closing of clients when signaled to go in lame duck mode. DEFAULT_LAME_DUCK_DURATION = 2 * time.Minute // DEFAULT_LAME_DUCK_GRACE_PERIOD is the duration the server waits, after entering // lame duck mode, before starting closing client connections. DEFAULT_LAME_DUCK_GRACE_PERIOD = 10 * time.Second // DEFAULT_LEAFNODE_INFO_WAIT Route dial timeout. DEFAULT_LEAFNODE_INFO_WAIT = 1 * time.Second // DEFAULT_LEAFNODE_PORT is the default port for remote leafnode connections. DEFAULT_LEAFNODE_PORT = 7422 // DEFAULT_CONNECT_ERROR_REPORTS is the number of attempts at which a // repeated failed route, gateway or leaf node connection is reported. // This is used for initial connection, that is, when the server has // never had a connection to the given endpoint. Once connected, and // if a disconnect occurs, DEFAULT_RECONNECT_ERROR_REPORTS is used // instead. // The default is to report every 3600 attempts (roughly every hour). DEFAULT_CONNECT_ERROR_REPORTS = 3600 // DEFAULT_RECONNECT_ERROR_REPORTS is the default number of failed // attempt to reconnect a route, gateway or leaf node connection. // The default is to report every attempt. DEFAULT_RECONNECT_ERROR_REPORTS = 1 // DEFAULT_RTT_MEASUREMENT_INTERVAL is how often we want to measure RTT from // this server to clients, routes, gateways or leafnode connections. DEFAULT_RTT_MEASUREMENT_INTERVAL = time.Hour // DEFAULT_ALLOW_RESPONSE_MAX_MSGS is the default number of responses allowed // for a reply subject. DEFAULT_ALLOW_RESPONSE_MAX_MSGS = 1 // DEFAULT_ALLOW_RESPONSE_EXPIRATION is the default time allowed for a given // dynamic response permission. DEFAULT_ALLOW_RESPONSE_EXPIRATION = 2 * time.Minute // DEFAULT_SERVICE_EXPORT_RESPONSE_THRESHOLD is the default time that the system will // expect a service export response to be delivered. This is used in corner cases for // time based cleanup of reverse mapping structures. DEFAULT_SERVICE_EXPORT_RESPONSE_THRESHOLD = 2 * time.Minute // DEFAULT_SERVICE_LATENCY_SAMPLING is the default sampling rate for service // latency metrics DEFAULT_SERVICE_LATENCY_SAMPLING = 100 // DEFAULT_SYSTEM_ACCOUNT DEFAULT_SYSTEM_ACCOUNT = "$SYS" // DEFAULT GLOBAL_ACCOUNT DEFAULT_GLOBAL_ACCOUNT = "$G" // DEFAULT_FETCH_TIMEOUT is the default time that the system will wait for an account fetch to return. DEFAULT_ACCOUNT_FETCH_TIMEOUT = 1900 * time.Millisecond )
const ( JSPullRequestPendingMsgs = "Nats-Pending-Messages" JSPullRequestPendingBytes = "Nats-Pending-Bytes" )
Headers sent with Request Timeout
const ( // JsAckWaitDefault is the default AckWait, only applicable on explicit ack policy consumers. JsAckWaitDefault = 30 * time.Second // JsDeleteWaitTimeDefault is the default amount of time we will wait for non-durable // consumers to be in an inactive state before deleting them. JsDeleteWaitTimeDefault = 5 * time.Second // JsFlowControlMaxPending specifies default pending bytes during flow control that can be // outstanding. JsFlowControlMaxPending = 32 * 1024 * 1024 // JsDefaultMaxAckPending is set for consumers with explicit ack that do not set the max ack pending. JsDefaultMaxAckPending = 1000 )
const ( NoDelete deleteType = iota RenameDeleted HardDelete )
const ( // Metafiles for streams and consumers. JetStreamMetaFile = "meta.inf" JetStreamMetaFileSum = "meta.sum" JetStreamMetaFileKey = "meta.key" // FileStoreMinBlkSize is minimum size we will do for a blk size. FileStoreMinBlkSize = 32 * 1000 // 32kib // FileStoreMaxBlkSize is maximum size we will do for a blk size. FileStoreMaxBlkSize = maxBlockSize )
const ( // JetStreamStoreDir is the prefix we use. JetStreamStoreDir = "jetstream" // JetStreamMaxStoreDefault is the default disk storage limit. 1TB JetStreamMaxStoreDefault = 1024 * 1024 * 1024 * 1024 // JetStreamMaxMemDefault is only used when we can't determine system memory. 256MB JetStreamMaxMemDefault = 1024 * 1024 * 256 )
const ( JSApiPrefix = "$JS.API" // JSApiAccountInfo is for obtaining general information about JetStream for this account. // Will return JSON response. JSApiAccountInfo = "$JS.API.INFO" // JSApiTemplateCreate is the endpoint to create new stream templates. // Will return JSON response. JSApiTemplateCreate = "$JS.API.STREAM.TEMPLATE.CREATE.*" JSApiTemplateCreateT = "$JS.API.STREAM.TEMPLATE.CREATE.%s" // JSApiTemplates is the endpoint to list all stream template names for this account. // Will return JSON response. JSApiTemplates = "$JS.API.STREAM.TEMPLATE.NAMES" // JSApiTemplateInfo is for obtaining general information about a named stream template. // Will return JSON response. JSApiTemplateInfo = "$JS.API.STREAM.TEMPLATE.INFO.*" JSApiTemplateInfoT = "$JS.API.STREAM.TEMPLATE.INFO.%s" // JSApiTemplateDelete is the endpoint to delete stream templates. // Will return JSON response. JSApiTemplateDelete = "$JS.API.STREAM.TEMPLATE.DELETE.*" JSApiTemplateDeleteT = "$JS.API.STREAM.TEMPLATE.DELETE.%s" // JSApiStreamCreate is the endpoint to create new streams. // Will return JSON response. JSApiStreamCreate = "$JS.API.STREAM.CREATE.*" JSApiStreamCreateT = "$JS.API.STREAM.CREATE.%s" // JSApiStreamUpdate is the endpoint to update existing streams. // Will return JSON response. JSApiStreamUpdate = "$JS.API.STREAM.UPDATE.*" JSApiStreamUpdateT = "$JS.API.STREAM.UPDATE.%s" // JSApiStreams is the endpoint to list all stream names for this account. // Will return JSON response. JSApiStreams = "$JS.API.STREAM.NAMES" // JSApiStreamList is the endpoint that will return all detailed stream information JSApiStreamList = "$JS.API.STREAM.LIST" // JSApiStreamInfo is for obtaining general information about a named stream. // Will return JSON response. JSApiStreamInfo = "$JS.API.STREAM.INFO.*" JSApiStreamInfoT = "$JS.API.STREAM.INFO.%s" // JSApiStreamDelete is the endpoint to delete streams. // Will return JSON response. JSApiStreamDelete = "$JS.API.STREAM.DELETE.*" JSApiStreamDeleteT = "$JS.API.STREAM.DELETE.%s" // JSApiStreamPurge is the endpoint to purge streams. // Will return JSON response. JSApiStreamPurge = "$JS.API.STREAM.PURGE.*" JSApiStreamPurgeT = "$JS.API.STREAM.PURGE.%s" // JSApiStreamSnapshot is the endpoint to snapshot streams. // Will return a stream of chunks with a nil chunk as EOF to // the deliver subject. Caller should respond to each chunk // with a nil body response for ack flow. JSApiStreamSnapshot = "$JS.API.STREAM.SNAPSHOT.*" JSApiStreamSnapshotT = "$JS.API.STREAM.SNAPSHOT.%s" // JSApiStreamRestore is the endpoint to restore a stream from a snapshot. // Caller should respond to each chunk with a nil body response. JSApiStreamRestore = "$JS.API.STREAM.RESTORE.*" JSApiStreamRestoreT = "$JS.API.STREAM.RESTORE.%s" // JSApiMsgDelete is the endpoint to delete messages from a stream. // Will return JSON response. JSApiMsgDelete = "$JS.API.STREAM.MSG.DELETE.*" JSApiMsgDeleteT = "$JS.API.STREAM.MSG.DELETE.%s" // JSApiMsgGet is the template for direct requests for a message by its stream sequence number. // Will return JSON response. JSApiMsgGet = "$JS.API.STREAM.MSG.GET.*" JSApiMsgGetT = "$JS.API.STREAM.MSG.GET.%s" // JSDirectMsgGet is the template for non-api layer direct requests for a message by its stream sequence number or last by subject. // Will return the message similar to how a consumer receives the message, no JSON processing. // If the message can not be found we will use a status header of 404. If the stream does not exist the client will get a no-responders or timeout. JSDirectMsgGet = "$JS.API.DIRECT.GET.*" JSDirectMsgGetT = "$JS.API.DIRECT.GET.%s" // This is a direct version of get last by subject, which will be the dominant pattern for KV access once 2.9 is released. // The stream and the key will be part of the subject to allow for no-marshal payloads and subject based security permissions. JSDirectGetLastBySubject = "$JS.API.DIRECT.GET.*.>" JSDirectGetLastBySubjectT = "$JS.API.DIRECT.GET.%s.%s" // JSApiConsumerCreate is the endpoint to create consumers for streams. // This was also the legacy endpoint for ephemeral consumers. // It now can take consumer name and optional filter subject, which when part of the subject controls access. // Will return JSON response. JSApiConsumerCreate = "$JS.API.CONSUMER.CREATE.*" JSApiConsumerCreateT = "$JS.API.CONSUMER.CREATE.%s" JSApiConsumerCreateEx = "$JS.API.CONSUMER.CREATE.*.>" JSApiConsumerCreateExT = "$JS.API.CONSUMER.CREATE.%s.%s.%s" // JSApiDurableCreate is the endpoint to create durable consumers for streams. // You need to include the stream and consumer name in the subject. JSApiDurableCreate = "$JS.API.CONSUMER.DURABLE.CREATE.*.*" JSApiDurableCreateT = "$JS.API.CONSUMER.DURABLE.CREATE.%s.%s" // JSApiConsumers is the endpoint to list all consumer names for the stream. // Will return JSON response. JSApiConsumers = "$JS.API.CONSUMER.NAMES.*" JSApiConsumersT = "$JS.API.CONSUMER.NAMES.%s" // JSApiConsumerList is the endpoint that will return all detailed consumer information JSApiConsumerList = "$JS.API.CONSUMER.LIST.*" JSApiConsumerListT = "$JS.API.CONSUMER.LIST.%s" // JSApiConsumerInfo is for obtaining general information about a consumer. // Will return JSON response. JSApiConsumerInfo = "$JS.API.CONSUMER.INFO.*.*" JSApiConsumerInfoT = "$JS.API.CONSUMER.INFO.%s.%s" // JSApiConsumerDelete is the endpoint to delete consumers. // Will return JSON response. JSApiConsumerDelete = "$JS.API.CONSUMER.DELETE.*.*" JSApiConsumerDeleteT = "$JS.API.CONSUMER.DELETE.%s.%s" // JSApiConsumerPause is the endpoint to pause or unpause consumers. // Will return JSON response. JSApiConsumerPause = "$JS.API.CONSUMER.PAUSE.*.*" JSApiConsumerPauseT = "$JS.API.CONSUMER.PAUSE.%s.%s" // JSApiRequestNextT is the prefix for the request next message(s) for a consumer in worker/pull mode. JSApiRequestNextT = "$JS.API.CONSUMER.MSG.NEXT.%s.%s" // JSApiStreamRemovePeer is the endpoint to remove a peer from a clustered stream and its consumers. // Will return JSON response. JSApiStreamRemovePeer = "$JS.API.STREAM.PEER.REMOVE.*" JSApiStreamRemovePeerT = "$JS.API.STREAM.PEER.REMOVE.%s" // JSApiStreamLeaderStepDown is the endpoint to have stream leader stepdown. // Will return JSON response. JSApiStreamLeaderStepDown = "$JS.API.STREAM.LEADER.STEPDOWN.*" JSApiStreamLeaderStepDownT = "$JS.API.STREAM.LEADER.STEPDOWN.%s" // JSApiConsumerLeaderStepDown is the endpoint to have consumer leader stepdown. // Will return JSON response. JSApiConsumerLeaderStepDown = "$JS.API.CONSUMER.LEADER.STEPDOWN.*.*" JSApiConsumerLeaderStepDownT = "$JS.API.CONSUMER.LEADER.STEPDOWN.%s.%s" // JSApiLeaderStepDown is the endpoint to have our metaleader stepdown. // Only works from system account. // Will return JSON response. JSApiLeaderStepDown = "$JS.API.META.LEADER.STEPDOWN" // JSApiRemoveServer is the endpoint to remove a peer server from the cluster. // Only works from system account. // Will return JSON response. JSApiRemoveServer = "$JS.API.SERVER.REMOVE" // JSApiAccountPurge is the endpoint to purge the js content of an account // Only works from system account. // Will return JSON response. JSApiAccountPurge = "$JS.API.ACCOUNT.PURGE.*" JSApiAccountPurgeT = "$JS.API.ACCOUNT.PURGE.%s" // JSApiServerStreamMove is the endpoint to move streams off a server // Only works from system account. // Will return JSON response. JSApiServerStreamMove = "$JS.API.ACCOUNT.STREAM.MOVE.*.*" JSApiServerStreamMoveT = "$JS.API.ACCOUNT.STREAM.MOVE.%s.%s" // JSApiServerStreamCancelMove is the endpoint to cancel a stream move // Only works from system account. // Will return JSON response. JSApiServerStreamCancelMove = "$JS.API.ACCOUNT.STREAM.CANCEL_MOVE.*.*" JSApiServerStreamCancelMoveT = "$JS.API.ACCOUNT.STREAM.CANCEL_MOVE.%s.%s" // JSAdvisoryPrefix is a prefix for all JetStream advisories. JSAdvisoryPrefix = "$JS.EVENT.ADVISORY" // JSMetricPrefix is a prefix for all JetStream metrics. JSMetricPrefix = "$JS.EVENT.METRIC" // JSMetricConsumerAckPre is a metric containing ack latency. JSMetricConsumerAckPre = "$JS.EVENT.METRIC.CONSUMER.ACK" // JSAdvisoryConsumerMaxDeliveryExceedPre is a notification published when a message exceeds its delivery threshold. JSAdvisoryConsumerMaxDeliveryExceedPre = "$JS.EVENT.ADVISORY.CONSUMER.MAX_DELIVERIES" // JSAdvisoryConsumerMsgNakPre is a notification published when a message has been naked JSAdvisoryConsumerMsgNakPre = "$JS.EVENT.ADVISORY.CONSUMER.MSG_NAKED" // JSAdvisoryConsumerMsgTerminatedPre is a notification published when a message has been terminated. JSAdvisoryConsumerMsgTerminatedPre = "$JS.EVENT.ADVISORY.CONSUMER.MSG_TERMINATED" // JSAdvisoryStreamCreatedPre notification that a stream was created. JSAdvisoryStreamCreatedPre = "$JS.EVENT.ADVISORY.STREAM.CREATED" // JSAdvisoryStreamDeletedPre notification that a stream was deleted. JSAdvisoryStreamDeletedPre = "$JS.EVENT.ADVISORY.STREAM.DELETED" // JSAdvisoryStreamUpdatedPre notification that a stream was updated. JSAdvisoryStreamUpdatedPre = "$JS.EVENT.ADVISORY.STREAM.UPDATED" // JSAdvisoryConsumerCreatedPre notification that a template created. JSAdvisoryConsumerCreatedPre = "$JS.EVENT.ADVISORY.CONSUMER.CREATED" // JSAdvisoryConsumerDeletedPre notification that a template deleted. JSAdvisoryConsumerDeletedPre = "$JS.EVENT.ADVISORY.CONSUMER.DELETED" // JSAdvisoryConsumerPausePre notification that a consumer paused/unpaused. JSAdvisoryConsumerPausePre = "$JS.EVENT.ADVISORY.CONSUMER.PAUSE" // JSAdvisoryStreamSnapshotCreatePre notification that a snapshot was created. JSAdvisoryStreamSnapshotCreatePre = "$JS.EVENT.ADVISORY.STREAM.SNAPSHOT_CREATE" // JSAdvisoryStreamSnapshotCompletePre notification that a snapshot was completed. JSAdvisoryStreamSnapshotCompletePre = "$JS.EVENT.ADVISORY.STREAM.SNAPSHOT_COMPLETE" // JSAdvisoryStreamRestoreCreatePre notification that a restore was start. JSAdvisoryStreamRestoreCreatePre = "$JS.EVENT.ADVISORY.STREAM.RESTORE_CREATE" // JSAdvisoryStreamRestoreCompletePre notification that a restore was completed. JSAdvisoryStreamRestoreCompletePre = "$JS.EVENT.ADVISORY.STREAM.RESTORE_COMPLETE" // JSAdvisoryDomainLeaderElectedPre notification that a jetstream domain has elected a leader. JSAdvisoryDomainLeaderElected = "$JS.EVENT.ADVISORY.DOMAIN.LEADER_ELECTED" // JSAdvisoryStreamLeaderElectedPre notification that a replicated stream has elected a leader. JSAdvisoryStreamLeaderElectedPre = "$JS.EVENT.ADVISORY.STREAM.LEADER_ELECTED" // JSAdvisoryStreamQuorumLostPre notification that a stream and its consumers are stalled. JSAdvisoryStreamQuorumLostPre = "$JS.EVENT.ADVISORY.STREAM.QUORUM_LOST" // JSAdvisoryConsumerLeaderElectedPre notification that a replicated consumer has elected a leader. JSAdvisoryConsumerLeaderElectedPre = "$JS.EVENT.ADVISORY.CONSUMER.LEADER_ELECTED" // JSAdvisoryConsumerQuorumLostPre notification that a consumer is stalled. JSAdvisoryConsumerQuorumLostPre = "$JS.EVENT.ADVISORY.CONSUMER.QUORUM_LOST" // JSAdvisoryServerOutOfStorage notification that a server has no more storage. JSAdvisoryServerOutOfStorage = "$JS.EVENT.ADVISORY.SERVER.OUT_OF_STORAGE" // JSAdvisoryServerRemoved notification that a server has been removed from the system. JSAdvisoryServerRemoved = "$JS.EVENT.ADVISORY.SERVER.REMOVED" // JSAuditAdvisory is a notification about JetStream API access. // FIXME - Add in details about who.. JSAuditAdvisory = "$JS.EVENT.ADVISORY.API" )
Request API subjects for JetStream.
const ( // ConnOpen filters on open clients. ConnOpen = ConnState(iota) // ConnClosed filters on closed clients. ConnClosed // ConnAll returns all clients. ConnAll )
const ( MsgTraceDest = "Nats-Trace-Dest" MsgTraceHop = "Nats-Trace-Hop" MsgTraceOriginAccount = "Nats-Trace-Origin-Account" MsgTraceOnly = "Nats-Trace-Only" )
const ( MsgTraceIngressType = "in" MsgTraceSubjectMappingType = "sm" MsgTraceStreamExportType = "se" MsgTraceServiceImportType = "si" MsgTraceJetStreamType = "js" MsgTraceEgressType = "eg" )
Type of message trace events in the MsgTraceEvents list. This is needed to unmarshal the list.
const ( OCSPResponseCacheDefaultDir = "_rc_" OCSPResponseCacheDefaultFilename = "cache.json" OCSPResponseCacheDefaultTempFilePrefix = "ocsprc-*" OCSPResponseCacheMinimumSaveInterval = 1 * time.Second OCSPResponseCacheDefaultSaveInterval = 5 * time.Minute )
const ( OP_START parserState = iota OP_PLUS OP_PLUS_O OP_PLUS_OK OP_MINUS OP_MINUS_E OP_MINUS_ER OP_MINUS_ERR OP_MINUS_ERR_SPC MINUS_ERR_ARG OP_C OP_CO OP_CON OP_CONN OP_CONNE OP_CONNEC OP_CONNECT CONNECT_ARG OP_H OP_HP OP_HPU OP_HPUB OP_HPUB_SPC HPUB_ARG OP_HM OP_HMS OP_HMSG OP_HMSG_SPC HMSG_ARG OP_P OP_PU OP_PUB OP_PUB_SPC PUB_ARG OP_PI OP_PIN OP_PING OP_PO OP_PON OP_PONG MSG_PAYLOAD MSG_END_R MSG_END_N OP_S OP_SU OP_SUB OP_SUB_SPC SUB_ARG OP_A OP_ASUB OP_ASUB_SPC ASUB_ARG OP_AUSUB OP_AUSUB_SPC AUSUB_ARG OP_L OP_LS OP_R OP_RS OP_U OP_UN OP_UNS OP_UNSU OP_UNSUB OP_UNSUB_SPC UNSUB_ARG OP_M OP_MS OP_MSG OP_MSG_SPC MSG_ARG OP_I OP_IN OP_INF OP_INFO INFO_ARG )
Parser constants
const ( ConProto = "CONNECT %s" + _CRLF_ InfoProto = "INFO %s" + _CRLF_ )
Route protocol constants
const ( // RouteProtoZero is the original Route protocol from 2009. // http://nats.io/documentation/internals/nats-protocol/ RouteProtoZero = iota // RouteProtoInfo signals a route can receive more then the original INFO block. // This can be used to update remote cluster permissions, etc... RouteProtoInfo // RouteProtoV2 is the new route/cluster protocol that provides account support. RouteProtoV2 // MsgTraceProto indicates that this server understands distributed message tracing. MsgTraceProto )
These are protocol versions sent between server connections: ROUTER, LEAF and GATEWAY. We may have protocol versions that have a meaning only for a certain type of connections, but we don't have to have separate enums for that. However, it is CRITICAL to not change the order of those constants since they are exchanged between servers. When adding a new protocol version, add to the end of the list, don't try to group them by connection types.
const ( CompressionNotSupported = "not supported" CompressionOff = "off" CompressionAccept = "accept" CompressionS2Auto = "s2_auto" CompressionS2Uncompressed = "s2_uncompressed" CompressionS2Fast = "s2_fast" CompressionS2Better = "s2_better" CompressionS2Best = "s2_best" )
Compression modes.
const ( RootPath = "/" VarzPath = "/varz" ConnzPath = "/connz" RoutezPath = "/routez" GatewayzPath = "/gatewayz" LeafzPath = "/leafz" SubszPath = "/subsz" StackszPath = "/stacksz" AccountzPath = "/accountz" AccountStatzPath = "/accstatz" JszPath = "/jsz" HealthzPath = "/healthz" IPQueuesPath = "/ipqueuesz" )
HTTP endpoints
const ( // File specifies on disk, designated by the JetStream config StoreDir. FileStorage = StorageType(22) // MemoryStorage specifies in memory only. MemoryStorage = StorageType(33) // Any is for internals. AnyStorage = StorageType(44) )
const ( // DiscardOld will remove older messages to return to the limits. DiscardOld = iota // DiscardNew will error on a StoreMsg call DiscardNew )
const ( JSMsgId = "Nats-Msg-Id" JSExpectedStream = "Nats-Expected-Stream" JSExpectedLastSeq = "Nats-Expected-Last-Sequence" JSExpectedLastSubjSeq = "Nats-Expected-Last-Subject-Sequence" JSExpectedLastMsgId = "Nats-Expected-Last-Msg-Id" JSStreamSource = "Nats-Stream-Source" JSLastConsumerSeq = "Nats-Last-Consumer" JSLastStreamSeq = "Nats-Last-Stream" JSConsumerStalled = "Nats-Consumer-Stalled" JSMsgRollup = "Nats-Rollup" JSMsgSize = "Nats-Msg-Size" JSResponseType = "Nats-Response-Type" )
Headers for published messages.
const ( JSStream = "Nats-Stream" JSSequence = "Nats-Sequence" JSTimeStamp = "Nats-Time-Stamp" JSSubject = "Nats-Subject" JSLastSequence = "Nats-Last-Sequence" JSNumPending = "Nats-Num-Pending" JSUpToSequence = "Nats-UpTo-Sequence" )
Headers for republished messages and direct gets.
const ( JSMsgRollupSubject = "sub" JSMsgRollupAll = "all" )
Rollups, can be subject only or all messages.
const ( NoTransform int16 = iota BadTransform Partition Wildcard SplitFromLeft SplitFromRight SliceFromLeft SliceFromRight Split )
Enum for the subject mapping subjectTransform function types
const AccountNumConnsMsgType = "io.nats.server.advisory.v1.account_connections"
const ClientInfoHdr = "Nats-Request-Info"
const ConnectEventMsgType = "io.nats.server.advisory.v1.client_connect"
ConnectEventMsgType is the schema type for ConnectEventMsg
const DefaultConnListSize = 1024
DefaultConnListSize is the default size of the connection list.
const DefaultSubListSize = 1024
DefaultSubListSize is the default size of the subscriptions list.
const DisconnectEventMsgType = "io.nats.server.advisory.v1.client_disconnect"
DisconnectEventMsgType is the schema type for DisconnectEventMsg
const (
InboxPrefix = "$SYS._INBOX."
)
Copied from go client. We could use serviceReply here instead to save some code. I prefer these semantics for the moment, when tracing you know what this is.
const JSAPIAuditType = "io.nats.jetstream.advisory.v1.api_audit"
const JSApiAccountInfoResponseType = "io.nats.jetstream.api.v1.account_info_response"
const JSApiAccountPurgeResponseType = "io.nats.jetstream.api.v1.account_purge_response"
const JSApiConsumerCreateResponseType = "io.nats.jetstream.api.v1.consumer_create_response"
const JSApiConsumerDeleteResponseType = "io.nats.jetstream.api.v1.consumer_delete_response"
const JSApiConsumerInfoResponseType = "io.nats.jetstream.api.v1.consumer_info_response"
const JSApiConsumerLeaderStepDownResponseType = "io.nats.jetstream.api.v1.consumer_leader_stepdown_response"
const JSApiConsumerListResponseType = "io.nats.jetstream.api.v1.consumer_list_response"
const JSApiConsumerNamesResponseType = "io.nats.jetstream.api.v1.consumer_names_response"
const JSApiConsumerPauseResponseType = "io.nats.jetstream.api.v1.consumer_pause_response"
const JSApiLeaderStepDownResponseType = "io.nats.jetstream.api.v1.meta_leader_stepdown_response"
const JSApiListLimit = 256
const JSApiMetaServerRemoveResponseType = "io.nats.jetstream.api.v1.meta_server_remove_response"
const JSApiMsgDeleteResponseType = "io.nats.jetstream.api.v1.stream_msg_delete_response"
const JSApiMsgGetResponseType = "io.nats.jetstream.api.v1.stream_msg_get_response"
const JSApiNamesLimit = 1024
JSApiNamesLimit is the maximum entries we will return for streams or consumers lists. TODO(dlc) - with header or request support could request chunked response.
const JSApiOverloadedType = "io.nats.jetstream.api.v1.system_overloaded"
const JSApiStreamCreateResponseType = "io.nats.jetstream.api.v1.stream_create_response"
const JSApiStreamDeleteResponseType = "io.nats.jetstream.api.v1.stream_delete_response"
const JSApiStreamInfoResponseType = "io.nats.jetstream.api.v1.stream_info_response"
const JSApiStreamLeaderStepDownResponseType = "io.nats.jetstream.api.v1.stream_leader_stepdown_response"
const JSApiStreamListResponseType = "io.nats.jetstream.api.v1.stream_list_response"
const JSApiStreamNamesResponseType = "io.nats.jetstream.api.v1.stream_names_response"
const JSApiStreamPurgeResponseType = "io.nats.jetstream.api.v1.stream_purge_response"
const JSApiStreamRemovePeerResponseType = "io.nats.jetstream.api.v1.stream_remove_peer_response"
const JSApiStreamRestoreResponseType = "io.nats.jetstream.api.v1.stream_restore_response"
const JSApiStreamSnapshotResponseType = "io.nats.jetstream.api.v1.stream_snapshot_response"
const JSApiStreamTemplateCreateResponseType = "io.nats.jetstream.api.v1.stream_template_create_response"
const JSApiStreamTemplateDeleteResponseType = "io.nats.jetstream.api.v1.stream_template_delete_response"
const JSApiStreamTemplateInfoResponseType = "io.nats.jetstream.api.v1.stream_template_info_response"
const JSApiStreamTemplateNamesResponseType = "io.nats.jetstream.api.v1.stream_template_names_response"
const JSApiStreamUpdateResponseType = "io.nats.jetstream.api.v1.stream_update_response"
const JSApiSystemResponseType = "io.nats.jetstream.api.v1.system_response"
const JSConsumerAckMetricType = "io.nats.jetstream.metric.v1.consumer_ack"
JSConsumerAckMetricType is the schema type for JSConsumerAckMetricType
const JSConsumerActionAdvisoryType = "io.nats.jetstream.advisory.v1.consumer_action"
const JSConsumerDeliveryExceededAdvisoryType = "io.nats.jetstream.advisory.v1.max_deliver"
JSConsumerDeliveryExceededAdvisoryType is the schema type for JSConsumerDeliveryExceededAdvisory
const JSConsumerDeliveryNakAdvisoryType = "io.nats.jetstream.advisory.v1.nak"
JSConsumerDeliveryNakAdvisoryType is the schema type for JSConsumerDeliveryNakAdvisory
const JSConsumerDeliveryTerminatedAdvisoryType = "io.nats.jetstream.advisory.v1.terminated"
JSConsumerDeliveryTerminatedAdvisoryType is the schema type for JSConsumerDeliveryTerminatedAdvisory
const JSConsumerLeaderElectedAdvisoryType = "io.nats.jetstream.advisory.v1.consumer_leader_elected"
JSConsumerLeaderElectedAdvisoryType is sent when the system elects a leader for a consumer.
const JSConsumerPauseAdvisoryType = "io.nats.jetstream.advisory.v1.consumer_pause"
const JSConsumerQuorumLostAdvisoryType = "io.nats.jetstream.advisory.v1.consumer_quorum_lost"
JSConsumerQuorumLostAdvisoryType is sent when the system detects a clustered consumer and is stalled and unable to make progress.
const JSDomainLeaderElectedAdvisoryType = "io.nats.jetstream.advisory.v1.domain_leader_elected"
JSClusterLeaderElectedAdvisoryType is sent when the system elects a new meta leader.
const JSMaxDescriptionLen = 4 * 1024
JSMaxDescription is the maximum description length for streams and consumers.
const JSMaxMetadataLen = 128 * 1024
JSMaxMetadataLen is the maximum length for streams and consumers metadata map. It's calculated by summing length of all keys and values.
const JSMaxNameLen = 255
JSMaxNameLen is the maximum name lengths for streams, consumers and templates. Picked 255 as it seems to be a widely used file name limit
const JSMaxSubjectDetails = 100_000
JSMaxSubjectDetails The limit of the number of subject details we will send in a stream info response.
const JSRestoreCompleteAdvisoryType = "io.nats.jetstream.advisory.v1.restore_complete"
JSRestoreCompleteAdvisoryType is the schema type for JSSnapshotCreateAdvisory
const JSRestoreCreateAdvisoryType = "io.nats.jetstream.advisory.v1.restore_create"
JSRestoreCreateAdvisoryType is the schema type for JSSnapshotCreateAdvisory
const JSServerOutOfStorageAdvisoryType = "io.nats.jetstream.advisory.v1.server_out_of_space"
JSServerOutOfStorageAdvisoryType is sent when the server is out of storage space.
const JSServerRemovedAdvisoryType = "io.nats.jetstream.advisory.v1.server_removed"
JSServerRemovedAdvisoryType is sent when the server has been removed and JS disabled.
const JSSnapshotCompleteAdvisoryType = "io.nats.jetstream.advisory.v1.snapshot_complete"
JSSnapshotCompleteAdvisoryType is the schema type for JSSnapshotCreateAdvisory
const JSSnapshotCreatedAdvisoryType = "io.nats.jetstream.advisory.v1.snapshot_create"
JSSnapshotCreatedAdvisoryType is the schema type for JSSnapshotCreateAdvisory
const JSStreamActionAdvisoryType = "io.nats.jetstream.advisory.v1.stream_action"
const JSStreamLeaderElectedAdvisoryType = "io.nats.jetstream.advisory.v1.stream_leader_elected"
JSStreamLeaderElectedAdvisoryType is sent when the system elects a new leader for a stream.
const JSStreamQuorumLostAdvisoryType = "io.nats.jetstream.advisory.v1.stream_quorum_lost"
JSStreamQuorumLostAdvisoryType is sent when the system detects a clustered stream and its consumers are stalled and unable to make progress.
const JSWaitQueueDefaultMax = 512
JSWaitQueueDefaultMax is the default max number of outstanding requests for pull consumers.
const JsPullRequestRemainingBytesT = "NATS/1.0 409 Batch Completed\r\n%s: %d\r\n%s: %d\r\n\r\n"
Headers sent when batch size was completed, but there were remaining bytes.
const MaxAccountCycleSearchDepth = 1024
const OCSPPeerChainlinkInvalidEventMsgType = "io.nats.server.advisory.v1.ocsp_peer_link_invalid"
OCSPPeerChainlinkInvalidEventMsgType is the schema type for OCSPPeerChainlinkInvalidEventMsg
const OCSPPeerRejectEventMsgType = "io.nats.server.advisory.v1.ocsp_peer_reject"
OCSPPeerRejectEventMsgType is the schema type for OCSPPeerRejectEventMsg
const OK = "+OK"
OK
const ServiceLatencyType = "io.nats.server.metric.v1.service_latency"
ServiceLatencyType is the NATS Event Type for ServiceLatency
const StreamDefaultDuplicatesWindow = 2 * time.Minute
StreamDefaultDuplicatesWindow default duplicates window.
const StreamMaxReplicas = 5
Replicas Range
Variables ¶
var ( // Ack AckAck = []byte("+ACK") // nil or no payload to ack subject also means ACK AckOK = []byte(OK) // deprecated but +OK meant ack as well. // Nack AckNak = []byte("-NAK") // Progress indicator AckProgress = []byte("+WPI") // Ack + Deliver the next message(s). AckNext = []byte("+NXT") // Terminate delivery of the message. AckTerm = []byte("+TERM") )
Ack responses. Note that a nil or no payload is same as AckAck
var ( // ErrConnectionClosed represents an error condition on a closed connection. ErrConnectionClosed = errors.New("connection closed") // ErrAuthentication represents an error condition on failed authentication. ErrAuthentication = errors.New("authentication error") // ErrAuthTimeout represents an error condition on failed authorization due to timeout. ErrAuthTimeout = errors.New("authentication timeout") // ErrAuthExpired represents an expired authorization due to timeout. ErrAuthExpired = errors.New("authentication expired") // ErrMaxPayload represents an error condition when the payload is too big. ErrMaxPayload = errors.New("maximum payload exceeded") // ErrMaxControlLine represents an error condition when the control line is too big. ErrMaxControlLine = errors.New("maximum control line exceeded") // ErrReservedPublishSubject represents an error condition when sending to a reserved subject, e.g. _SYS.> ErrReservedPublishSubject = errors.New("reserved internal subject") // ErrBadPublishSubject represents an error condition for an invalid publish subject. ErrBadPublishSubject = errors.New("invalid publish subject") // ErrBadSubject represents an error condition for an invalid subject. ErrBadSubject = errors.New("invalid subject") // ErrBadQualifier is used to error on a bad qualifier for a transform. ErrBadQualifier = errors.New("bad qualifier") // ErrBadClientProtocol signals a client requested an invalid client protocol. ErrBadClientProtocol = errors.New("invalid client protocol") // ErrTooManyConnections signals a client that the maximum number of connections supported by the // server has been reached. ErrTooManyConnections = errors.New("maximum connections exceeded") // ErrTooManyAccountConnections signals that an account has reached its maximum number of active // connections. ErrTooManyAccountConnections = errors.New("maximum account active connections exceeded") // ErrLeafNodeLoop signals a leafnode is trying to register for a cluster we already have registered. ErrLeafNodeLoop = errors.New("leafnode loop detected") // ErrTooManySubs signals a client that the maximum number of subscriptions per connection // has been reached. ErrTooManySubs = errors.New("maximum subscriptions exceeded") // ErrTooManySubTokens signals a client that the subject has too many tokens. ErrTooManySubTokens = errors.New("subject has exceeded number of tokens limit") // ErrClientConnectedToRoutePort represents an error condition when a client // attempted to connect to the route listen port. ErrClientConnectedToRoutePort = errors.New("attempted to connect to route port") // ErrClientConnectedToLeafNodePort represents an error condition when a client // attempted to connect to the leaf node listen port. ErrClientConnectedToLeafNodePort = errors.New("attempted to connect to leaf node port") // ErrLeafNodeHasSameClusterName represents an error condition when a leafnode is a cluster // and it has the same cluster name as the hub cluster. ErrLeafNodeHasSameClusterName = errors.New("remote leafnode has same cluster name") // ErrLeafNodeDisabled is when we disable leafnodes. ErrLeafNodeDisabled = errors.New("leafnodes disabled") // ErrConnectedToWrongPort represents an error condition when a connection is attempted // to the wrong listen port (for instance a LeafNode to a client port, etc...) ErrConnectedToWrongPort = errors.New("attempted to connect to wrong port") // ErrAccountExists is returned when an account is attempted to be registered // but already exists. ErrAccountExists = errors.New("account exists") // ErrBadAccount represents a malformed or incorrect account. ErrBadAccount = errors.New("bad account") // ErrReservedAccount represents a reserved account that can not be created. ErrReservedAccount = errors.New("reserved account") // ErrMissingAccount is returned when an account does not exist. ErrMissingAccount = errors.New("account missing") // ErrMissingService is returned when an account does not have an exported service. ErrMissingService = errors.New("service missing") // ErrBadServiceType is returned when latency tracking is being applied to non-singleton response types. ErrBadServiceType = errors.New("bad service response type") // ErrBadSampling is returned when the sampling for latency tracking is not 1 >= sample <= 100. ErrBadSampling = errors.New("bad sampling percentage, should be 1-100") // ErrAccountValidation is returned when an account has failed validation. ErrAccountValidation = errors.New("account validation failed") // ErrAccountExpired is returned when an account has expired. ErrAccountExpired = errors.New("account expired") // ErrNoAccountResolver is returned when we attempt an update but do not have an account resolver. ErrNoAccountResolver = errors.New("account resolver missing") // ErrAccountResolverUpdateTooSoon is returned when we attempt an update too soon to last request. ErrAccountResolverUpdateTooSoon = errors.New("account resolver update too soon") // ErrAccountResolverSameClaims is returned when same claims have been fetched. ErrAccountResolverSameClaims = errors.New("account resolver no new claims") // ErrStreamImportAuthorization is returned when a stream import is not authorized. ErrStreamImportAuthorization = errors.New("stream import not authorized") // ErrStreamImportBadPrefix is returned when a stream import prefix contains wildcards. ErrStreamImportBadPrefix = errors.New("stream import prefix can not contain wildcard tokens") // ErrStreamImportDuplicate is returned when a stream import is a duplicate of one that already exists. ErrStreamImportDuplicate = errors.New("stream import already exists") // ErrServiceImportAuthorization is returned when a service import is not authorized. ErrServiceImportAuthorization = errors.New("service import not authorized") // ErrImportFormsCycle is returned when an import would form a cycle. ErrImportFormsCycle = errors.New("import forms a cycle") // ErrCycleSearchDepth is returned when we have exceeded our maximum search depth.. ErrCycleSearchDepth = errors.New("search cycle depth exhausted") // ErrClientOrRouteConnectedToGatewayPort represents an error condition when // a client or route attempted to connect to the Gateway port. ErrClientOrRouteConnectedToGatewayPort = errors.New("attempted to connect to gateway port") // ErrWrongGateway represents an error condition when a server receives a connect // request from a remote Gateway with a destination name that does not match the server's // Gateway's name. ErrWrongGateway = errors.New("wrong gateway") // ErrNoSysAccount is returned when an attempt to publish or subscribe is made // when there is no internal system account defined. ErrNoSysAccount = errors.New("system account not setup") // ErrRevocation is returned when a credential has been revoked. ErrRevocation = errors.New("credentials have been revoked") // ErrServerNotRunning is used to signal an error that a server is not running. ErrServerNotRunning = errors.New("server is not running") // ErrBadMsgHeader signals the parser detected a bad message header ErrBadMsgHeader = errors.New("bad message header detected") // ErrMsgHeadersNotSupported signals the parser detected a message header // but they are not supported on this server. ErrMsgHeadersNotSupported = errors.New("message headers not supported") // ErrNoRespondersRequiresHeaders signals that a client needs to have headers // on if they want no responders behavior. ErrNoRespondersRequiresHeaders = errors.New("no responders requires headers support") // ErrClusterNameConfigConflict signals that the options for cluster name in cluster and gateway are in conflict. ErrClusterNameConfigConflict = errors.New("cluster name conflicts between cluster and gateway definitions") // ErrClusterNameRemoteConflict signals that a remote server has a different cluster name. ErrClusterNameRemoteConflict = errors.New("cluster name from remote server conflicts") // ErrMalformedSubject is returned when a subscription is made with a subject that does not conform to subject rules. ErrMalformedSubject = errors.New("malformed subject") // ErrSubscribePermissionViolation is returned when processing of a subscription fails due to permissions. ErrSubscribePermissionViolation = errors.New("subscribe permission violation") // ErrNoTransforms signals no subject transforms are available to map this subject. ErrNoTransforms = errors.New("no matching transforms available") // ErrCertNotPinned is returned when pinned certs are set and the certificate is not in it ErrCertNotPinned = errors.New("certificate not pinned") // ErrDuplicateServerName is returned when processing a server remote connection and // the server reports that this server name is already used in the cluster. ErrDuplicateServerName = errors.New("duplicate server name") // ErrMinimumVersionRequired is returned when a connection is not at the minimum version required. ErrMinimumVersionRequired = errors.New("minimum version required") // ErrInvalidMappingDestination is used for all subject mapping destination errors ErrInvalidMappingDestination = errors.New("invalid mapping destination") // ErrInvalidMappingDestinationSubject is used to error on a bad transform destination mapping ErrInvalidMappingDestinationSubject = fmt.Errorf("%w: invalid subject", ErrInvalidMappingDestination) // ErrMappingDestinationNotUsingAllWildcards is used to error on a transform destination not using all of the token wildcards ErrMappingDestinationNotUsingAllWildcards = fmt.Errorf("%w: not using all of the token wildcard(s)", ErrInvalidMappingDestination) // ErrUnknownMappingDestinationFunction is returned when a subject mapping destination contains an unknown mustache-escaped mapping function. ErrUnknownMappingDestinationFunction = fmt.Errorf("%w: unknown function", ErrInvalidMappingDestination) // ErrMappingDestinationIndexOutOfRange is returned when the mapping destination function is passed an out of range wildcard index value for one of it's arguments ErrMappingDestinationIndexOutOfRange = fmt.Errorf("%w: wildcard index out of range", ErrInvalidMappingDestination) // ErrMappingDestinationNotEnoughArgs is returned when the mapping destination function is not passed enough arguments ErrMappingDestinationNotEnoughArgs = fmt.Errorf("%w: not enough arguments passed to the function", ErrInvalidMappingDestination) // ErrMappingDestinationInvalidArg is returned when the mapping destination function is passed and invalid argument ErrMappingDestinationInvalidArg = fmt.Errorf("%w: function argument is invalid or in the wrong format", ErrInvalidMappingDestination) // ErrMappingDestinationTooManyArgs is returned when the mapping destination function is passed too many arguments ErrMappingDestinationTooManyArgs = fmt.Errorf("%w: too many arguments passed to the function", ErrInvalidMappingDestination) // ErrMappingDestinationNotSupportedForImport is returned when you try to use a mapping function other than wildcard in a transform that needs to be reversible (i.e. an import) ErrMappingDestinationNotSupportedForImport = fmt.Errorf("%w: the only mapping function allowed for import transforms is {{Wildcard()}}", ErrInvalidMappingDestination) )
var ( ApiErrors = map[ErrorIdentifier]*ApiError{}/* 152 elements not displayed */ // ErrJetStreamNotClustered Deprecated by JSClusterNotActiveErr ApiError, use IsNatsError() for comparisons ErrJetStreamNotClustered = ApiErrors[JSClusterNotActiveErr] // ErrJetStreamNotAssigned Deprecated by JSClusterNotAssignedErr ApiError, use IsNatsError() for comparisons ErrJetStreamNotAssigned = ApiErrors[JSClusterNotAssignedErr] // ErrJetStreamNotLeader Deprecated by JSClusterNotLeaderErr ApiError, use IsNatsError() for comparisons ErrJetStreamNotLeader = ApiErrors[JSClusterNotLeaderErr] // ErrJetStreamConsumerAlreadyUsed Deprecated by JSConsumerNameExistErr ApiError, use IsNatsError() for comparisons ErrJetStreamConsumerAlreadyUsed = ApiErrors[JSConsumerNameExistErr] // ErrJetStreamResourcesExceeded Deprecated by JSInsufficientResourcesErr ApiError, use IsNatsError() for comparisons ErrJetStreamResourcesExceeded = ApiErrors[JSInsufficientResourcesErr] // ErrMemoryResourcesExceeded Deprecated by JSMemoryResourcesExceededErr ApiError, use IsNatsError() for comparisons ErrMemoryResourcesExceeded = ApiErrors[JSMemoryResourcesExceededErr] // ErrJetStreamNotEnabled Deprecated by JSNotEnabledErr ApiError, use IsNatsError() for comparisons ErrJetStreamNotEnabled = ApiErrors[JSNotEnabledErr] // ErrStorageResourcesExceeded Deprecated by JSStorageResourcesExceededErr ApiError, use IsNatsError() for comparisons ErrStorageResourcesExceeded = ApiErrors[JSStorageResourcesExceededErr] // ErrJetStreamStreamAlreadyUsed Deprecated by JSStreamNameExistErr ApiError, use IsNatsError() for comparisons ErrJetStreamStreamAlreadyUsed = ApiErrors[JSStreamNameExistErr] // ErrJetStreamStreamNotFound Deprecated by JSStreamNotFoundErr ApiError, use IsNatsError() for comparisons ErrJetStreamStreamNotFound = ApiErrors[JSStreamNotFoundErr] // ErrReplicasNotSupported Deprecated by JSStreamReplicasNotSupportedErr ApiError, use IsNatsError() for comparisons ErrReplicasNotSupported = ApiErrors[JSStreamReplicasNotSupportedErr] )
var ( // ErrStoreClosed is returned when the store has been closed ErrStoreClosed = errors.New("store is closed") // ErrStoreMsgNotFound when message was not found but was expected to be. ErrStoreMsgNotFound = errors.New("no message found") // ErrStoreEOF is returned when message seq is greater than the last sequence. ErrStoreEOF = errors.New("stream store EOF") // ErrMaxMsgs is returned when we have discard new as a policy and we reached the message limit. ErrMaxMsgs = errors.New("maximum messages exceeded") // ErrMaxBytes is returned when we have discard new as a policy and we reached the bytes limit. ErrMaxBytes = errors.New("maximum bytes exceeded") // ErrMaxMsgsPerSubject is returned when we have discard new as a policy and we reached the message limit per subject. ErrMaxMsgsPerSubject = errors.New("maximum messages per subject exceeded") // ErrStoreSnapshotInProgress is returned when RemoveMsg or EraseMsg is called // while a snapshot is in progress. ErrStoreSnapshotInProgress = errors.New("snapshot in progress") // ErrMsgTooLarge is returned when a message is considered too large. ErrMsgTooLarge = errors.New("message to large") // ErrStoreWrongType is for when you access the wrong storage type. ErrStoreWrongType = errors.New("wrong storage type") // ErrNoAckPolicy is returned when trying to update a consumer's acks with no ack policy. ErrNoAckPolicy = errors.New("ack policy is none") // ErrInvalidSequence is returned when the sequence is not present in the stream store. ErrInvalidSequence = errors.New("invalid sequence") // ErrSequenceMismatch is returned when storing a raw message and the expected sequence is wrong. ErrSequenceMismatch = errors.New("expected sequence does not match store") // ErrCorruptStreamState ErrCorruptStreamState = errors.New("stream state snapshot is corrupt") // ErrTooManyResults ErrTooManyResults = errors.New("too many matching results for request") )
var ( ErrInvalidSubject = errors.New("sublist: invalid subject") ErrNotFound = errors.New("sublist: no matches found") ErrNilChan = errors.New("sublist: nil channel") ErrAlreadyRegistered = errors.New("sublist: notification already registered") )
Sublist related errors
var ErrBadStreamStateEncoding = errors.New("bad stream state encoding")
var IsPublicExport = []*Account(nil)
IsPublicExport is a placeholder to denote a public export.
var OCSPResponseCacheTypeMap = map[string]OCSPResponseCacheType{ "none": NONE, "local": LOCAL, }
var OCSPResponseCacheUsage = `` /* 996-byte string literal not displayed */
Functions ¶
func CommandToSignal ¶
Translates a command to a signal number
func ErrorIs ¶
ErrorIs implements: go 1.13 errors.Is(err, target error) bool TODO replace with native code once we no longer support go1.12
func GatewayDoNotForceInterestOnlyMode ¶
func GatewayDoNotForceInterestOnlyMode(doNotForce bool)
GatewayDoNotForceInterestOnlyMode is used ONLY in tests. DO NOT USE in normal code or if you embed the NATS Server.
func GenTLSConfig ¶
func GenTLSConfig(tc *TLSConfigOpts) (*tls.Config, error)
GenTLSConfig loads TLS related configuration parameters.
func IsEncodedStreamState ¶
Determine if this is an encoded stream state.
func IsNatsErr ¶
func IsNatsErr(err error, ids ...ErrorIdentifier) bool
IsNatsErr determines if an error matches ID, if multiple IDs are given if the error matches any of these the function will be true
func IsValidLiteralSubject ¶
IsValidLiteralSubject returns true if a subject is valid and literal (no wildcards), false otherwise
func IsValidPublishSubject ¶
IsValidPublishSubject returns true if a subject is valid and a literal, false otherwise
func IsValidSubject ¶
IsValidSubject returns true if a subject is valid, false otherwise
func NewErrorCtx ¶
func NewSubjectTransform ¶
func NoErrOnUnknownFields ¶
func NoErrOnUnknownFields(noError bool)
NoErrOnUnknownFields can be used to change the behavior the processing of a configuration file. By default, an error is reported if unknown fields are found. If `noError` is set to true, no error will be reported if top-level unknown fields are found.
func PrintAndDie ¶
func PrintAndDie(msg string)
PrintAndDie is exported for access in other packages.
func PrintServerAndExit ¶
func PrintServerAndExit()
PrintServerAndExit will print our version and exit.
func ProcessCommandLineArgs ¶
ProcessCommandLineArgs takes the command line arguments validating and setting flags for handling in case any sub command was present.
func ProcessSignal ¶
ProcessSignal sends the given signal command to the given process. If pidStr is empty, this will send the signal to the single running instance of nats-server. If multiple instances are running, pidStr can be a globular expression ending with '*'. This returns an error if the given process is not running or the command is invalid.
func ReadOperatorJWT ¶
ReadOperatorJWT will read a jwt file for an operator claim. This can be a decorated file.
func RemoveSelfReference ¶
RemoveSelfReference removes this server from an array of routes
func ResetGatewaysSolicitDelay ¶
func ResetGatewaysSolicitDelay()
ResetGatewaysSolicitDelay resets the initial delay before gateways connections are initiated to its default values. Used by tests.
func ResponseHandler ¶
func ResponseHandler(w http.ResponseWriter, r *http.Request, data []byte)
ResponseHandler handles responses for monitoring routes.
func RoutesFromStr ¶
RoutesFromStr parses route URLs from a string
func Run ¶
Run starts the NATS server. This wrapper function allows Windows to add a hook for running NATS as a service.
func SetGatewaysSolicitDelay ¶
SetGatewaysSolicitDelay sets the initial delay before gateways connections are initiated. Used by tests.
func SetProcessName ¶
func SetProcessName(name string)
SetProcessName allows to change the expected name of the process.
func SubjectsCollide ¶
SubjectsCollide will determine if two subjects could both match a single literal subject.
func UnpackIfErrorCtx ¶
UnpackIfErrorCtx return Error or, if type is right error and context
func ValidateMappingDestination ¶
ValidateMappingDestination returns nil error if the subject is a valid subject mapping destination subject
Types ¶
type AccInfoEventOptions ¶
type AccInfoEventOptions struct { // No actual options yet EventFilterOptions }
Options for account Info
type Account ¶
type Account struct { Name string Nkey string Issuer string // contains filtered or unexported fields }
Account are subject namespace definitions. By default no messages are shared between accounts. You can share via Exports and Imports of Streams and Services.
func NewAccount ¶
NewAccount creates a new unlimited account with the given name.
func (*Account) AddMappedStreamImport ¶
AddMappedStreamImport helper for AddMappedStreamImportWithClaim
func (*Account) AddMappedStreamImportWithClaim ¶
func (a *Account) AddMappedStreamImportWithClaim(account *Account, from, to string, imClaim *jwt.Import) error
AddMappedStreamImportWithClaim will add in the stream import from a specific account with optional token.
func (*Account) AddMapping ¶
AddMapping adds in a simple route mapping from src subject to dest subject for inbound client messages.
func (*Account) AddServiceExport ¶
AddServiceExport will configure the account with the defined export.
func (*Account) AddServiceExportWithResponse ¶
func (a *Account) AddServiceExportWithResponse(subject string, respType ServiceRespType, accounts []*Account) error
AddServiceExportWithResponse will configure the account with the defined export and response type.
func (*Account) AddServiceImport ¶
AddServiceImport will add a route to an account to send published messages / requests to the destination account. From is the local subject to map, To is the subject that will appear on the destination account. Destination will need to have an import rule to allow access via addService.
func (*Account) AddServiceImportWithClaim ¶
func (a *Account) AddServiceImportWithClaim(destination *Account, from, to string, imClaim *jwt.Import) error
AddServiceImportWithClaim will add in the service import via the jwt claim.
func (*Account) AddStreamExport ¶
AddStreamExport will add an export to the account. If accounts is nil it will signify a public export, meaning anyone can import.
func (*Account) AddStreamImport ¶
AddStreamImport will add in the stream import from a specific account.
func (*Account) AddStreamImportWithClaim ¶
func (a *Account) AddStreamImportWithClaim(account *Account, from, prefix string, imClaim *jwt.Import) error
AddStreamImportWithClaim will add in the stream import from a specific account with optional token.
func (*Account) AddWeightedMappings ¶
AddWeightedMappings will add in a weighted mappings for the destinations.
func (*Account) DisableJetStream ¶
DisableJetStream will disable JetStream for this account.
func (*Account) EnableJetStream ¶
func (a *Account) EnableJetStream(limits map[string]JetStreamAccountLimits) error
EnableJetStream will enable JetStream on this account with the defined limits. This is a helper for JetStreamEnableAccount.
func (*Account) Interest ¶
Interest returns the number of subscriptions for a given subject that match.
func (*Account) IsExportService ¶
IsExportService will indicate if this service exists. Will check wildcard scenarios.
func (*Account) IsExportServiceTracking ¶
IsExportServiceTracking will indicate if given publish subject is an export service with tracking enabled.
func (*Account) JetStreamEnabled ¶
JetStreamEnabled is a helper to determine if jetstream is enabled for an account.
func (*Account) JetStreamIsConsumerLeader ¶
func (*Account) JetStreamIsStreamLeader ¶
func (*Account) JetStreamUsage ¶
func (a *Account) JetStreamUsage() JetStreamAccountStats
JetStreamUsage reports on JetStream usage and limits for an account.
func (*Account) MaxActiveConnections ¶
MaxActiveConnections return the set limit for the account system wide for total number of active connections.
func (*Account) MaxActiveLeafNodes ¶
MaxActiveLeafNodes return the set limit for the account system wide for total number of leavenode connections. NOTE: these are tracked separately.
func (*Account) MaxTotalConnectionsReached ¶
MaxTotalConnectionsReached returns if we have reached our limit for number of connections.
func (*Account) MaxTotalLeafNodesReached ¶
MaxTotalLeafNodesReached returns if we have reached our limit for number of leafnodes.
func (*Account) NumConnections ¶
NumConnections returns active number of clients for this account for all known servers.
func (*Account) NumLeafNodes ¶
NumLeafNodes returns the active number of local and remote leaf node connections.
func (*Account) NumLocalConnections ¶
NumLocalConnections returns active number of clients for this account on this server.
func (*Account) NumPendingAllResponses ¶
NumPendingAllResponses return the number of all responses outstanding for service exports.
func (*Account) NumPendingResponses ¶
NumPendingResponses returns the number of responses outstanding for service exports on this account. An empty filter string returns all responses regardless of which export. If you specify the filter we will only return ones that are for that export. NOTE this is only for what this server is tracking.
func (*Account) NumPendingReverseResponses ¶
NumPendingReverseResponses returns the number of response mappings we have for all outstanding requests for service imports.
func (*Account) NumRemoteConnections ¶
NumRemoteConnections returns the number of client or leaf connections that are not on this server.
func (*Account) NumRemoteLeafNodes ¶
NumRemoteLeafNodes returns the active number of remote leaf node connections.
func (*Account) NumServiceImports ¶
NumServiceImports returns the number of service imports we have configured.
func (*Account) RemoveMapping ¶
RemoveMapping will remove an existing mapping.
func (*Account) RestoreStream ¶
func (a *Account) RestoreStream(ncfg *StreamConfig, r io.Reader) (*stream, error)
RestoreStream will restore a stream from a snapshot.
func (*Account) RoutedSubs ¶
RoutedSubs returns how many subjects we would send across a route when first connected or expressing interest. Local client subs.
func (*Account) ServiceExportResponseThreshold ¶
ServiceExportResponseThreshold returns the current threshold.
func (*Account) SetServiceExportAllowTrace ¶
func (*Account) SetServiceExportResponseThreshold ¶
SetServiceExportResponseThreshold sets the maximum time the system will a response to be delivered from a service export responder.
func (*Account) SetServiceImportSharing ¶
SetServiceImportSharing will allow sharing of information about requests with the export account. Used for service latency tracking at the moment.
func (*Account) SubscriptionInterest ¶
SubscriptionInterest returns true if this account has a matching subscription for the given `subject`.
func (*Account) TrackServiceExport ¶
TrackServiceExport will enable latency tracking of the named service. Results will be published in this account to the given results subject.
func (*Account) TrackServiceExportWithSampling ¶
TrackServiceExportWithSampling will enable latency tracking of the named service for the given sampling rate (1-100). Results will be published in this account to the given results subject.
func (*Account) UnTrackServiceExport ¶
UnTrackServiceExport will disable latency tracking of the named service.
func (*Account) UpdateJetStreamLimits ¶
func (a *Account) UpdateJetStreamLimits(limits map[string]JetStreamAccountLimits) error
UpdateJetStreamLimits will update the account limits for a JetStream enabled account.
type AccountDetail ¶
type AccountDetail struct { Name string `json:"name"` Id string `json:"id"` JetStreamStats Streams []StreamDetail `json:"stream_detail,omitempty"` }
type AccountGatewayz ¶
type AccountGatewayz struct { Name string `json:"name"` InterestMode string `json:"interest_mode"` NoInterestCount int `json:"no_interest_count,omitempty"` InterestOnlyThreshold int `json:"interest_only_threshold,omitempty"` TotalSubscriptions int `json:"num_subs,omitempty"` NumQueueSubscriptions int `json:"num_queue_subs,omitempty"` }
AccountGatewayz represents interest mode for this account
type AccountInfo ¶
type AccountInfo struct { AccountName string `json:"account_name"` LastUpdate time.Time `json:"update_time,omitempty"` IsSystem bool `json:"is_system,omitempty"` Expired bool `json:"expired"` Complete bool `json:"complete"` JetStream bool `json:"jetstream_enabled"` LeafCnt int `json:"leafnode_connections"` ClientCnt int `json:"client_connections"` SubCnt uint32 `json:"subscriptions"` Mappings ExtMap `json:"mappings,omitempty"` Exports []ExtExport `json:"exports,omitempty"` Imports []ExtImport `json:"imports,omitempty"` Jwt string `json:"jwt,omitempty"` IssuerKey string `json:"issuer_key,omitempty"` NameTag string `json:"name_tag,omitempty"` Tags jwt.TagList `json:"tags,omitempty"` Claim *jwt.AccountClaims `json:"decoded_jwt,omitempty"` Vr []ExtVrIssues `json:"validation_result_jwt,omitempty"` RevokedUser map[string]time.Time `json:"revoked_user,omitempty"` Sublist *SublistStats `json:"sublist_stats,omitempty"` Responses map[string]ExtImport `json:"responses,omitempty"` }
type AccountNumConns ¶
type AccountNumConns struct { TypedEvent Server ServerInfo `json:"server"` AccountStat }
AccountNumConns is an event that will be sent from a server that is tracking a given account when the number of connections changes. It will also HB updates in the absence of any changes.
type AccountResolver ¶
type AccountResolver interface { Fetch(name string) (string, error) Store(name, jwt string) error IsReadOnly() bool Start(server *Server) error IsTrackingUpdate() bool Reload() error Close() }
AccountResolver interface. This is to fetch Account JWTs by public nkeys
type AccountStat ¶
type AccountStat struct { Account string `json:"acc"` Conns int `json:"conns"` LeafNodes int `json:"leafnodes"` TotalConns int `json:"total_conns"` NumSubs uint32 `json:"num_subscriptions"` Sent DataStats `json:"sent"` Received DataStats `json:"received"` SlowConsumers int64 `json:"slow_consumers"` }
AccountStat contains the data common between AccountNumConns and AccountStatz
type AccountStatz ¶
type AccountStatz struct { ID string `json:"server_id"` Now time.Time `json:"now"` Accounts []*AccountStat `json:"account_statz"` }
Leafz represents detailed information on Leafnodes.
type AccountStatzEventOptions ¶
type AccountStatzEventOptions struct { AccountStatzOptions EventFilterOptions }
In the context of system events, AccountzEventOptions are options passed to Accountz
type AccountStatzOptions ¶
type AccountStatzOptions struct { Accounts []string `json:"accounts"` IncludeUnused bool `json:"include_unused"` }
LeafzOptions are options passed to Leafz
type AccountzEventOptions ¶
type AccountzEventOptions struct { AccountzOptions EventFilterOptions }
In the context of system events, AccountzEventOptions are options passed to Accountz
type AccountzOptions ¶
type AccountzOptions struct { // Account indicates that Accountz will return details for the account Account string `json:"account"` }
AccountzOptions are options passed to Accountz
type AckPolicy ¶
type AckPolicy int
AckPolicy determines how the consumer should acknowledge delivered messages.
func (AckPolicy) MarshalJSON ¶
func (*AckPolicy) UnmarshalJSON ¶
type ActionAdvisoryType ¶
type ActionAdvisoryType string
ActionAdvisoryType indicates which action against a stream, consumer or template triggered an advisory
const ( CreateEvent ActionAdvisoryType = "create" DeleteEvent ActionAdvisoryType = "delete" ModifyEvent ActionAdvisoryType = "modify" )
type ApiError ¶
type ApiError struct { Code int `json:"code"` ErrCode uint16 `json:"err_code,omitempty"` Description string `json:"description,omitempty"` }
ApiError is included in all responses if there was an error.
func NewJSAccountResourcesExceededError ¶
func NewJSAccountResourcesExceededError(opts ...ErrorOption) *ApiError
NewJSAccountResourcesExceededError creates a new JSAccountResourcesExceededErr error: "resource limits exceeded for account"
func NewJSBadRequestError ¶
func NewJSBadRequestError(opts ...ErrorOption) *ApiError
NewJSBadRequestError creates a new JSBadRequestErr error: "bad request"
func NewJSClusterIncompleteError ¶
func NewJSClusterIncompleteError(opts ...ErrorOption) *ApiError
NewJSClusterIncompleteError creates a new JSClusterIncompleteErr error: "incomplete results"
func NewJSClusterNoPeersError ¶
func NewJSClusterNoPeersError(err error, opts ...ErrorOption) *ApiError
NewJSClusterNoPeersError creates a new JSClusterNoPeersErrF error: "{err}"
func NewJSClusterNotActiveError ¶
func NewJSClusterNotActiveError(opts ...ErrorOption) *ApiError
NewJSClusterNotActiveError creates a new JSClusterNotActiveErr error: "JetStream not in clustered mode"
func NewJSClusterNotAssignedError ¶
func NewJSClusterNotAssignedError(opts ...ErrorOption) *ApiError
NewJSClusterNotAssignedError creates a new JSClusterNotAssignedErr error: "JetStream cluster not assigned to this server"
func NewJSClusterNotAvailError ¶
func NewJSClusterNotAvailError(opts ...ErrorOption) *ApiError
NewJSClusterNotAvailError creates a new JSClusterNotAvailErr error: "JetStream system temporarily unavailable"
func NewJSClusterNotLeaderError ¶
func NewJSClusterNotLeaderError(opts ...ErrorOption) *ApiError
NewJSClusterNotLeaderError creates a new JSClusterNotLeaderErr error: "JetStream cluster can not handle request"
func NewJSClusterPeerNotMemberError ¶
func NewJSClusterPeerNotMemberError(opts ...ErrorOption) *ApiError
NewJSClusterPeerNotMemberError creates a new JSClusterPeerNotMemberErr error: "peer not a member"
func NewJSClusterRequiredError ¶
func NewJSClusterRequiredError(opts ...ErrorOption) *ApiError
NewJSClusterRequiredError creates a new JSClusterRequiredErr error: "JetStream clustering support required"
func NewJSClusterServerNotMemberError ¶
func NewJSClusterServerNotMemberError(opts ...ErrorOption) *ApiError
NewJSClusterServerNotMemberError creates a new JSClusterServerNotMemberErr error: "server is not a member of the cluster"
func NewJSClusterTagsError ¶
func NewJSClusterTagsError(opts ...ErrorOption) *ApiError
NewJSClusterTagsError creates a new JSClusterTagsErr error: "tags placement not supported for operation"
func NewJSClusterUnSupportFeatureError ¶
func NewJSClusterUnSupportFeatureError(opts ...ErrorOption) *ApiError
NewJSClusterUnSupportFeatureError creates a new JSClusterUnSupportFeatureErr error: "not currently supported in clustered mode"
func NewJSConsumerAlreadyExistsError ¶
func NewJSConsumerAlreadyExistsError(opts ...ErrorOption) *ApiError
NewJSConsumerAlreadyExistsError creates a new JSConsumerAlreadyExists error: "consumer already exists"
func NewJSConsumerBadDurableNameError ¶
func NewJSConsumerBadDurableNameError(opts ...ErrorOption) *ApiError
NewJSConsumerBadDurableNameError creates a new JSConsumerBadDurableNameErr error: "durable name can not contain '.', '*', '>'"
func NewJSConsumerConfigRequiredError ¶
func NewJSConsumerConfigRequiredError(opts ...ErrorOption) *ApiError
NewJSConsumerConfigRequiredError creates a new JSConsumerConfigRequiredErr error: "consumer config required"
func NewJSConsumerCreateDurableAndNameMismatchError ¶
func NewJSConsumerCreateDurableAndNameMismatchError(opts ...ErrorOption) *ApiError
NewJSConsumerCreateDurableAndNameMismatchError creates a new JSConsumerCreateDurableAndNameMismatch error: "Consumer Durable and Name have to be equal if both are provided"
func NewJSConsumerCreateError ¶
func NewJSConsumerCreateError(err error, opts ...ErrorOption) *ApiError
NewJSConsumerCreateError creates a new JSConsumerCreateErrF error: "{err}"
func NewJSConsumerCreateFilterSubjectMismatchError ¶
func NewJSConsumerCreateFilterSubjectMismatchError(opts ...ErrorOption) *ApiError
NewJSConsumerCreateFilterSubjectMismatchError creates a new JSConsumerCreateFilterSubjectMismatchErr error: "Consumer create request did not match filtered subject from create subject"
func NewJSConsumerDeliverCycleError ¶
func NewJSConsumerDeliverCycleError(opts ...ErrorOption) *ApiError
NewJSConsumerDeliverCycleError creates a new JSConsumerDeliverCycleErr error: "consumer deliver subject forms a cycle"
func NewJSConsumerDeliverToWildcardsError ¶
func NewJSConsumerDeliverToWildcardsError(opts ...ErrorOption) *ApiError
NewJSConsumerDeliverToWildcardsError creates a new JSConsumerDeliverToWildcardsErr error: "consumer deliver subject has wildcards"
func NewJSConsumerDescriptionTooLongError ¶
func NewJSConsumerDescriptionTooLongError(max interface{}, opts ...ErrorOption) *ApiError
NewJSConsumerDescriptionTooLongError creates a new JSConsumerDescriptionTooLongErrF error: "consumer description is too long, maximum allowed is {max}"
func NewJSConsumerDirectRequiresEphemeralError ¶
func NewJSConsumerDirectRequiresEphemeralError(opts ...ErrorOption) *ApiError
NewJSConsumerDirectRequiresEphemeralError creates a new JSConsumerDirectRequiresEphemeralErr error: "consumer direct requires an ephemeral consumer"
func NewJSConsumerDirectRequiresPushError ¶
func NewJSConsumerDirectRequiresPushError(opts ...ErrorOption) *ApiError
NewJSConsumerDirectRequiresPushError creates a new JSConsumerDirectRequiresPushErr error: "consumer direct requires a push based consumer"
func NewJSConsumerDoesNotExistError ¶
func NewJSConsumerDoesNotExistError(opts ...ErrorOption) *ApiError
NewJSConsumerDoesNotExistError creates a new JSConsumerDoesNotExist error: "consumer does not exist"
func NewJSConsumerDuplicateFilterSubjectsError ¶
func NewJSConsumerDuplicateFilterSubjectsError(opts ...ErrorOption) *ApiError
NewJSConsumerDuplicateFilterSubjectsError creates a new JSConsumerDuplicateFilterSubjects error: "consumer cannot have both FilterSubject and FilterSubjects specified"
func NewJSConsumerDurableNameNotInSubjectError ¶
func NewJSConsumerDurableNameNotInSubjectError(opts ...ErrorOption) *ApiError
NewJSConsumerDurableNameNotInSubjectError creates a new JSConsumerDurableNameNotInSubjectErr error: "consumer expected to be durable but no durable name set in subject"
func NewJSConsumerDurableNameNotMatchSubjectError ¶
func NewJSConsumerDurableNameNotMatchSubjectError(opts ...ErrorOption) *ApiError
NewJSConsumerDurableNameNotMatchSubjectError creates a new JSConsumerDurableNameNotMatchSubjectErr error: "consumer name in subject does not match durable name in request"
func NewJSConsumerDurableNameNotSetError ¶
func NewJSConsumerDurableNameNotSetError(opts ...ErrorOption) *ApiError
NewJSConsumerDurableNameNotSetError creates a new JSConsumerDurableNameNotSetErr error: "consumer expected to be durable but a durable name was not set"
func NewJSConsumerEmptyFilterError ¶
func NewJSConsumerEmptyFilterError(opts ...ErrorOption) *ApiError
NewJSConsumerEmptyFilterError creates a new JSConsumerEmptyFilter error: "consumer filter in FilterSubjects cannot be empty"
func NewJSConsumerEphemeralWithDurableInSubjectError ¶
func NewJSConsumerEphemeralWithDurableInSubjectError(opts ...ErrorOption) *ApiError
NewJSConsumerEphemeralWithDurableInSubjectError creates a new JSConsumerEphemeralWithDurableInSubjectErr error: "consumer expected to be ephemeral but detected a durable name set in subject"
func NewJSConsumerEphemeralWithDurableNameError ¶
func NewJSConsumerEphemeralWithDurableNameError(opts ...ErrorOption) *ApiError
NewJSConsumerEphemeralWithDurableNameError creates a new JSConsumerEphemeralWithDurableNameErr error: "consumer expected to be ephemeral but a durable name was set in request"
func NewJSConsumerExistingActiveError ¶
func NewJSConsumerExistingActiveError(opts ...ErrorOption) *ApiError
NewJSConsumerExistingActiveError creates a new JSConsumerExistingActiveErr error: "consumer already exists and is still active"
func NewJSConsumerFCRequiresPushError ¶
func NewJSConsumerFCRequiresPushError(opts ...ErrorOption) *ApiError
NewJSConsumerFCRequiresPushError creates a new JSConsumerFCRequiresPushErr error: "consumer flow control requires a push based consumer"
func NewJSConsumerFilterNotSubsetError ¶
func NewJSConsumerFilterNotSubsetError(opts ...ErrorOption) *ApiError
NewJSConsumerFilterNotSubsetError creates a new JSConsumerFilterNotSubsetErr error: "consumer filter subject is not a valid subset of the interest subjects"
func NewJSConsumerHBRequiresPushError ¶
func NewJSConsumerHBRequiresPushError(opts ...ErrorOption) *ApiError
NewJSConsumerHBRequiresPushError creates a new JSConsumerHBRequiresPushErr error: "consumer idle heartbeat requires a push based consumer"
func NewJSConsumerInactiveThresholdExcessError ¶
func NewJSConsumerInactiveThresholdExcessError(limit interface{}, opts ...ErrorOption) *ApiError
NewJSConsumerInactiveThresholdExcessError creates a new JSConsumerInactiveThresholdExcess error: "consumer inactive threshold exceeds system limit of {limit}"
func NewJSConsumerInvalidDeliverSubjectError ¶
func NewJSConsumerInvalidDeliverSubjectError(opts ...ErrorOption) *ApiError
NewJSConsumerInvalidDeliverSubjectError creates a new JSConsumerInvalidDeliverSubject error: "invalid push consumer deliver subject"
func NewJSConsumerInvalidPolicyError ¶
func NewJSConsumerInvalidPolicyError(err error, opts ...ErrorOption) *ApiError
NewJSConsumerInvalidPolicyError creates a new JSConsumerInvalidPolicyErrF error: "{err}"
func NewJSConsumerInvalidSamplingError ¶
func NewJSConsumerInvalidSamplingError(err error, opts ...ErrorOption) *ApiError
NewJSConsumerInvalidSamplingError creates a new JSConsumerInvalidSamplingErrF error: "failed to parse consumer sampling configuration: {err}"
func NewJSConsumerMaxDeliverBackoffError ¶
func NewJSConsumerMaxDeliverBackoffError(opts ...ErrorOption) *ApiError
NewJSConsumerMaxDeliverBackoffError creates a new JSConsumerMaxDeliverBackoffErr error: "max deliver is required to be > length of backoff values"
func NewJSConsumerMaxPendingAckExcessError ¶
func NewJSConsumerMaxPendingAckExcessError(limit interface{}, opts ...ErrorOption) *ApiError
NewJSConsumerMaxPendingAckExcessError creates a new JSConsumerMaxPendingAckExcessErrF error: "consumer max ack pending exceeds system limit of {limit}"
func NewJSConsumerMaxPendingAckPolicyRequiredError ¶
func NewJSConsumerMaxPendingAckPolicyRequiredError(opts ...ErrorOption) *ApiError
NewJSConsumerMaxPendingAckPolicyRequiredError creates a new JSConsumerMaxPendingAckPolicyRequiredErr error: "consumer requires ack policy for max ack pending"
func NewJSConsumerMaxRequestBatchExceededError ¶
func NewJSConsumerMaxRequestBatchExceededError(limit interface{}, opts ...ErrorOption) *ApiError
NewJSConsumerMaxRequestBatchExceededError creates a new JSConsumerMaxRequestBatchExceededF error: "consumer max request batch exceeds server limit of {limit}"
func NewJSConsumerMaxRequestBatchNegativeError ¶
func NewJSConsumerMaxRequestBatchNegativeError(opts ...ErrorOption) *ApiError
NewJSConsumerMaxRequestBatchNegativeError creates a new JSConsumerMaxRequestBatchNegativeErr error: "consumer max request batch needs to be > 0"
func NewJSConsumerMaxRequestExpiresToSmallError ¶
func NewJSConsumerMaxRequestExpiresToSmallError(opts ...ErrorOption) *ApiError
NewJSConsumerMaxRequestExpiresToSmallError creates a new JSConsumerMaxRequestExpiresToSmall error: "consumer max request expires needs to be >= 1ms"
func NewJSConsumerMaxWaitingNegativeError ¶
func NewJSConsumerMaxWaitingNegativeError(opts ...ErrorOption) *ApiError
NewJSConsumerMaxWaitingNegativeError creates a new JSConsumerMaxWaitingNegativeErr error: "consumer max waiting needs to be positive"
func NewJSConsumerMetadataLengthError ¶
func NewJSConsumerMetadataLengthError(limit interface{}, opts ...ErrorOption) *ApiError
NewJSConsumerMetadataLengthError creates a new JSConsumerMetadataLengthErrF error: "consumer metadata exceeds maximum size of {limit}"
func NewJSConsumerMultipleFiltersNotAllowedError ¶
func NewJSConsumerMultipleFiltersNotAllowedError(opts ...ErrorOption) *ApiError
NewJSConsumerMultipleFiltersNotAllowedError creates a new JSConsumerMultipleFiltersNotAllowed error: "consumer with multiple subject filters cannot use subject based API"
func NewJSConsumerNameContainsPathSeparatorsError ¶
func NewJSConsumerNameContainsPathSeparatorsError(opts ...ErrorOption) *ApiError
NewJSConsumerNameContainsPathSeparatorsError creates a new JSConsumerNameContainsPathSeparatorsErr error: "Consumer name can not contain path separators"
func NewJSConsumerNameExistError ¶
func NewJSConsumerNameExistError(opts ...ErrorOption) *ApiError
NewJSConsumerNameExistError creates a new JSConsumerNameExistErr error: "consumer name already in use"
func NewJSConsumerNameTooLongError ¶
func NewJSConsumerNameTooLongError(max interface{}, opts ...ErrorOption) *ApiError
NewJSConsumerNameTooLongError creates a new JSConsumerNameTooLongErrF error: "consumer name is too long, maximum allowed is {max}"
func NewJSConsumerNotFoundError ¶
func NewJSConsumerNotFoundError(opts ...ErrorOption) *ApiError
NewJSConsumerNotFoundError creates a new JSConsumerNotFoundErr error: "consumer not found"
func NewJSConsumerOfflineError ¶
func NewJSConsumerOfflineError(opts ...ErrorOption) *ApiError
NewJSConsumerOfflineError creates a new JSConsumerOfflineErr error: "consumer is offline"
func NewJSConsumerOnMappedError ¶
func NewJSConsumerOnMappedError(opts ...ErrorOption) *ApiError
NewJSConsumerOnMappedError creates a new JSConsumerOnMappedErr error: "consumer direct on a mapped consumer"
func NewJSConsumerOverlappingSubjectFiltersError ¶
func NewJSConsumerOverlappingSubjectFiltersError(opts ...ErrorOption) *ApiError
NewJSConsumerOverlappingSubjectFiltersError creates a new JSConsumerOverlappingSubjectFilters error: "consumer subject filters cannot overlap"
func NewJSConsumerPullNotDurableError ¶
func NewJSConsumerPullNotDurableError(opts ...ErrorOption) *ApiError
NewJSConsumerPullNotDurableError creates a new JSConsumerPullNotDurableErr error: "consumer in pull mode requires a durable name"
func NewJSConsumerPullRequiresAckError ¶
func NewJSConsumerPullRequiresAckError(opts ...ErrorOption) *ApiError
NewJSConsumerPullRequiresAckError creates a new JSConsumerPullRequiresAckErr error: "consumer in pull mode requires ack policy"
func NewJSConsumerPullWithRateLimitError ¶
func NewJSConsumerPullWithRateLimitError(opts ...ErrorOption) *ApiError
NewJSConsumerPullWithRateLimitError creates a new JSConsumerPullWithRateLimitErr error: "consumer in pull mode can not have rate limit set"
func NewJSConsumerPushMaxWaitingError ¶
func NewJSConsumerPushMaxWaitingError(opts ...ErrorOption) *ApiError
NewJSConsumerPushMaxWaitingError creates a new JSConsumerPushMaxWaitingErr error: "consumer in push mode can not set max waiting"
func NewJSConsumerReplacementWithDifferentNameError ¶
func NewJSConsumerReplacementWithDifferentNameError(opts ...ErrorOption) *ApiError
NewJSConsumerReplacementWithDifferentNameError creates a new JSConsumerReplacementWithDifferentNameErr error: "consumer replacement durable config not the same"
func NewJSConsumerReplicasExceedsStreamError ¶
func NewJSConsumerReplicasExceedsStreamError(opts ...ErrorOption) *ApiError
NewJSConsumerReplicasExceedsStreamError creates a new JSConsumerReplicasExceedsStream error: "consumer config replica count exceeds parent stream"
func NewJSConsumerReplicasShouldMatchStreamError ¶
func NewJSConsumerReplicasShouldMatchStreamError(opts ...ErrorOption) *ApiError
NewJSConsumerReplicasShouldMatchStreamError creates a new JSConsumerReplicasShouldMatchStream error: "consumer config replicas must match interest retention stream's replicas"
func NewJSConsumerSmallHeartbeatError ¶
func NewJSConsumerSmallHeartbeatError(opts ...ErrorOption) *ApiError
NewJSConsumerSmallHeartbeatError creates a new JSConsumerSmallHeartbeatErr error: "consumer idle heartbeat needs to be >= 100ms"
func NewJSConsumerStoreFailedError ¶
func NewJSConsumerStoreFailedError(err error, opts ...ErrorOption) *ApiError
NewJSConsumerStoreFailedError creates a new JSConsumerStoreFailedErrF error: "error creating store for consumer: {err}"
func NewJSConsumerWQConsumerNotDeliverAllError ¶
func NewJSConsumerWQConsumerNotDeliverAllError(opts ...ErrorOption) *ApiError
NewJSConsumerWQConsumerNotDeliverAllError creates a new JSConsumerWQConsumerNotDeliverAllErr error: "consumer must be deliver all on workqueue stream"
func NewJSConsumerWQConsumerNotUniqueError ¶
func NewJSConsumerWQConsumerNotUniqueError(opts ...ErrorOption) *ApiError
NewJSConsumerWQConsumerNotUniqueError creates a new JSConsumerWQConsumerNotUniqueErr error: "filtered consumer not unique on workqueue stream"
func NewJSConsumerWQMultipleUnfilteredError ¶
func NewJSConsumerWQMultipleUnfilteredError(opts ...ErrorOption) *ApiError
NewJSConsumerWQMultipleUnfilteredError creates a new JSConsumerWQMultipleUnfilteredErr error: "multiple non-filtered consumers not allowed on workqueue stream"
func NewJSConsumerWQRequiresExplicitAckError ¶
func NewJSConsumerWQRequiresExplicitAckError(opts ...ErrorOption) *ApiError
NewJSConsumerWQRequiresExplicitAckError creates a new JSConsumerWQRequiresExplicitAckErr error: "workqueue stream requires explicit ack"
func NewJSConsumerWithFlowControlNeedsHeartbeatsError ¶
func NewJSConsumerWithFlowControlNeedsHeartbeatsError(opts ...ErrorOption) *ApiError
NewJSConsumerWithFlowControlNeedsHeartbeatsError creates a new JSConsumerWithFlowControlNeedsHeartbeats error: "consumer with flow control also needs heartbeats"
func NewJSInsufficientResourcesError ¶
func NewJSInsufficientResourcesError(opts ...ErrorOption) *ApiError
NewJSInsufficientResourcesError creates a new JSInsufficientResourcesErr error: "insufficient resources"
func NewJSInvalidJSONError ¶
func NewJSInvalidJSONError(opts ...ErrorOption) *ApiError
NewJSInvalidJSONError creates a new JSInvalidJSONErr error: "invalid JSON"
func NewJSMaximumConsumersLimitError ¶
func NewJSMaximumConsumersLimitError(opts ...ErrorOption) *ApiError
NewJSMaximumConsumersLimitError creates a new JSMaximumConsumersLimitErr error: "maximum consumers limit reached"
func NewJSMaximumStreamsLimitError ¶
func NewJSMaximumStreamsLimitError(opts ...ErrorOption) *ApiError
NewJSMaximumStreamsLimitError creates a new JSMaximumStreamsLimitErr error: "maximum number of streams reached"
func NewJSMemoryResourcesExceededError ¶
func NewJSMemoryResourcesExceededError(opts ...ErrorOption) *ApiError
NewJSMemoryResourcesExceededError creates a new JSMemoryResourcesExceededErr error: "insufficient memory resources available"
func NewJSMirrorConsumerSetupFailedError ¶
func NewJSMirrorConsumerSetupFailedError(err error, opts ...ErrorOption) *ApiError
NewJSMirrorConsumerSetupFailedError creates a new JSMirrorConsumerSetupFailedErrF error: "{err}"
func NewJSMirrorInvalidStreamNameError ¶
func NewJSMirrorInvalidStreamNameError(opts ...ErrorOption) *ApiError
NewJSMirrorInvalidStreamNameError creates a new JSMirrorInvalidStreamName error: "mirrored stream name is invalid"
func NewJSMirrorInvalidSubjectFilterError ¶
func NewJSMirrorInvalidSubjectFilterError(opts ...ErrorOption) *ApiError
NewJSMirrorInvalidSubjectFilterError creates a new JSMirrorInvalidSubjectFilter error: "mirror subject filter is invalid"
func NewJSMirrorMaxMessageSizeTooBigError ¶
func NewJSMirrorMaxMessageSizeTooBigError(opts ...ErrorOption) *ApiError
NewJSMirrorMaxMessageSizeTooBigError creates a new JSMirrorMaxMessageSizeTooBigErr error: "stream mirror must have max message size >= source"
func NewJSMirrorMultipleFiltersNotAllowedError ¶
func NewJSMirrorMultipleFiltersNotAllowedError(opts ...ErrorOption) *ApiError
NewJSMirrorMultipleFiltersNotAllowedError creates a new JSMirrorMultipleFiltersNotAllowed error: "mirror with multiple subject transforms cannot also have a single subject filter"
func NewJSMirrorOverlappingSubjectFiltersError ¶
func NewJSMirrorOverlappingSubjectFiltersError(opts ...ErrorOption) *ApiError
NewJSMirrorOverlappingSubjectFiltersError creates a new JSMirrorOverlappingSubjectFilters error: "mirror subject filters can not overlap"
func NewJSMirrorWithFirstSeqError ¶
func NewJSMirrorWithFirstSeqError(opts ...ErrorOption) *ApiError
NewJSMirrorWithFirstSeqError creates a new JSMirrorWithFirstSeqErr error: "stream mirrors can not have first sequence configured"
func NewJSMirrorWithSourcesError ¶
func NewJSMirrorWithSourcesError(opts ...ErrorOption) *ApiError
NewJSMirrorWithSourcesError creates a new JSMirrorWithSourcesErr error: "stream mirrors can not also contain other sources"
func NewJSMirrorWithStartSeqAndTimeError ¶
func NewJSMirrorWithStartSeqAndTimeError(opts ...ErrorOption) *ApiError
NewJSMirrorWithStartSeqAndTimeError creates a new JSMirrorWithStartSeqAndTimeErr error: "stream mirrors can not have both start seq and start time configured"
func NewJSMirrorWithSubjectFiltersError ¶
func NewJSMirrorWithSubjectFiltersError(opts ...ErrorOption) *ApiError
NewJSMirrorWithSubjectFiltersError creates a new JSMirrorWithSubjectFiltersErr error: "stream mirrors can not contain filtered subjects"
func NewJSMirrorWithSubjectsError ¶
func NewJSMirrorWithSubjectsError(opts ...ErrorOption) *ApiError
NewJSMirrorWithSubjectsError creates a new JSMirrorWithSubjectsErr error: "stream mirrors can not contain subjects"
func NewJSNoAccountError ¶
func NewJSNoAccountError(opts ...ErrorOption) *ApiError
NewJSNoAccountError creates a new JSNoAccountErr error: "account not found"
func NewJSNoLimitsError ¶
func NewJSNoLimitsError(opts ...ErrorOption) *ApiError
NewJSNoLimitsError creates a new JSNoLimitsErr error: "no JetStream default or applicable tiered limit present"
func NewJSNoMessageFoundError ¶
func NewJSNoMessageFoundError(opts ...ErrorOption) *ApiError
NewJSNoMessageFoundError creates a new JSNoMessageFoundErr error: "no message found"
func NewJSNotEmptyRequestError ¶
func NewJSNotEmptyRequestError(opts ...ErrorOption) *ApiError
NewJSNotEmptyRequestError creates a new JSNotEmptyRequestErr error: "expected an empty request payload"
func NewJSNotEnabledError ¶
func NewJSNotEnabledError(opts ...ErrorOption) *ApiError
NewJSNotEnabledError creates a new JSNotEnabledErr error: "JetStream not enabled"
func NewJSNotEnabledForAccountError ¶
func NewJSNotEnabledForAccountError(opts ...ErrorOption) *ApiError
NewJSNotEnabledForAccountError creates a new JSNotEnabledForAccountErr error: "JetStream not enabled for account"
func NewJSPeerRemapError ¶
func NewJSPeerRemapError(opts ...ErrorOption) *ApiError
NewJSPeerRemapError creates a new JSPeerRemapErr error: "peer remap failed"
func NewJSRaftGeneralError ¶
func NewJSRaftGeneralError(err error, opts ...ErrorOption) *ApiError
NewJSRaftGeneralError creates a new JSRaftGeneralErrF error: "{err}"
func NewJSReplicasCountCannotBeNegativeError ¶
func NewJSReplicasCountCannotBeNegativeError(opts ...ErrorOption) *ApiError
NewJSReplicasCountCannotBeNegativeError creates a new JSReplicasCountCannotBeNegative error: "replicas count cannot be negative"
func NewJSRestoreSubscribeFailedError ¶
func NewJSRestoreSubscribeFailedError(err error, subject interface{}, opts ...ErrorOption) *ApiError
NewJSRestoreSubscribeFailedError creates a new JSRestoreSubscribeFailedErrF error: "JetStream unable to subscribe to restore snapshot {subject}: {err}"
func NewJSSequenceNotFoundError ¶
func NewJSSequenceNotFoundError(seq uint64, opts ...ErrorOption) *ApiError
NewJSSequenceNotFoundError creates a new JSSequenceNotFoundErrF error: "sequence {seq} not found"
func NewJSSnapshotDeliverSubjectInvalidError ¶
func NewJSSnapshotDeliverSubjectInvalidError(opts ...ErrorOption) *ApiError
NewJSSnapshotDeliverSubjectInvalidError creates a new JSSnapshotDeliverSubjectInvalidErr error: "deliver subject not valid"
func NewJSSourceConsumerSetupFailedError ¶
func NewJSSourceConsumerSetupFailedError(err error, opts ...ErrorOption) *ApiError
NewJSSourceConsumerSetupFailedError creates a new JSSourceConsumerSetupFailedErrF error: "{err}"
func NewJSSourceDuplicateDetectedError ¶
func NewJSSourceDuplicateDetectedError(opts ...ErrorOption) *ApiError
NewJSSourceDuplicateDetectedError creates a new JSSourceDuplicateDetected error: "duplicate source configuration detected"
func NewJSSourceInvalidStreamNameError ¶
func NewJSSourceInvalidStreamNameError(opts ...ErrorOption) *ApiError
NewJSSourceInvalidStreamNameError creates a new JSSourceInvalidStreamName error: "sourced stream name is invalid"
func NewJSSourceInvalidSubjectFilterError ¶
func NewJSSourceInvalidSubjectFilterError(opts ...ErrorOption) *ApiError
NewJSSourceInvalidSubjectFilterError creates a new JSSourceInvalidSubjectFilter error: "source subject filter is invalid"
func NewJSSourceInvalidTransformDestinationError ¶
func NewJSSourceInvalidTransformDestinationError(opts ...ErrorOption) *ApiError
NewJSSourceInvalidTransformDestinationError creates a new JSSourceInvalidTransformDestination error: "source transform destination is invalid"
func NewJSSourceMaxMessageSizeTooBigError ¶
func NewJSSourceMaxMessageSizeTooBigError(opts ...ErrorOption) *ApiError
NewJSSourceMaxMessageSizeTooBigError creates a new JSSourceMaxMessageSizeTooBigErr error: "stream source must have max message size >= target"
func NewJSSourceMultipleFiltersNotAllowedError ¶
func NewJSSourceMultipleFiltersNotAllowedError(opts ...ErrorOption) *ApiError
NewJSSourceMultipleFiltersNotAllowedError creates a new JSSourceMultipleFiltersNotAllowed error: "source with multiple subject transforms cannot also have a single subject filter"
func NewJSSourceOverlappingSubjectFiltersError ¶
func NewJSSourceOverlappingSubjectFiltersError(opts ...ErrorOption) *ApiError
NewJSSourceOverlappingSubjectFiltersError creates a new JSSourceOverlappingSubjectFilters error: "source filters can not overlap"
func NewJSStorageResourcesExceededError ¶
func NewJSStorageResourcesExceededError(opts ...ErrorOption) *ApiError
NewJSStorageResourcesExceededError creates a new JSStorageResourcesExceededErr error: "insufficient storage resources available"
func NewJSStreamAssignmentError ¶
func NewJSStreamAssignmentError(err error, opts ...ErrorOption) *ApiError
NewJSStreamAssignmentError creates a new JSStreamAssignmentErrF error: "{err}"
func NewJSStreamCreateError ¶
func NewJSStreamCreateError(err error, opts ...ErrorOption) *ApiError
NewJSStreamCreateError creates a new JSStreamCreateErrF error: "{err}"
func NewJSStreamDeleteError ¶
func NewJSStreamDeleteError(err error, opts ...ErrorOption) *ApiError
NewJSStreamDeleteError creates a new JSStreamDeleteErrF error: "{err}"
func NewJSStreamExternalApiOverlapError ¶
func NewJSStreamExternalApiOverlapError(prefix interface{}, subject interface{}, opts ...ErrorOption) *ApiError
NewJSStreamExternalApiOverlapError creates a new JSStreamExternalApiOverlapErrF error: "stream external api prefix {prefix} must not overlap with {subject}"
func NewJSStreamExternalDelPrefixOverlapsError ¶
func NewJSStreamExternalDelPrefixOverlapsError(prefix interface{}, subject interface{}, opts ...ErrorOption) *ApiError
NewJSStreamExternalDelPrefixOverlapsError creates a new JSStreamExternalDelPrefixOverlapsErrF error: "stream external delivery prefix {prefix} overlaps with stream subject {subject}"
func NewJSStreamGeneralError ¶
func NewJSStreamGeneralError(err error, opts ...ErrorOption) *ApiError
NewJSStreamGeneralError creates a new JSStreamGeneralErrorF error: "{err}"
func NewJSStreamHeaderExceedsMaximumError ¶
func NewJSStreamHeaderExceedsMaximumError(opts ...ErrorOption) *ApiError
NewJSStreamHeaderExceedsMaximumError creates a new JSStreamHeaderExceedsMaximumErr error: "header size exceeds maximum allowed of 64k"
func NewJSStreamInfoMaxSubjectsError ¶
func NewJSStreamInfoMaxSubjectsError(opts ...ErrorOption) *ApiError
NewJSStreamInfoMaxSubjectsError creates a new JSStreamInfoMaxSubjectsErr error: "subject details would exceed maximum allowed"
func NewJSStreamInvalidConfigError ¶
func NewJSStreamInvalidConfigError(err error, opts ...ErrorOption) *ApiError
NewJSStreamInvalidConfigError creates a new JSStreamInvalidConfigF error: "{err}"
func NewJSStreamInvalidError ¶
func NewJSStreamInvalidError(opts ...ErrorOption) *ApiError
NewJSStreamInvalidError creates a new JSStreamInvalidErr error: "stream not valid"
func NewJSStreamInvalidExternalDeliverySubjError ¶
func NewJSStreamInvalidExternalDeliverySubjError(prefix interface{}, opts ...ErrorOption) *ApiError
NewJSStreamInvalidExternalDeliverySubjError creates a new JSStreamInvalidExternalDeliverySubjErrF error: "stream external delivery prefix {prefix} must not contain wildcards"
func NewJSStreamLimitsError ¶
func NewJSStreamLimitsError(err error, opts ...ErrorOption) *ApiError
NewJSStreamLimitsError creates a new JSStreamLimitsErrF error: "{err}"
func NewJSStreamMaxBytesRequiredError ¶
func NewJSStreamMaxBytesRequiredError(opts ...ErrorOption) *ApiError
NewJSStreamMaxBytesRequiredError creates a new JSStreamMaxBytesRequired error: "account requires a stream config to have max bytes set"
func NewJSStreamMaxStreamBytesExceededError ¶
func NewJSStreamMaxStreamBytesExceededError(opts ...ErrorOption) *ApiError
NewJSStreamMaxStreamBytesExceededError creates a new JSStreamMaxStreamBytesExceeded error: "stream max bytes exceeds account limit max stream bytes"
func NewJSStreamMessageExceedsMaximumError ¶
func NewJSStreamMessageExceedsMaximumError(opts ...ErrorOption) *ApiError
NewJSStreamMessageExceedsMaximumError creates a new JSStreamMessageExceedsMaximumErr error: "message size exceeds maximum allowed"
func NewJSStreamMirrorNotUpdatableError ¶
func NewJSStreamMirrorNotUpdatableError(opts ...ErrorOption) *ApiError
NewJSStreamMirrorNotUpdatableError creates a new JSStreamMirrorNotUpdatableErr error: "stream mirror configuration can not be updated"
func NewJSStreamMismatchError ¶
func NewJSStreamMismatchError(opts ...ErrorOption) *ApiError
NewJSStreamMismatchError creates a new JSStreamMismatchErr error: "stream name in subject does not match request"
func NewJSStreamMoveAndScaleError ¶
func NewJSStreamMoveAndScaleError(opts ...ErrorOption) *ApiError
NewJSStreamMoveAndScaleError creates a new JSStreamMoveAndScaleErr error: "can not move and scale a stream in a single update"
func NewJSStreamMoveInProgressError ¶
func NewJSStreamMoveInProgressError(msg interface{}, opts ...ErrorOption) *ApiError
NewJSStreamMoveInProgressError creates a new JSStreamMoveInProgressF error: "stream move already in progress: {msg}"
func NewJSStreamMoveNotInProgressError ¶
func NewJSStreamMoveNotInProgressError(opts ...ErrorOption) *ApiError
NewJSStreamMoveNotInProgressError creates a new JSStreamMoveNotInProgress error: "stream move not in progress"
func NewJSStreamMsgDeleteFailedError ¶
func NewJSStreamMsgDeleteFailedError(err error, opts ...ErrorOption) *ApiError
NewJSStreamMsgDeleteFailedError creates a new JSStreamMsgDeleteFailedF error: "{err}"
func NewJSStreamNameContainsPathSeparatorsError ¶
func NewJSStreamNameContainsPathSeparatorsError(opts ...ErrorOption) *ApiError
NewJSStreamNameContainsPathSeparatorsError creates a new JSStreamNameContainsPathSeparatorsErr error: "Stream name can not contain path separators"
func NewJSStreamNameExistError ¶
func NewJSStreamNameExistError(opts ...ErrorOption) *ApiError
NewJSStreamNameExistError creates a new JSStreamNameExistErr error: "stream name already in use with a different configuration"
func NewJSStreamNameExistRestoreFailedError ¶
func NewJSStreamNameExistRestoreFailedError(opts ...ErrorOption) *ApiError
NewJSStreamNameExistRestoreFailedError creates a new JSStreamNameExistRestoreFailedErr error: "stream name already in use, cannot restore"
func NewJSStreamNotFoundError ¶
func NewJSStreamNotFoundError(opts ...ErrorOption) *ApiError
NewJSStreamNotFoundError creates a new JSStreamNotFoundErr error: "stream not found"
func NewJSStreamNotMatchError ¶
func NewJSStreamNotMatchError(opts ...ErrorOption) *ApiError
NewJSStreamNotMatchError creates a new JSStreamNotMatchErr error: "expected stream does not match"
func NewJSStreamOfflineError ¶
func NewJSStreamOfflineError(opts ...ErrorOption) *ApiError
NewJSStreamOfflineError creates a new JSStreamOfflineErr error: "stream is offline"
func NewJSStreamPurgeFailedError ¶
func NewJSStreamPurgeFailedError(err error, opts ...ErrorOption) *ApiError
NewJSStreamPurgeFailedError creates a new JSStreamPurgeFailedF error: "{err}"
func NewJSStreamReplicasNotSupportedError ¶
func NewJSStreamReplicasNotSupportedError(opts ...ErrorOption) *ApiError
NewJSStreamReplicasNotSupportedError creates a new JSStreamReplicasNotSupportedErr error: "replicas > 1 not supported in non-clustered mode"
func NewJSStreamReplicasNotUpdatableError ¶
func NewJSStreamReplicasNotUpdatableError(opts ...ErrorOption) *ApiError
NewJSStreamReplicasNotUpdatableError creates a new JSStreamReplicasNotUpdatableErr error: "Replicas configuration can not be updated"
func NewJSStreamRestoreError ¶
func NewJSStreamRestoreError(err error, opts ...ErrorOption) *ApiError
NewJSStreamRestoreError creates a new JSStreamRestoreErrF error: "restore failed: {err}"
func NewJSStreamRollupFailedError ¶
func NewJSStreamRollupFailedError(err error, opts ...ErrorOption) *ApiError
NewJSStreamRollupFailedError creates a new JSStreamRollupFailedF error: "{err}"
func NewJSStreamSealedError ¶
func NewJSStreamSealedError(opts ...ErrorOption) *ApiError
NewJSStreamSealedError creates a new JSStreamSealedErr error: "invalid operation on sealed stream"
func NewJSStreamSequenceNotMatchError ¶
func NewJSStreamSequenceNotMatchError(opts ...ErrorOption) *ApiError
NewJSStreamSequenceNotMatchError creates a new JSStreamSequenceNotMatchErr error: "expected stream sequence does not match"
func NewJSStreamSnapshotError ¶
func NewJSStreamSnapshotError(err error, opts ...ErrorOption) *ApiError
NewJSStreamSnapshotError creates a new JSStreamSnapshotErrF error: "snapshot failed: {err}"
func NewJSStreamStoreFailedError ¶
func NewJSStreamStoreFailedError(err error, opts ...ErrorOption) *ApiError
NewJSStreamStoreFailedError creates a new JSStreamStoreFailedF error: "{err}"
func NewJSStreamSubjectOverlapError ¶
func NewJSStreamSubjectOverlapError(opts ...ErrorOption) *ApiError
NewJSStreamSubjectOverlapError creates a new JSStreamSubjectOverlapErr error: "subjects overlap with an existing stream"
func NewJSStreamTemplateCreateError ¶
func NewJSStreamTemplateCreateError(err error, opts ...ErrorOption) *ApiError
NewJSStreamTemplateCreateError creates a new JSStreamTemplateCreateErrF error: "{err}"
func NewJSStreamTemplateDeleteError ¶
func NewJSStreamTemplateDeleteError(err error, opts ...ErrorOption) *ApiError
NewJSStreamTemplateDeleteError creates a new JSStreamTemplateDeleteErrF error: "{err}"
func NewJSStreamTemplateNotFoundError ¶
func NewJSStreamTemplateNotFoundError(opts ...ErrorOption) *ApiError
NewJSStreamTemplateNotFoundError creates a new JSStreamTemplateNotFoundErr error: "template not found"
func NewJSStreamUpdateError ¶
func NewJSStreamUpdateError(err error, opts ...ErrorOption) *ApiError
NewJSStreamUpdateError creates a new JSStreamUpdateErrF error: "{err}"
func NewJSStreamWrongLastMsgIDError ¶
func NewJSStreamWrongLastMsgIDError(id interface{}, opts ...ErrorOption) *ApiError
NewJSStreamWrongLastMsgIDError creates a new JSStreamWrongLastMsgIDErrF error: "wrong last msg ID: {id}"
func NewJSStreamWrongLastSequenceError ¶
func NewJSStreamWrongLastSequenceError(seq uint64, opts ...ErrorOption) *ApiError
NewJSStreamWrongLastSequenceError creates a new JSStreamWrongLastSequenceErrF error: "wrong last sequence: {seq}"
func NewJSTempStorageFailedError ¶
func NewJSTempStorageFailedError(opts ...ErrorOption) *ApiError
NewJSTempStorageFailedError creates a new JSTempStorageFailedErr error: "JetStream unable to open temp storage for restore"
func NewJSTemplateNameNotMatchSubjectError ¶
func NewJSTemplateNameNotMatchSubjectError(opts ...ErrorOption) *ApiError
NewJSTemplateNameNotMatchSubjectError creates a new JSTemplateNameNotMatchSubjectErr error: "template name in subject does not match request"
type ApiPaged ¶
type ApiPaged struct { Total int `json:"total"` Offset int `json:"offset"` Limit int `json:"limit"` }
ApiPaged includes variables used to create paged responses from the JSON API
type ApiPagedRequest ¶
type ApiPagedRequest struct {
Offset int `json:"offset"`
}
ApiPagedRequest includes parameters allowing specific pages to be requests from APIs responding with ApiPaged
type ApiResponse ¶
ApiResponse is a standard response from the JetStream JSON API
func (*ApiResponse) ToError ¶
func (r *ApiResponse) ToError() error
ToError checks if the response has a error and if it does converts it to an error avoiding the pitfalls described by https://yourbasic.org/golang/gotcha-why-nil-error-not-equal-nil/
type AuthCallout ¶
type AuthCallout struct { // Must be a public account Nkey. Issuer string // Account to be used for sending requests. Account string // Users that will bypass auth_callout and be used for the auth service itself. AuthUsers []string // XKey is a public xkey for the authorization service. // This will enable encryption for server requests and the authorization service responses. XKey string }
AuthCallout option used to map external AuthN to NATS based AuthZ.
type Authentication ¶
type Authentication interface { // Check if a client is authorized to connect Check(c ClientAuthentication) bool }
Authentication is an interface for implementing authentication
type CacheDirAccResolver ¶
type CacheDirAccResolver struct { DirAccResolver // contains filtered or unexported fields }
Caching resolver using nats for lookups and making use of a directory for storage
func NewCacheDirAccResolver ¶
func NewCacheDirAccResolver(path string, limit int64, ttl time.Duration, opts ...DirResOption) (*CacheDirAccResolver, error)
func (*CacheDirAccResolver) Reload ¶
func (dr *CacheDirAccResolver) Reload() error
func (*CacheDirAccResolver) Start ¶
func (dr *CacheDirAccResolver) Start(s *Server) error
type ClaimUpdateError ¶
type ClaimUpdateStatus ¶
type ClientAuthentication ¶
type ClientAuthentication interface { // GetOpts gets options associated with a client GetOpts() *ClientOpts // GetTLSConnectionState if TLS is enabled, TLS ConnectionState, nil otherwise GetTLSConnectionState() *tls.ConnectionState // RegisterUser optionally map a user after auth. RegisterUser(*User) // RemoteAddress expose the connection information of the client RemoteAddress() net.Addr // GetNonce is the nonce presented to the user in the INFO line GetNonce() []byte // Kind indicates what type of connection this is matching defined constants like CLIENT, ROUTER, GATEWAY, LEAF etc Kind() int }
ClientAuthentication is an interface for client authentication
type ClientInfo ¶
type ClientInfo struct { Start *time.Time `json:"start,omitempty"` Host string `json:"host,omitempty"` ID uint64 `json:"id,omitempty"` Account string `json:"acc,omitempty"` Service string `json:"svc,omitempty"` User string `json:"user,omitempty"` Name string `json:"name,omitempty"` Lang string `json:"lang,omitempty"` Version string `json:"ver,omitempty"` RTT time.Duration `json:"rtt,omitempty"` Server string `json:"server,omitempty"` Cluster string `json:"cluster,omitempty"` Alternates []string `json:"alts,omitempty"` Stop *time.Time `json:"stop,omitempty"` Jwt string `json:"jwt,omitempty"` IssuerKey string `json:"issuer_key,omitempty"` NameTag string `json:"name_tag,omitempty"` Tags jwt.TagList `json:"tags,omitempty"` Kind string `json:"kind,omitempty"` ClientType string `json:"client_type,omitempty"` MQTTClient string `json:"client_id,omitempty"` // This is the MQTT client ID Nonce string `json:"nonce,omitempty"` }
ClientInfo is detailed information about the client forming a connection.
type ClientOpts ¶
type ClientOpts struct { Echo bool `json:"echo"` Verbose bool `json:"verbose"` Pedantic bool `json:"pedantic"` TLSRequired bool `json:"tls_required"` Nkey string `json:"nkey,omitempty"` JWT string `json:"jwt,omitempty"` Sig string `json:"sig,omitempty"` Token string `json:"auth_token,omitempty"` Username string `json:"user,omitempty"` Password string `json:"pass,omitempty"` Name string `json:"name"` Lang string `json:"lang"` Version string `json:"version"` Protocol int `json:"protocol"` Account string `json:"account,omitempty"` AccountNew bool `json:"new_account,omitempty"` Headers bool `json:"headers,omitempty"` NoResponders bool `json:"no_responders,omitempty"` // Routes and Leafnodes only Import *SubjectPermission `json:"import,omitempty"` Export *SubjectPermission `json:"export,omitempty"` // Leafnodes RemoteAccount string `json:"remote_account,omitempty"` }
type ClosedState ¶
type ClosedState int
ClosedState is the reason client was closed. This will be passed into calls to clearConnection, but will only be stored in ConnInfo for monitoring.
func (ClosedState) String ¶
func (reason ClosedState) String() string
type ClusterInfo ¶
type ClusterInfo struct { Name string `json:"name,omitempty"` RaftGroup string `json:"raft_group,omitempty"` Leader string `json:"leader,omitempty"` Replicas []*PeerInfo `json:"replicas,omitempty"` }
ClusterInfo shows information about the underlying set of servers that make up the stream or consumer.
type ClusterOpts ¶
type ClusterOpts struct { Name string `json:"-"` Host string `json:"addr,omitempty"` Port int `json:"cluster_port,omitempty"` Username string `json:"-"` Password string `json:"-"` AuthTimeout float64 `json:"auth_timeout,omitempty"` Permissions *RoutePermissions `json:"-"` TLSTimeout float64 `json:"-"` TLSConfig *tls.Config `json:"-"` TLSMap bool `json:"-"` TLSCheckKnownURLs bool `json:"-"` TLSPinnedCerts PinnedCertSet `json:"-"` ListenStr string `json:"-"` Advertise string `json:"-"` NoAdvertise bool `json:"-"` ConnectRetries int `json:"-"` PoolSize int `json:"-"` PinnedAccounts []string `json:"-"` Compression CompressionOpts `json:"-"` PingInterval time.Duration `json:"-"` MaxPingsOut int `json:"-"` // contains filtered or unexported fields }
ClusterOpts are options for clusters. NOTE: This structure is no longer used for monitoring endpoints and json tags are deprecated and may be removed in the future.
type ClusterOptsVarz ¶
type ClusterOptsVarz struct { Name string `json:"name,omitempty"` Host string `json:"addr,omitempty"` Port int `json:"cluster_port,omitempty"` AuthTimeout float64 `json:"auth_timeout,omitempty"` URLs []string `json:"urls,omitempty"` TLSTimeout float64 `json:"tls_timeout,omitempty"` TLSRequired bool `json:"tls_required,omitempty"` TLSVerify bool `json:"tls_verify,omitempty"` PoolSize int `json:"pool_size,omitempty"` }
ClusterOptsVarz contains monitoring cluster information
type Command ¶
type Command string
Command is a signal used to control a running nats-server process.
type CommittedEntry ¶
CommittedEntry is handed back to the user to apply a commit to their upper layer.
func (*CommittedEntry) ReturnToPool ¶
func (ce *CommittedEntry) ReturnToPool()
ReturnToPool returns the CommittedEntry to the pool, after which point it is no longer safe to reuse.
type CompressionInfo ¶
type CompressionInfo struct { Algorithm StoreCompression OriginalSize uint64 }
func (*CompressionInfo) MarshalMetadata ¶
func (c *CompressionInfo) MarshalMetadata() []byte
func (*CompressionInfo) UnmarshalMetadata ¶
func (c *CompressionInfo) UnmarshalMetadata(b []byte) (int, error)
type CompressionOpts ¶
type CompressionOpts struct { Mode string // If `Mode` is set to CompressionS2Auto, RTTThresholds provides the // thresholds at which the compression level will go from // CompressionS2Uncompressed to CompressionS2Fast, CompressionS2Better // or CompressionS2Best. If a given level is not desired, specify 0 // for this slot. For instance, the slice []{0, 10ms, 20ms} means that // for any RTT up to 10ms included the compression level will be // CompressionS2Fast, then from ]10ms..20ms], the level will be selected // as CompressionS2Better. Anything above 20ms will result in picking // the CompressionS2Best compression level. RTTThresholds []time.Duration }
CompressionOpts defines the compression mode and optional configuration.
type ConnInfo ¶
type ConnInfo struct { Cid uint64 `json:"cid"` Kind string `json:"kind,omitempty"` Type string `json:"type,omitempty"` IP string `json:"ip"` Port int `json:"port"` Start time.Time `json:"start"` LastActivity time.Time `json:"last_activity"` Stop *time.Time `json:"stop,omitempty"` Reason string `json:"reason,omitempty"` RTT string `json:"rtt,omitempty"` Uptime string `json:"uptime"` Idle string `json:"idle"` Pending int `json:"pending_bytes"` InMsgs int64 `json:"in_msgs"` OutMsgs int64 `json:"out_msgs"` InBytes int64 `json:"in_bytes"` OutBytes int64 `json:"out_bytes"` NumSubs uint32 `json:"subscriptions"` Name string `json:"name,omitempty"` Lang string `json:"lang,omitempty"` Version string `json:"version,omitempty"` TLSVersion string `json:"tls_version,omitempty"` TLSCipher string `json:"tls_cipher_suite,omitempty"` TLSPeerCerts []*TLSPeerCert `json:"tls_peer_certs,omitempty"` TLSFirst bool `json:"tls_first,omitempty"` AuthorizedUser string `json:"authorized_user,omitempty"` Account string `json:"account,omitempty"` Subs []string `json:"subscriptions_list,omitempty"` SubsDetail []SubDetail `json:"subscriptions_list_detail,omitempty"` JWT string `json:"jwt,omitempty"` IssuerKey string `json:"issuer_key,omitempty"` NameTag string `json:"name_tag,omitempty"` Tags jwt.TagList `json:"tags,omitempty"` MQTTClient string `json:"mqtt_client,omitempty"` // This is the MQTT client id // contains filtered or unexported fields }
ConnInfo has detailed information on a per connection basis.
type ConnInfos ¶
type ConnInfos []*ConnInfo
ConnInfos represents a connection info list. We use pointers since it will be sorted.
type ConnState ¶
type ConnState int
ConnState is for filtering states of connections. We will only have two, open and closed.
type ConnectEventMsg ¶
type ConnectEventMsg struct { TypedEvent Server ServerInfo `json:"server"` Client ClientInfo `json:"client"` }
ConnectEventMsg is sent when a new connection is made that is part of an account.
type Connz ¶
type Connz struct { ID string `json:"server_id"` Now time.Time `json:"now"` NumConns int `json:"num_connections"` Total int `json:"total"` Offset int `json:"offset"` Limit int `json:"limit"` Conns []*ConnInfo `json:"connections"` }
Connz represents detailed information on current client connections.
type ConnzEventOptions ¶
type ConnzEventOptions struct { ConnzOptions EventFilterOptions }
In the context of system events, ConnzEventOptions are options passed to Connz
type ConnzOptions ¶
type ConnzOptions struct { // Sort indicates how the results will be sorted. Check SortOpt for possible values. // Only the sort by connection ID (ByCid) is ascending, all others are descending. Sort SortOpt `json:"sort"` // Username indicates if user names should be included in the results. Username bool `json:"auth"` // Subscriptions indicates if subscriptions should be included in the results. Subscriptions bool `json:"subscriptions"` // SubscriptionsDetail indicates if subscription details should be included in the results SubscriptionsDetail bool `json:"subscriptions_detail"` // Offset is used for pagination. Connz() only returns connections starting at this // offset from the global results. Offset int `json:"offset"` // Limit is the maximum number of connections that should be returned by Connz(). Limit int `json:"limit"` // Filter for this explicit client connection. CID uint64 `json:"cid"` // Filter for this explicit client connection based on the MQTT client ID MQTTClient string `json:"mqtt_client"` // Filter by connection state. State ConnState `json:"state"` // Filter by username. User string `json:"user"` // Filter by account. Account string `json:"acc"` // Filter by subject interest FilterSubject string `json:"filter_subject"` }
ConnzOptions are the options passed to Connz()
type ConsumerAction ¶
type ConsumerAction int
const ( ActionCreateOrUpdate ConsumerAction = iota ActionUpdate ActionCreate )
func (ConsumerAction) MarshalJSON ¶
func (a ConsumerAction) MarshalJSON() ([]byte, error)
func (ConsumerAction) String ¶
func (a ConsumerAction) String() string
func (*ConsumerAction) UnmarshalJSON ¶
func (a *ConsumerAction) UnmarshalJSON(data []byte) error
type ConsumerConfig ¶
type ConsumerConfig struct { // Durable is deprecated. All consumers should have names, picked by clients. Durable string `json:"durable_name,omitempty"` Name string `json:"name,omitempty"` Description string `json:"description,omitempty"` DeliverPolicy DeliverPolicy `json:"deliver_policy"` OptStartSeq uint64 `json:"opt_start_seq,omitempty"` OptStartTime *time.Time `json:"opt_start_time,omitempty"` AckPolicy AckPolicy `json:"ack_policy"` AckWait time.Duration `json:"ack_wait,omitempty"` MaxDeliver int `json:"max_deliver,omitempty"` BackOff []time.Duration `json:"backoff,omitempty"` FilterSubject string `json:"filter_subject,omitempty"` FilterSubjects []string `json:"filter_subjects,omitempty"` ReplayPolicy ReplayPolicy `json:"replay_policy"` RateLimit uint64 `json:"rate_limit_bps,omitempty"` // Bits per sec SampleFrequency string `json:"sample_freq,omitempty"` MaxWaiting int `json:"max_waiting,omitempty"` MaxAckPending int `json:"max_ack_pending,omitempty"` Heartbeat time.Duration `json:"idle_heartbeat,omitempty"` FlowControl bool `json:"flow_control,omitempty"` HeadersOnly bool `json:"headers_only,omitempty"` // Pull based options. MaxRequestBatch int `json:"max_batch,omitempty"` MaxRequestExpires time.Duration `json:"max_expires,omitempty"` MaxRequestMaxBytes int `json:"max_bytes,omitempty"` // Push based consumers. DeliverSubject string `json:"deliver_subject,omitempty"` DeliverGroup string `json:"deliver_group,omitempty"` // Ephemeral inactivity threshold. InactiveThreshold time.Duration `json:"inactive_threshold,omitempty"` // Generally inherited by parent stream and other markers, now can be configured directly. Replicas int `json:"num_replicas"` // Force memory storage. MemoryStorage bool `json:"mem_storage,omitempty"` // Don't add to general clients. Direct bool `json:"direct,omitempty"` // Metadata is additional metadata for the Consumer. Metadata map[string]string `json:"metadata,omitempty"` // PauseUntil is for suspending the consumer until the deadline. PauseUntil *time.Time `json:"pause_until,omitempty"` }
type ConsumerInfo ¶
type ConsumerInfo struct { Stream string `json:"stream_name"` Name string `json:"name"` Created time.Time `json:"created"` Config *ConsumerConfig `json:"config,omitempty"` Delivered SequenceInfo `json:"delivered"` AckFloor SequenceInfo `json:"ack_floor"` NumAckPending int `json:"num_ack_pending"` NumRedelivered int `json:"num_redelivered"` NumWaiting int `json:"num_waiting"` NumPending uint64 `json:"num_pending"` Cluster *ClusterInfo `json:"cluster,omitempty"` PushBound bool `json:"push_bound,omitempty"` Paused bool `json:"paused,omitempty"` PauseRemaining time.Duration `json:"pause_remaining,omitempty"` // TimeStamp indicates when the info was gathered TimeStamp time.Time `json:"ts"` }
type ConsumerNakOptions ¶
ConsumerNakOptions is for optional NAK values, e.g. delay.
type ConsumerState ¶
type ConsumerState struct { // Delivered keeps track of last delivered sequence numbers for both the stream and the consumer. Delivered SequencePair `json:"delivered"` // AckFloor keeps track of the ack floors for both the stream and the consumer. AckFloor SequencePair `json:"ack_floor"` // These are both in stream sequence context. // Pending is for all messages pending and the timestamp for the delivered time. // This will only be present when the AckPolicy is ExplicitAck. Pending map[uint64]*Pending `json:"pending,omitempty"` // This is for messages that have been redelivered, so count > 1. Redelivered map[uint64]uint64 `json:"redelivered,omitempty"` }
ConsumerState represents a stored state for a consumer.
type ConsumerStore ¶
type ConsumerStore interface { SetStarting(sseq uint64) error HasState() bool UpdateDelivered(dseq, sseq, dc uint64, ts int64) error UpdateAcks(dseq, sseq uint64) error UpdateConfig(cfg *ConsumerConfig) error Update(*ConsumerState) error State() (*ConsumerState, error) BorrowState() (*ConsumerState, error) EncodedState() ([]byte, error) Type() StorageType Stop() error Delete() error StreamDelete() error }
ConsumerStore stores state on consumers for streams.
type CreateConsumerRequest ¶
type CreateConsumerRequest struct { Stream string `json:"stream_name"` Config ConsumerConfig `json:"config"` Action ConsumerAction `json:"action"` }
type DeleteBlock ¶
Interface for DeleteBlock. These will be of three types: 1. AVL seqsets. 2. Run length encoding of a deleted range. 3. Legacy []uint64
type DeleteBlocks ¶
type DeleteBlocks []DeleteBlock
func (DeleteBlocks) NumDeleted ¶
func (dbs DeleteBlocks) NumDeleted() (total uint64)
type DeleteRange ¶
DeleteRange is a run length encoded delete range.
func (*DeleteRange) Range ¶
func (dr *DeleteRange) Range(f func(uint64) bool)
Range will range over all the deleted sequences represented by this block.
func (*DeleteRange) State ¶
func (dr *DeleteRange) State() (first, last, num uint64)
type DeleteSlice ¶
type DeleteSlice []uint64
Legacy []uint64
func (DeleteSlice) Range ¶
func (ds DeleteSlice) Range(f func(uint64) bool)
Range will range over all the deleted sequences represented by this []uint64.
func (DeleteSlice) State ¶
func (ds DeleteSlice) State() (first, last, num uint64)
type DeliverPolicy ¶
type DeliverPolicy int
DeliverPolicy determines how the consumer should select the first message to deliver.
const ( // DeliverAll will be the default so can be omitted from the request. DeliverAll DeliverPolicy = iota // DeliverLast will start the consumer with the last sequence received. DeliverLast // DeliverNew will only deliver new messages that are sent after the consumer is created. DeliverNew // DeliverByStartSequence will look for a defined starting sequence to start. DeliverByStartSequence // DeliverByStartTime will select the first messsage with a timestamp >= to StartTime. DeliverByStartTime // DeliverLastPerSubject will start the consumer with the last message for all subjects received. DeliverLastPerSubject )
func (DeliverPolicy) MarshalJSON ¶
func (p DeliverPolicy) MarshalJSON() ([]byte, error)
func (DeliverPolicy) String ¶
func (dp DeliverPolicy) String() string
func (*DeliverPolicy) UnmarshalJSON ¶
func (p *DeliverPolicy) UnmarshalJSON(data []byte) error
type DenyRules ¶
type DenyRules struct { Exports []string `json:"exports,omitempty"` Imports []string `json:"imports,omitempty"` }
DenyRules Contains lists of subjects not allowed to be imported/exported
type DirAccResolver ¶
type DirAccResolver struct { *DirJWTStore *Server // contains filtered or unexported fields }
Resolver based on nats for synchronization and backing directory for storage.
func NewDirAccResolver ¶
func NewDirAccResolver(path string, limit int64, syncInterval time.Duration, delete deleteType, opts ...DirResOption) (*DirAccResolver, error)
func (*DirAccResolver) IsTrackingUpdate ¶
func (dr *DirAccResolver) IsTrackingUpdate() bool
func (*DirAccResolver) Reload ¶
func (dr *DirAccResolver) Reload() error
func (*DirAccResolver) Start ¶
func (dr *DirAccResolver) Start(s *Server) error
func (*DirAccResolver) Store ¶
func (dr *DirAccResolver) Store(name, jwt string) error
type DirJWTStore ¶
DirJWTStore implements the JWT Store interface, keeping JWTs in an optionally sharded directory structure
func NewDirJWTStore ¶
func NewDirJWTStore(dirPath string, shard bool, create bool, _ ...dirJWTStoreOption) (*DirJWTStore, error)
Creates a directory based jwt store. Operates on files only, does NOT watch directories and files.
func NewExpiringDirJWTStore ¶
func NewExpiringDirJWTStore(dirPath string, shard bool, create bool, delete deleteType, expireCheck time.Duration, limit int64, evictOnLimit bool, ttl time.Duration, changeNotification JWTChanged, _ ...dirJWTStoreOption) (*DirJWTStore, error)
Creates a directory based jwt store.
When ttl is set deletion of file is based on it and not on the jwt expiration To completely disable expiration (including expiration in jwt) set ttl to max duration time.Duration(math.MaxInt64)
limit defines how many files are allowed at any given time. Set to math.MaxInt64 to disable. evictOnLimit determines the behavior once limit is reached. * true - Evict based on lru strategy * false - return an error
func NewImmutableDirJWTStore ¶
func NewImmutableDirJWTStore(dirPath string, shard bool, _ ...dirJWTStoreOption) (*DirJWTStore, error)
Creates a directory based jwt store. Reads files only, does NOT watch directories and files.
func (*DirJWTStore) Close ¶
func (store *DirJWTStore) Close()
func (*DirJWTStore) Hash ¶
func (store *DirJWTStore) Hash() [sha256.Size]byte
returns a hash representing all indexed jwt
func (*DirJWTStore) IsReadOnly ¶
func (store *DirJWTStore) IsReadOnly() bool
func (*DirJWTStore) Merge ¶
func (store *DirJWTStore) Merge(pack string) error
Merge takes the JWTs from package and adds them to the store Merge is destructive in the sense that it doesn't check if the JWT is newer or anything like that.
func (*DirJWTStore) Pack ¶
func (store *DirJWTStore) Pack(maxJWTs int) (string, error)
Pack up to maxJWTs into a package
func (*DirJWTStore) PackWalk ¶
func (store *DirJWTStore) PackWalk(maxJWTs int, cb func(partialPackMsg string)) error
Pack up to maxJWTs into a message and invoke callback with it
func (*DirJWTStore) Reload ¶
func (store *DirJWTStore) Reload() error
type DirResOption ¶
type DirResOption func(s *DirAccResolver) error
func FetchTimeout ¶
func FetchTimeout(to time.Duration) DirResOption
limits the amount of time spent waiting for an account fetch to complete
type DiscardPolicy ¶
type DiscardPolicy int
Discard Policy determines how we proceed when limits of messages or bytes are hit. The default, DicscardOld will remove older messages. DiscardNew will fail to store the new message.
func (DiscardPolicy) MarshalJSON ¶
func (dp DiscardPolicy) MarshalJSON() ([]byte, error)
func (DiscardPolicy) String ¶
func (dp DiscardPolicy) String() string
func (*DiscardPolicy) UnmarshalJSON ¶
func (dp *DiscardPolicy) UnmarshalJSON(data []byte) error
type DisconnectEventMsg ¶
type DisconnectEventMsg struct { TypedEvent Server ServerInfo `json:"server"` Client ClientInfo `json:"client"` Sent DataStats `json:"sent"` Received DataStats `json:"received"` Reason string `json:"reason"` }
DisconnectEventMsg is sent when a new connection previously defined from a ConnectEventMsg is closed.
type ErrorIdentifier ¶
type ErrorIdentifier uint16
const ( // JSAccountResourcesExceededErr resource limits exceeded for account JSAccountResourcesExceededErr ErrorIdentifier = 10002 // JSBadRequestErr bad request JSBadRequestErr ErrorIdentifier = 10003 // JSClusterIncompleteErr incomplete results JSClusterIncompleteErr ErrorIdentifier = 10004 // JSClusterNoPeersErrF Error causing no peers to be available ({err}) JSClusterNoPeersErrF ErrorIdentifier = 10005 // JSClusterNotActiveErr JetStream not in clustered mode JSClusterNotActiveErr ErrorIdentifier = 10006 // JSClusterNotAssignedErr JetStream cluster not assigned to this server JSClusterNotAssignedErr ErrorIdentifier = 10007 // JSClusterNotAvailErr JetStream system temporarily unavailable JSClusterNotAvailErr ErrorIdentifier = 10008 // JSClusterNotLeaderErr JetStream cluster can not handle request JSClusterNotLeaderErr ErrorIdentifier = 10009 // JSClusterPeerNotMemberErr peer not a member JSClusterPeerNotMemberErr ErrorIdentifier = 10040 // JSClusterRequiredErr JetStream clustering support required JSClusterRequiredErr ErrorIdentifier = 10010 // JSClusterServerNotMemberErr server is not a member of the cluster JSClusterServerNotMemberErr ErrorIdentifier = 10044 // JSClusterTagsErr tags placement not supported for operation JSClusterTagsErr ErrorIdentifier = 10011 // JSClusterUnSupportFeatureErr not currently supported in clustered mode JSClusterUnSupportFeatureErr ErrorIdentifier = 10036 // JSConsumerAlreadyExists action CREATE is used for a existing consumer with a different config (consumer already exists) JSConsumerAlreadyExists ErrorIdentifier = 10148 // JSConsumerBadDurableNameErr durable name can not contain '.', '*', '>' JSConsumerBadDurableNameErr ErrorIdentifier = 10103 // JSConsumerConfigRequiredErr consumer config required JSConsumerConfigRequiredErr ErrorIdentifier = 10078 // JSConsumerCreateDurableAndNameMismatch Consumer Durable and Name have to be equal if both are provided JSConsumerCreateDurableAndNameMismatch ErrorIdentifier = 10132 // JSConsumerCreateErrF General consumer creation failure string ({err}) JSConsumerCreateErrF ErrorIdentifier = 10012 // JSConsumerCreateFilterSubjectMismatchErr Consumer create request did not match filtered subject from create subject JSConsumerCreateFilterSubjectMismatchErr ErrorIdentifier = 10131 // JSConsumerDeliverCycleErr consumer deliver subject forms a cycle JSConsumerDeliverCycleErr ErrorIdentifier = 10081 // JSConsumerDeliverToWildcardsErr consumer deliver subject has wildcards JSConsumerDeliverToWildcardsErr ErrorIdentifier = 10079 // JSConsumerDescriptionTooLongErrF consumer description is too long, maximum allowed is {max} JSConsumerDescriptionTooLongErrF ErrorIdentifier = 10107 // JSConsumerDirectRequiresEphemeralErr consumer direct requires an ephemeral consumer JSConsumerDirectRequiresEphemeralErr ErrorIdentifier = 10091 // JSConsumerDirectRequiresPushErr consumer direct requires a push based consumer JSConsumerDirectRequiresPushErr ErrorIdentifier = 10090 // JSConsumerDoesNotExist action UPDATE is used for a nonexisting consumer (consumer does not exist) JSConsumerDoesNotExist ErrorIdentifier = 10149 // JSConsumerDuplicateFilterSubjects consumer cannot have both FilterSubject and FilterSubjects specified JSConsumerDuplicateFilterSubjects ErrorIdentifier = 10136 // JSConsumerDurableNameNotInSubjectErr consumer expected to be durable but no durable name set in subject JSConsumerDurableNameNotInSubjectErr ErrorIdentifier = 10016 // JSConsumerDurableNameNotMatchSubjectErr consumer name in subject does not match durable name in request JSConsumerDurableNameNotMatchSubjectErr ErrorIdentifier = 10017 // JSConsumerDurableNameNotSetErr consumer expected to be durable but a durable name was not set JSConsumerDurableNameNotSetErr ErrorIdentifier = 10018 // JSConsumerEmptyFilter consumer filter in FilterSubjects cannot be empty JSConsumerEmptyFilter ErrorIdentifier = 10139 // JSConsumerEphemeralWithDurableInSubjectErr consumer expected to be ephemeral but detected a durable name set in subject JSConsumerEphemeralWithDurableInSubjectErr ErrorIdentifier = 10019 // JSConsumerEphemeralWithDurableNameErr consumer expected to be ephemeral but a durable name was set in request JSConsumerEphemeralWithDurableNameErr ErrorIdentifier = 10020 // JSConsumerExistingActiveErr consumer already exists and is still active JSConsumerExistingActiveErr ErrorIdentifier = 10105 // JSConsumerFCRequiresPushErr consumer flow control requires a push based consumer JSConsumerFCRequiresPushErr ErrorIdentifier = 10089 // JSConsumerFilterNotSubsetErr consumer filter subject is not a valid subset of the interest subjects JSConsumerFilterNotSubsetErr ErrorIdentifier = 10093 // JSConsumerHBRequiresPushErr consumer idle heartbeat requires a push based consumer JSConsumerHBRequiresPushErr ErrorIdentifier = 10088 // JSConsumerInactiveThresholdExcess consumer inactive threshold exceeds system limit of {limit} JSConsumerInactiveThresholdExcess ErrorIdentifier = 10153 // JSConsumerInvalidDeliverSubject invalid push consumer deliver subject JSConsumerInvalidDeliverSubject ErrorIdentifier = 10112 // JSConsumerInvalidPolicyErrF Generic delivery policy error ({err}) JSConsumerInvalidPolicyErrF ErrorIdentifier = 10094 // JSConsumerInvalidSamplingErrF failed to parse consumer sampling configuration: {err} JSConsumerInvalidSamplingErrF ErrorIdentifier = 10095 // JSConsumerMaxDeliverBackoffErr max deliver is required to be > length of backoff values JSConsumerMaxDeliverBackoffErr ErrorIdentifier = 10116 // JSConsumerMaxPendingAckExcessErrF consumer max ack pending exceeds system limit of {limit} JSConsumerMaxPendingAckExcessErrF ErrorIdentifier = 10121 // JSConsumerMaxPendingAckPolicyRequiredErr consumer requires ack policy for max ack pending JSConsumerMaxPendingAckPolicyRequiredErr ErrorIdentifier = 10082 // JSConsumerMaxRequestBatchExceededF consumer max request batch exceeds server limit of {limit} JSConsumerMaxRequestBatchExceededF ErrorIdentifier = 10125 // JSConsumerMaxRequestBatchNegativeErr consumer max request batch needs to be > 0 JSConsumerMaxRequestBatchNegativeErr ErrorIdentifier = 10114 // JSConsumerMaxRequestExpiresToSmall consumer max request expires needs to be >= 1ms JSConsumerMaxRequestExpiresToSmall ErrorIdentifier = 10115 // JSConsumerMaxWaitingNegativeErr consumer max waiting needs to be positive JSConsumerMaxWaitingNegativeErr ErrorIdentifier = 10087 // JSConsumerMetadataLengthErrF consumer metadata exceeds maximum size of {limit} JSConsumerMetadataLengthErrF ErrorIdentifier = 10135 // JSConsumerMultipleFiltersNotAllowed consumer with multiple subject filters cannot use subject based API JSConsumerMultipleFiltersNotAllowed ErrorIdentifier = 10137 // JSConsumerNameContainsPathSeparatorsErr Consumer name can not contain path separators JSConsumerNameContainsPathSeparatorsErr ErrorIdentifier = 10127 // JSConsumerNameExistErr consumer name already in use JSConsumerNameExistErr ErrorIdentifier = 10013 // JSConsumerNameTooLongErrF consumer name is too long, maximum allowed is {max} JSConsumerNameTooLongErrF ErrorIdentifier = 10102 // JSConsumerNotFoundErr consumer not found JSConsumerNotFoundErr ErrorIdentifier = 10014 // JSConsumerOfflineErr consumer is offline JSConsumerOfflineErr ErrorIdentifier = 10119 // JSConsumerOnMappedErr consumer direct on a mapped consumer JSConsumerOnMappedErr ErrorIdentifier = 10092 // JSConsumerOverlappingSubjectFilters consumer subject filters cannot overlap JSConsumerOverlappingSubjectFilters ErrorIdentifier = 10138 // JSConsumerPullNotDurableErr consumer in pull mode requires a durable name JSConsumerPullNotDurableErr ErrorIdentifier = 10085 // JSConsumerPullRequiresAckErr consumer in pull mode requires ack policy JSConsumerPullRequiresAckErr ErrorIdentifier = 10084 // JSConsumerPullWithRateLimitErr consumer in pull mode can not have rate limit set JSConsumerPullWithRateLimitErr ErrorIdentifier = 10086 // JSConsumerPushMaxWaitingErr consumer in push mode can not set max waiting JSConsumerPushMaxWaitingErr ErrorIdentifier = 10080 // JSConsumerReplacementWithDifferentNameErr consumer replacement durable config not the same JSConsumerReplacementWithDifferentNameErr ErrorIdentifier = 10106 // JSConsumerReplicasExceedsStream consumer config replica count exceeds parent stream JSConsumerReplicasExceedsStream ErrorIdentifier = 10126 // JSConsumerReplicasShouldMatchStream consumer config replicas must match interest retention stream's replicas JSConsumerReplicasShouldMatchStream ErrorIdentifier = 10134 // JSConsumerSmallHeartbeatErr consumer idle heartbeat needs to be >= 100ms JSConsumerSmallHeartbeatErr ErrorIdentifier = 10083 // JSConsumerStoreFailedErrF error creating store for consumer: {err} JSConsumerStoreFailedErrF ErrorIdentifier = 10104 // JSConsumerWQConsumerNotDeliverAllErr consumer must be deliver all on workqueue stream JSConsumerWQConsumerNotDeliverAllErr ErrorIdentifier = 10101 // JSConsumerWQConsumerNotUniqueErr filtered consumer not unique on workqueue stream JSConsumerWQConsumerNotUniqueErr ErrorIdentifier = 10100 // JSConsumerWQMultipleUnfilteredErr multiple non-filtered consumers not allowed on workqueue stream JSConsumerWQMultipleUnfilteredErr ErrorIdentifier = 10099 // JSConsumerWQRequiresExplicitAckErr workqueue stream requires explicit ack JSConsumerWQRequiresExplicitAckErr ErrorIdentifier = 10098 // JSConsumerWithFlowControlNeedsHeartbeats consumer with flow control also needs heartbeats JSConsumerWithFlowControlNeedsHeartbeats ErrorIdentifier = 10108 // JSInsufficientResourcesErr insufficient resources JSInsufficientResourcesErr ErrorIdentifier = 10023 // JSInvalidJSONErr invalid JSON JSInvalidJSONErr ErrorIdentifier = 10025 // JSMaximumConsumersLimitErr maximum consumers limit reached JSMaximumConsumersLimitErr ErrorIdentifier = 10026 // JSMaximumStreamsLimitErr maximum number of streams reached JSMaximumStreamsLimitErr ErrorIdentifier = 10027 // JSMemoryResourcesExceededErr insufficient memory resources available JSMemoryResourcesExceededErr ErrorIdentifier = 10028 // JSMirrorConsumerSetupFailedErrF generic mirror consumer setup failure string ({err}) JSMirrorConsumerSetupFailedErrF ErrorIdentifier = 10029 // JSMirrorInvalidStreamName mirrored stream name is invalid JSMirrorInvalidStreamName ErrorIdentifier = 10142 // JSMirrorInvalidSubjectFilter mirror subject filter is invalid JSMirrorInvalidSubjectFilter ErrorIdentifier = 10151 // JSMirrorMaxMessageSizeTooBigErr stream mirror must have max message size >= source JSMirrorMaxMessageSizeTooBigErr ErrorIdentifier = 10030 // JSMirrorMultipleFiltersNotAllowed mirror with multiple subject transforms cannot also have a single subject filter JSMirrorMultipleFiltersNotAllowed ErrorIdentifier = 10150 // JSMirrorOverlappingSubjectFilters mirror subject filters can not overlap JSMirrorOverlappingSubjectFilters ErrorIdentifier = 10152 // JSMirrorWithFirstSeqErr stream mirrors can not have first sequence configured JSMirrorWithFirstSeqErr ErrorIdentifier = 10143 // JSMirrorWithSourcesErr stream mirrors can not also contain other sources JSMirrorWithSourcesErr ErrorIdentifier = 10031 // JSMirrorWithStartSeqAndTimeErr stream mirrors can not have both start seq and start time configured JSMirrorWithStartSeqAndTimeErr ErrorIdentifier = 10032 // JSMirrorWithSubjectFiltersErr stream mirrors can not contain filtered subjects JSMirrorWithSubjectFiltersErr ErrorIdentifier = 10033 // JSMirrorWithSubjectsErr stream mirrors can not contain subjects JSMirrorWithSubjectsErr ErrorIdentifier = 10034 // JSNoAccountErr account not found JSNoAccountErr ErrorIdentifier = 10035 // JSNoLimitsErr no JetStream default or applicable tiered limit present JSNoLimitsErr ErrorIdentifier = 10120 // JSNoMessageFoundErr no message found JSNoMessageFoundErr ErrorIdentifier = 10037 // JSNotEmptyRequestErr expected an empty request payload JSNotEmptyRequestErr ErrorIdentifier = 10038 // JSNotEnabledErr JetStream not enabled JSNotEnabledErr ErrorIdentifier = 10076 // JSNotEnabledForAccountErr JetStream not enabled for account JSNotEnabledForAccountErr ErrorIdentifier = 10039 // JSPeerRemapErr peer remap failed JSPeerRemapErr ErrorIdentifier = 10075 // JSRaftGeneralErrF General RAFT error string ({err}) JSRaftGeneralErrF ErrorIdentifier = 10041 // JSReplicasCountCannotBeNegative replicas count cannot be negative JSReplicasCountCannotBeNegative ErrorIdentifier = 10133 // JSRestoreSubscribeFailedErrF JetStream unable to subscribe to restore snapshot {subject}: {err} JSRestoreSubscribeFailedErrF ErrorIdentifier = 10042 // JSSequenceNotFoundErrF sequence {seq} not found JSSequenceNotFoundErrF ErrorIdentifier = 10043 // JSSnapshotDeliverSubjectInvalidErr deliver subject not valid JSSnapshotDeliverSubjectInvalidErr ErrorIdentifier = 10015 // JSSourceConsumerSetupFailedErrF General source consumer setup failure string ({err}) JSSourceConsumerSetupFailedErrF ErrorIdentifier = 10045 // JSSourceDuplicateDetected source stream, filter and transform (plus external if present) must form a unique combination (duplicate source configuration detected) JSSourceDuplicateDetected ErrorIdentifier = 10140 // JSSourceInvalidStreamName sourced stream name is invalid JSSourceInvalidStreamName ErrorIdentifier = 10141 // JSSourceInvalidSubjectFilter source subject filter is invalid JSSourceInvalidSubjectFilter ErrorIdentifier = 10145 // JSSourceInvalidTransformDestination source transform destination is invalid JSSourceInvalidTransformDestination ErrorIdentifier = 10146 // JSSourceMaxMessageSizeTooBigErr stream source must have max message size >= target JSSourceMaxMessageSizeTooBigErr ErrorIdentifier = 10046 // JSSourceMultipleFiltersNotAllowed source with multiple subject transforms cannot also have a single subject filter JSSourceMultipleFiltersNotAllowed ErrorIdentifier = 10144 // JSSourceOverlappingSubjectFilters source filters can not overlap JSSourceOverlappingSubjectFilters ErrorIdentifier = 10147 // JSStorageResourcesExceededErr insufficient storage resources available JSStorageResourcesExceededErr ErrorIdentifier = 10047 // JSStreamAssignmentErrF Generic stream assignment error string ({err}) JSStreamAssignmentErrF ErrorIdentifier = 10048 // JSStreamCreateErrF Generic stream creation error string ({err}) JSStreamCreateErrF ErrorIdentifier = 10049 // JSStreamDeleteErrF General stream deletion error string ({err}) JSStreamDeleteErrF ErrorIdentifier = 10050 // JSStreamExternalApiOverlapErrF stream external api prefix {prefix} must not overlap with {subject} JSStreamExternalApiOverlapErrF ErrorIdentifier = 10021 // JSStreamExternalDelPrefixOverlapsErrF stream external delivery prefix {prefix} overlaps with stream subject {subject} JSStreamExternalDelPrefixOverlapsErrF ErrorIdentifier = 10022 // JSStreamGeneralErrorF General stream failure string ({err}) JSStreamGeneralErrorF ErrorIdentifier = 10051 // JSStreamHeaderExceedsMaximumErr header size exceeds maximum allowed of 64k JSStreamHeaderExceedsMaximumErr ErrorIdentifier = 10097 // JSStreamInfoMaxSubjectsErr subject details would exceed maximum allowed JSStreamInfoMaxSubjectsErr ErrorIdentifier = 10117 // JSStreamInvalidConfigF Stream configuration validation error string ({err}) JSStreamInvalidConfigF ErrorIdentifier = 10052 // JSStreamInvalidErr stream not valid JSStreamInvalidErr ErrorIdentifier = 10096 // JSStreamInvalidExternalDeliverySubjErrF stream external delivery prefix {prefix} must not contain wildcards JSStreamInvalidExternalDeliverySubjErrF ErrorIdentifier = 10024 // JSStreamLimitsErrF General stream limits exceeded error string ({err}) JSStreamLimitsErrF ErrorIdentifier = 10053 // JSStreamMaxBytesRequired account requires a stream config to have max bytes set JSStreamMaxBytesRequired ErrorIdentifier = 10113 // JSStreamMaxStreamBytesExceeded stream max bytes exceeds account limit max stream bytes JSStreamMaxStreamBytesExceeded ErrorIdentifier = 10122 // JSStreamMessageExceedsMaximumErr message size exceeds maximum allowed JSStreamMessageExceedsMaximumErr ErrorIdentifier = 10054 // JSStreamMirrorNotUpdatableErr stream mirror configuration can not be updated JSStreamMirrorNotUpdatableErr ErrorIdentifier = 10055 // JSStreamMismatchErr stream name in subject does not match request JSStreamMismatchErr ErrorIdentifier = 10056 // JSStreamMoveAndScaleErr can not move and scale a stream in a single update JSStreamMoveAndScaleErr ErrorIdentifier = 10123 // JSStreamMoveInProgressF stream move already in progress: {msg} JSStreamMoveInProgressF ErrorIdentifier = 10124 // JSStreamMoveNotInProgress stream move not in progress JSStreamMoveNotInProgress ErrorIdentifier = 10129 // JSStreamMsgDeleteFailedF Generic message deletion failure error string ({err}) JSStreamMsgDeleteFailedF ErrorIdentifier = 10057 // JSStreamNameContainsPathSeparatorsErr Stream name can not contain path separators JSStreamNameContainsPathSeparatorsErr ErrorIdentifier = 10128 // JSStreamNameExistErr stream name already in use with a different configuration JSStreamNameExistErr ErrorIdentifier = 10058 // JSStreamNameExistRestoreFailedErr stream name already in use, cannot restore JSStreamNameExistRestoreFailedErr ErrorIdentifier = 10130 // JSStreamNotFoundErr stream not found JSStreamNotFoundErr ErrorIdentifier = 10059 // JSStreamNotMatchErr expected stream does not match JSStreamNotMatchErr ErrorIdentifier = 10060 // JSStreamOfflineErr stream is offline JSStreamOfflineErr ErrorIdentifier = 10118 // JSStreamPurgeFailedF Generic stream purge failure error string ({err}) JSStreamPurgeFailedF ErrorIdentifier = 10110 // JSStreamReplicasNotSupportedErr replicas > 1 not supported in non-clustered mode JSStreamReplicasNotSupportedErr ErrorIdentifier = 10074 // JSStreamReplicasNotUpdatableErr Replicas configuration can not be updated JSStreamReplicasNotUpdatableErr ErrorIdentifier = 10061 // JSStreamRestoreErrF restore failed: {err} JSStreamRestoreErrF ErrorIdentifier = 10062 // JSStreamRollupFailedF Generic stream rollup failure error string ({err}) JSStreamRollupFailedF ErrorIdentifier = 10111 // JSStreamSealedErr invalid operation on sealed stream JSStreamSealedErr ErrorIdentifier = 10109 // JSStreamSequenceNotMatchErr expected stream sequence does not match JSStreamSequenceNotMatchErr ErrorIdentifier = 10063 // JSStreamSnapshotErrF snapshot failed: {err} JSStreamSnapshotErrF ErrorIdentifier = 10064 // JSStreamStoreFailedF Generic error when storing a message failed ({err}) JSStreamStoreFailedF ErrorIdentifier = 10077 // JSStreamSubjectOverlapErr subjects overlap with an existing stream JSStreamSubjectOverlapErr ErrorIdentifier = 10065 // JSStreamTemplateCreateErrF Generic template creation failed string ({err}) JSStreamTemplateCreateErrF ErrorIdentifier = 10066 // JSStreamTemplateDeleteErrF Generic stream template deletion failed error string ({err}) JSStreamTemplateDeleteErrF ErrorIdentifier = 10067 // JSStreamTemplateNotFoundErr template not found JSStreamTemplateNotFoundErr ErrorIdentifier = 10068 // JSStreamUpdateErrF Generic stream update error string ({err}) JSStreamUpdateErrF ErrorIdentifier = 10069 // JSStreamWrongLastMsgIDErrF wrong last msg ID: {id} JSStreamWrongLastMsgIDErrF ErrorIdentifier = 10070 // JSStreamWrongLastSequenceErrF wrong last sequence: {seq} JSStreamWrongLastSequenceErrF ErrorIdentifier = 10071 // JSTempStorageFailedErr JetStream unable to open temp storage for restore JSTempStorageFailedErr ErrorIdentifier = 10072 // JSTemplateNameNotMatchSubjectErr template name in subject does not match request JSTemplateNameNotMatchSubjectErr ErrorIdentifier = 10073 )
type ErrorOption ¶
type ErrorOption func(*errOpts)
ErrorOption configures a NATS Error helper
func Unless ¶
func Unless(err error) ErrorOption
Unless ensures that if err is a ApiErr that err will be returned rather than the one being created via the helper
type ErrorsData ¶
type ErrorsData struct { Constant string `json:"constant"` Code int `json:"code"` ErrCode uint16 `json:"error_code"` Description string `json:"description"` Comment string `json:"comment"` Help string `json:"help"` URL string `json:"url"` Deprecates string `json:"deprecates"` }
ErrorsData is the source data for generated errors as found in errors.json
type EventFilterOptions ¶
type EventFilterOptions struct { Name string `json:"server_name,omitempty"` // filter by server name Cluster string `json:"cluster,omitempty"` // filter by cluster name Host string `json:"host,omitempty"` // filter by host name Tags []string `json:"tags,omitempty"` // filter by tags (must match all tags) Domain string `json:"domain,omitempty"` // filter by JS domain }
Common filter options for system requests STATSZ VARZ SUBSZ CONNZ ROUTEZ GATEWAYZ LEAFZ
type ExtImport ¶
type ExtImport struct { jwt.Import Invalid bool `json:"invalid"` Tracking bool `json:"tracking"` TrackingHdr http.Header `json:"tracking_header,omitempty"` Latency *jwt.ServiceLatency `json:"latency,omitempty"` M1 *ServiceLatency `json:"m1,omitempty"` }
type ExtVrIssues ¶
type ExternalStream ¶
ExternalStream allows you to qualify access to a stream source in another account.
type FileConsumerInfo ¶
type FileConsumerInfo struct { Created time.Time Name string ConsumerConfig }
File ConsumerInfo is used for creating consumer stores.
type FileStoreConfig ¶
type FileStoreConfig struct { // Where the parent directory for all storage will be located. StoreDir string // BlockSize is the file block size. This also represents the maximum overhead size. BlockSize uint64 // CacheExpire is how long with no activity until we expire the cache. CacheExpire time.Duration // SyncInterval is how often we sync to disk in the background. SyncInterval time.Duration // SyncAlways is when the stream should sync all data writes. SyncAlways bool // AsyncFlush allows async flush to batch write operations. AsyncFlush bool // Cipher is the cipher to use when encrypting. Cipher StoreCipher // Compression is the algorithm to use when compressing. Compression StoreCompression // contains filtered or unexported fields }
type FileStreamInfo ¶
type FileStreamInfo struct { Created time.Time StreamConfig }
FileStreamInfo allows us to remember created time.
type GatewayInterestMode ¶
type GatewayInterestMode byte
GatewayInterestMode represents an account interest mode for a gateway connection
const ( // optimistic is the default mode where a cluster will send // to a gateway unless it is been told that there is no interest // (this is for plain subscribers only). Optimistic GatewayInterestMode = iota // transitioning is when a gateway has to send too many // no interest on subjects to the remote and decides that it is // now time to move to modeInterestOnly (this is on a per account // basis). Transitioning // interestOnly means that a cluster sends all it subscriptions // interest to the gateway, which in return does not send a message // unless it knows that there is explicit interest. InterestOnly )
GatewayInterestMode values
func (GatewayInterestMode) String ¶
func (im GatewayInterestMode) String() string
type GatewayOpts ¶
type GatewayOpts struct { Name string `json:"name"` Host string `json:"addr,omitempty"` Port int `json:"port,omitempty"` Username string `json:"-"` Password string `json:"-"` AuthTimeout float64 `json:"auth_timeout,omitempty"` TLSConfig *tls.Config `json:"-"` TLSTimeout float64 `json:"tls_timeout,omitempty"` TLSMap bool `json:"-"` TLSCheckKnownURLs bool `json:"-"` TLSPinnedCerts PinnedCertSet `json:"-"` Advertise string `json:"advertise,omitempty"` ConnectRetries int `json:"connect_retries,omitempty"` Gateways []*RemoteGatewayOpts `json:"gateways,omitempty"` RejectUnknown bool `json:"reject_unknown,omitempty"` // config got renamed to reject_unknown_cluster // contains filtered or unexported fields }
GatewayOpts are options for gateways. NOTE: This structure is no longer used for monitoring endpoints and json tags are deprecated and may be removed in the future.
type GatewayOptsVarz ¶
type GatewayOptsVarz struct { Name string `json:"name,omitempty"` Host string `json:"host,omitempty"` Port int `json:"port,omitempty"` AuthTimeout float64 `json:"auth_timeout,omitempty"` TLSTimeout float64 `json:"tls_timeout,omitempty"` TLSRequired bool `json:"tls_required,omitempty"` TLSVerify bool `json:"tls_verify,omitempty"` Advertise string `json:"advertise,omitempty"` ConnectRetries int `json:"connect_retries,omitempty"` Gateways []RemoteGatewayOptsVarz `json:"gateways,omitempty"` RejectUnknown bool `json:"reject_unknown,omitempty"` // config got renamed to reject_unknown_cluster }
GatewayOptsVarz contains monitoring gateway information
type GatewayStat ¶
type GatewayStat struct { ID uint64 `json:"gwid"` Name string `json:"name"` Sent DataStats `json:"sent"` Received DataStats `json:"received"` NumInbound int `json:"inbound_connections"` }
GatewayStat holds gateway statistics.
type Gatewayz ¶
type Gatewayz struct { ID string `json:"server_id"` Now time.Time `json:"now"` Name string `json:"name,omitempty"` Host string `json:"host,omitempty"` Port int `json:"port,omitempty"` OutboundGateways map[string]*RemoteGatewayz `json:"outbound_gateways"` InboundGateways map[string][]*RemoteGatewayz `json:"inbound_gateways"` }
Gatewayz represents detailed information on Gateways
type GatewayzEventOptions ¶
type GatewayzEventOptions struct { GatewayzOptions EventFilterOptions }
In the context of system events, GatewayzEventOptions are options passed to Gatewayz
type GatewayzOptions ¶
type GatewayzOptions struct { // Name will output only remote gateways with this name Name string `json:"name"` // Accounts indicates if accounts with its interest should be included in the results. Accounts bool `json:"accounts"` // AccountName will limit the list of accounts to that account name (makes Accounts implicit) AccountName string `json:"account_name"` }
GatewayzOptions are the options passed to Gatewayz()
type HealthStatus ¶
type HealthStatus struct { Status string `json:"status"` StatusCode int `json:"status_code,omitempty"` Error string `json:"error,omitempty"` Errors []HealthzError `json:"errors,omitempty"` }
type HealthZErrorType ¶
type HealthZErrorType int
const ( HealthzErrorConn HealthZErrorType = iota HealthzErrorBadRequest HealthzErrorJetStream HealthzErrorAccount HealthzErrorStream HealthzErrorConsumer )
func (HealthZErrorType) MarshalJSON ¶
func (t HealthZErrorType) MarshalJSON() ([]byte, error)
func (HealthZErrorType) String ¶
func (t HealthZErrorType) String() string
func (*HealthZErrorType) UnmarshalJSON ¶
func (t *HealthZErrorType) UnmarshalJSON(data []byte) error
type HealthzError ¶
type HealthzError struct { Type HealthZErrorType `json:"type"` Account string `json:"account,omitempty"` Stream string `json:"stream,omitempty"` Consumer string `json:"consumer,omitempty"` Error string `json:"error,omitempty"` }
type HealthzEventOptions ¶
type HealthzEventOptions struct { HealthzOptions EventFilterOptions }
In the context of system events, HealthzEventOptions are options passed to Healthz
type HealthzOptions ¶
type HealthzOptions struct { // Deprecated: Use JSEnabledOnly instead JSEnabled bool `json:"js-enabled,omitempty"` JSEnabledOnly bool `json:"js-enabled-only,omitempty"` JSServerOnly bool `json:"js-server-only,omitempty"` Account string `json:"account,omitempty"` Stream string `json:"stream,omitempty"` Consumer string `json:"consumer,omitempty"` Details bool `json:"details,omitempty"` }
HealthzOptions are options passed to Healthz
type Info ¶
type Info struct { ID string `json:"server_id"` Name string `json:"server_name"` Version string `json:"version"` Proto int `json:"proto"` GitCommit string `json:"git_commit,omitempty"` GoVersion string `json:"go"` Host string `json:"host"` Port int `json:"port"` Headers bool `json:"headers"` AuthRequired bool `json:"auth_required,omitempty"` TLSRequired bool `json:"tls_required,omitempty"` TLSVerify bool `json:"tls_verify,omitempty"` TLSAvailable bool `json:"tls_available,omitempty"` MaxPayload int32 `json:"max_payload"` JetStream bool `json:"jetstream,omitempty"` IP string `json:"ip,omitempty"` CID uint64 `json:"client_id,omitempty"` ClientIP string `json:"client_ip,omitempty"` Nonce string `json:"nonce,omitempty"` Cluster string `json:"cluster,omitempty"` Dynamic bool `json:"cluster_dynamic,omitempty"` Domain string `json:"domain,omitempty"` ClientConnectURLs []string `json:"connect_urls,omitempty"` // Contains URLs a client can connect to. WSConnectURLs []string `json:"ws_connect_urls,omitempty"` // Contains URLs a ws client can connect to. LameDuckMode bool `json:"ldm,omitempty"` Compression string `json:"compression,omitempty"` // Route Specific Import *SubjectPermission `json:"import,omitempty"` Export *SubjectPermission `json:"export,omitempty"` LNOC bool `json:"lnoc,omitempty"` InfoOnConnect bool `json:"info_on_connect,omitempty"` // When true the server will respond to CONNECT with an INFO ConnectInfo bool `json:"connect_info,omitempty"` // When true this is the server INFO response to CONNECT RoutePoolSize int `json:"route_pool_size,omitempty"` RoutePoolIdx int `json:"route_pool_idx,omitempty"` RouteAccount string `json:"route_account,omitempty"` RouteAccReqID string `json:"route_acc_add_reqid,omitempty"` // Gateways Specific Gateway string `json:"gateway,omitempty"` // Name of the origin Gateway (sent by gateway's INFO) GatewayURLs []string `json:"gateway_urls,omitempty"` // Gateway URLs in the originating cluster (sent by gateway's INFO) GatewayURL string `json:"gateway_url,omitempty"` // Gateway URL on that server (sent by route's INFO) GatewayCmd byte `json:"gateway_cmd,omitempty"` // Command code for the receiving server to know what to do GatewayCmdPayload []byte `json:"gateway_cmd_payload,omitempty"` // Command payload when needed GatewayNRP bool `json:"gateway_nrp,omitempty"` // Uses new $GNR. prefix for mapped replies GatewayIOM bool `json:"gateway_iom,omitempty"` // Indicate that all accounts will be switched to InterestOnly mode "right away" // LeafNode Specific LeafNodeURLs []string `json:"leafnode_urls,omitempty"` // LeafNode URLs that the server can reconnect to. RemoteAccount string `json:"remote_account,omitempty"` // Lets the other side know the remote account that they bind to. XKey string `json:"xkey,omitempty"` // Public server's x25519 key. }
Info is the information sent to clients, routes, gateways, and leaf nodes, to help them understand information about this server.
type JSAPIAudit ¶
type JSAPIAudit struct { TypedEvent Server string `json:"server"` Client *ClientInfo `json:"client"` Subject string `json:"subject"` Request string `json:"request,omitempty"` Response string `json:"response"` Domain string `json:"domain,omitempty"` }
JSAPIAudit is an advisory about administrative actions taken on JetStream
type JSApiAccountInfoResponse ¶
type JSApiAccountInfoResponse struct { ApiResponse *JetStreamAccountStats }
JSApiAccountInfoResponse reports back information on jetstream for this account.
type JSApiAccountPurgeResponse ¶
type JSApiAccountPurgeResponse struct { ApiResponse Initiated bool `json:"initiated,omitempty"` }
JSApiAccountPurgeResponse is the response to a purge request in the meta group.
type JSApiConsumerCreateResponse ¶
type JSApiConsumerCreateResponse struct { ApiResponse *ConsumerInfo }
type JSApiConsumerDeleteResponse ¶
type JSApiConsumerDeleteResponse struct { ApiResponse Success bool `json:"success,omitempty"` }
type JSApiConsumerGetNextRequest ¶
type JSApiConsumerGetNextRequest struct { Expires time.Duration `json:"expires,omitempty"` Batch int `json:"batch,omitempty"` MaxBytes int `json:"max_bytes,omitempty"` NoWait bool `json:"no_wait,omitempty"` Heartbeat time.Duration `json:"idle_heartbeat,omitempty"` }
JSApiConsumerGetNextRequest is for getting next messages for pull based consumers.
type JSApiConsumerInfoResponse ¶
type JSApiConsumerInfoResponse struct { ApiResponse *ConsumerInfo }
type JSApiConsumerLeaderStepDownResponse ¶
type JSApiConsumerLeaderStepDownResponse struct { ApiResponse Success bool `json:"success,omitempty"` }
JSApiConsumerLeaderStepDownResponse is the response to a consumer leader stepdown request.
type JSApiConsumerListResponse ¶
type JSApiConsumerListResponse struct { ApiResponse ApiPaged Consumers []*ConsumerInfo `json:"consumers"` Missing []string `json:"missing,omitempty"` }
type JSApiConsumerNamesResponse ¶
type JSApiConsumerNamesResponse struct { ApiResponse ApiPaged Consumers []string `json:"consumers"` }
type JSApiConsumersRequest ¶
type JSApiConsumersRequest struct {
ApiPagedRequest
}
type JSApiLeaderStepDownResponse ¶
type JSApiLeaderStepDownResponse struct { ApiResponse Success bool `json:"success,omitempty"` }
JSApiLeaderStepDownResponse is the response to a meta leader stepdown request.
type JSApiLeaderStepdownRequest ¶
type JSApiLeaderStepdownRequest struct {
Placement *Placement `json:"placement,omitempty"`
}
JSApiLeaderStepdownRequest allows placement control over the meta leader placement.
type JSApiMetaServerRemoveRequest ¶
type JSApiMetaServerRemoveRequest struct { // Server name of the peer to be removed. Server string `json:"peer"` // Peer ID of the peer to be removed. If specified this is used // instead of the server name. Peer string `json:"peer_id,omitempty"` }
JSApiMetaServerRemoveRequest will remove a peer from the meta group.
type JSApiMetaServerRemoveResponse ¶
type JSApiMetaServerRemoveResponse struct { ApiResponse Success bool `json:"success,omitempty"` }
JSApiMetaServerRemoveResponse is the response to a peer removal request in the meta group.
type JSApiMetaServerStreamMoveRequest ¶
type JSApiMetaServerStreamMoveRequest struct { // Server name of the peer to be evacuated. Server string `json:"server,omitempty"` // Cluster the server is in Cluster string `json:"cluster,omitempty"` // Domain the sever is in Domain string `json:"domain,omitempty"` // Ephemeral placement tags for the move Tags []string `json:"tags,omitempty"` }
JSApiMetaServerStreamMoveRequest will move a stream on a server to another response to this will come as JSApiStreamUpdateResponse/JSApiStreamUpdateResponseType
type JSApiMsgDeleteRequest ¶
type JSApiMsgDeleteRequest struct { Seq uint64 `json:"seq"` NoErase bool `json:"no_erase,omitempty"` }
JSApiMsgDeleteRequest delete message request.
type JSApiMsgDeleteResponse ¶
type JSApiMsgDeleteResponse struct { ApiResponse Success bool `json:"success,omitempty"` }
type JSApiMsgGetRequest ¶
type JSApiMsgGetRequest struct { Seq uint64 `json:"seq,omitempty"` LastFor string `json:"last_by_subj,omitempty"` NextFor string `json:"next_by_subj,omitempty"` // Batch support. Used to request more then one msg at a time. // Can be used with simple starting seq, but also NextFor with wildcards. Batch int `json:"batch,omitempty"` // This will make sure we limit how much data we blast out. If not set we will // inherit the slow consumer default max setting of the server. Default is MAX_PENDING_SIZE. MaxBytes int `json:"max_bytes,omitempty"` // Multiple response support. Will get the last msgs matching the subjects. These can include wildcards. MultiLastFor []string `json:"multi_last,omitempty"` // Only return messages up to this sequence. If not set, will be last sequence for the stream. UpToSeq uint64 `json:"up_to_seq,omitempty"` // Only return messages up to this time. UpToTime *time.Time `json:"up_to_time,omitempty"` }
JSApiMsgGetRequest get a message request.
type JSApiMsgGetResponse ¶
type JSApiMsgGetResponse struct { ApiResponse Message *StoredMsg `json:"message,omitempty"` }
type JSApiStreamCreateResponse ¶
type JSApiStreamCreateResponse struct { ApiResponse *StreamInfo DidCreate bool `json:"did_create,omitempty"` }
JSApiStreamCreateResponse stream creation.
type JSApiStreamDeleteResponse ¶
type JSApiStreamDeleteResponse struct { ApiResponse Success bool `json:"success,omitempty"` }
JSApiStreamDeleteResponse stream removal.
type JSApiStreamInfoRequest ¶
type JSApiStreamInfoRequest struct { ApiPagedRequest DeletedDetails bool `json:"deleted_details,omitempty"` SubjectsFilter string `json:"subjects_filter,omitempty"` }
type JSApiStreamInfoResponse ¶
type JSApiStreamInfoResponse struct { ApiResponse ApiPaged *StreamInfo }
type JSApiStreamLeaderStepDownResponse ¶
type JSApiStreamLeaderStepDownResponse struct { ApiResponse Success bool `json:"success,omitempty"` }
JSApiStreamLeaderStepDownResponse is the response to a leader stepdown request.
type JSApiStreamListRequest ¶
type JSApiStreamListRequest struct { ApiPagedRequest // These are filters that can be applied to the list. Subject string `json:"subject,omitempty"` }
type JSApiStreamListResponse ¶
type JSApiStreamListResponse struct { ApiResponse ApiPaged Streams []*StreamInfo `json:"streams"` Missing []string `json:"missing,omitempty"` }
JSApiStreamListResponse list of detailed stream information. A nil request is valid and means all streams.
type JSApiStreamNamesRequest ¶
type JSApiStreamNamesRequest struct { ApiPagedRequest // These are filters that can be applied to the list. Subject string `json:"subject,omitempty"` }
type JSApiStreamNamesResponse ¶
type JSApiStreamNamesResponse struct { ApiResponse ApiPaged Streams []string `json:"streams"` }
JSApiStreamNamesResponse list of streams. A nil request is valid and means all streams.
type JSApiStreamPurgeRequest ¶
type JSApiStreamPurgeRequest struct { // Purge up to but not including sequence. Sequence uint64 `json:"seq,omitempty"` // Subject to match against messages for the purge command. Subject string `json:"filter,omitempty"` // Number of messages to keep. Keep uint64 `json:"keep,omitempty"` }
JSApiStreamPurgeRequest is optional request information to the purge API. Subject will filter the purge request to only messages that match the subject, which can have wildcards. Sequence will purge up to but not including this sequence and can be combined with subject filtering. Keep will specify how many messages to keep. This can also be combined with subject filtering. Note that Sequence and Keep are mutually exclusive, so both can not be set at the same time.
type JSApiStreamPurgeResponse ¶
type JSApiStreamPurgeResponse struct { ApiResponse Success bool `json:"success,omitempty"` Purged uint64 `json:"purged"` }
type JSApiStreamRemovePeerRequest ¶
type JSApiStreamRemovePeerRequest struct { // Server name of the peer to be removed. Peer string `json:"peer"` }
JSApiStreamRemovePeerRequest is the required remove peer request.
type JSApiStreamRemovePeerResponse ¶
type JSApiStreamRemovePeerResponse struct { ApiResponse Success bool `json:"success,omitempty"` }
JSApiStreamRemovePeerResponse is the response to a remove peer request.
type JSApiStreamRestoreRequest ¶
type JSApiStreamRestoreRequest struct { // Configuration of the given stream. Config StreamConfig `json:"config"` // Current State for the given stream. State StreamState `json:"state"` }
JSApiStreamRestoreRequest is the required restore request.
type JSApiStreamRestoreResponse ¶
type JSApiStreamRestoreResponse struct { ApiResponse // Subject to deliver the chunks to for the snapshot restore. DeliverSubject string `json:"deliver_subject"` }
JSApiStreamRestoreResponse is the direct response to the restore request.
type JSApiStreamSnapshotRequest ¶
type JSApiStreamSnapshotRequest struct { // Subject to deliver the chunks to for the snapshot. DeliverSubject string `json:"deliver_subject"` // Do not include consumers in the snapshot. NoConsumers bool `json:"no_consumers,omitempty"` // Optional chunk size preference. // Best to just let server select. ChunkSize int `json:"chunk_size,omitempty"` // Check all message's checksums prior to snapshot. CheckMsgs bool `json:"jsck,omitempty"` }
type JSApiStreamSnapshotResponse ¶
type JSApiStreamSnapshotResponse struct { ApiResponse // Configuration of the given stream. Config *StreamConfig `json:"config,omitempty"` // Current State for the given stream. State *StreamState `json:"state,omitempty"` }
JSApiStreamSnapshotResponse is the direct response to the snapshot request.
type JSApiStreamTemplateCreateResponse ¶
type JSApiStreamTemplateCreateResponse struct { ApiResponse *StreamTemplateInfo }
JSApiStreamTemplateCreateResponse for creating templates.
type JSApiStreamTemplateDeleteResponse ¶
type JSApiStreamTemplateDeleteResponse struct { ApiResponse Success bool `json:"success,omitempty"` }
type JSApiStreamTemplateInfoResponse ¶
type JSApiStreamTemplateInfoResponse struct { ApiResponse *StreamTemplateInfo }
JSApiStreamTemplateInfoResponse for information about stream templates.
type JSApiStreamTemplateNamesResponse ¶
type JSApiStreamTemplateNamesResponse struct { ApiResponse ApiPaged Templates []string `json:"streams"` }
JSApiStreamTemplateNamesResponse list of templates
type JSApiStreamTemplatesRequest ¶
type JSApiStreamTemplatesRequest struct {
ApiPagedRequest
}
type JSApiStreamUpdateResponse ¶
type JSApiStreamUpdateResponse struct { ApiResponse *StreamInfo }
JSApiStreamUpdateResponse for updating a stream.
type JSConsumerAckMetric ¶
type JSConsumerAckMetric struct { TypedEvent Stream string `json:"stream"` Consumer string `json:"consumer"` ConsumerSeq uint64 `json:"consumer_seq"` StreamSeq uint64 `json:"stream_seq"` Delay int64 `json:"ack_time"` Deliveries uint64 `json:"deliveries"` Domain string `json:"domain,omitempty"` }
JSConsumerAckMetric is a metric published when a user acknowledges a message, the number of these that will be published is dependent on SampleFrequency
type JSConsumerActionAdvisory ¶
type JSConsumerActionAdvisory struct { TypedEvent Stream string `json:"stream"` Consumer string `json:"consumer"` Action ActionAdvisoryType `json:"action"` Domain string `json:"domain,omitempty"` }
JSConsumerActionAdvisory indicates that a consumer was created or deleted
type JSConsumerDeliveryExceededAdvisory ¶
type JSConsumerDeliveryExceededAdvisory struct { TypedEvent Stream string `json:"stream"` Consumer string `json:"consumer"` StreamSeq uint64 `json:"stream_seq"` Deliveries uint64 `json:"deliveries"` Domain string `json:"domain,omitempty"` }
JSConsumerDeliveryExceededAdvisory is an advisory informing that a message hit its MaxDeliver threshold and so might be a candidate for DLQ handling
type JSConsumerDeliveryNakAdvisory ¶
type JSConsumerDeliveryNakAdvisory struct { TypedEvent Stream string `json:"stream"` Consumer string `json:"consumer"` ConsumerSeq uint64 `json:"consumer_seq"` StreamSeq uint64 `json:"stream_seq"` Deliveries uint64 `json:"deliveries"` Domain string `json:"domain,omitempty"` }
JSConsumerDeliveryNakAdvisory is an advisory informing that a message was naked by the consumer
type JSConsumerDeliveryTerminatedAdvisory ¶
type JSConsumerDeliveryTerminatedAdvisory struct { TypedEvent Stream string `json:"stream"` Consumer string `json:"consumer"` ConsumerSeq uint64 `json:"consumer_seq"` StreamSeq uint64 `json:"stream_seq"` Deliveries uint64 `json:"deliveries"` Reason string `json:"reason,omitempty"` Domain string `json:"domain,omitempty"` }
JSConsumerDeliveryTerminatedAdvisory is an advisory informing that a message was terminated by the consumer, so might be a candidate for DLQ handling
type JSConsumerLeaderElectedAdvisory ¶
type JSConsumerLeaderElectedAdvisory struct { TypedEvent Account string `json:"account,omitempty"` Stream string `json:"stream"` Consumer string `json:"consumer"` Leader string `json:"leader"` Replicas []*PeerInfo `json:"replicas"` Domain string `json:"domain,omitempty"` }
JSConsumerLeaderElectedAdvisory indicates that a consumer has elected a new leader.
type JSConsumerPauseAdvisory ¶
type JSConsumerPauseAdvisory struct { TypedEvent Stream string `json:"stream"` Consumer string `json:"consumer"` Paused bool `json:"paused"` PauseUntil time.Time `json:"pause_until,omitempty"` Domain string `json:"domain,omitempty"` }
JSConsumerPauseAdvisory indicates that a consumer was paused or unpaused
type JSConsumerQuorumLostAdvisory ¶
type JSConsumerQuorumLostAdvisory struct { TypedEvent Account string `json:"account,omitempty"` Stream string `json:"stream"` Consumer string `json:"consumer"` Replicas []*PeerInfo `json:"replicas"` Domain string `json:"domain,omitempty"` }
JSConsumerQuorumLostAdvisory indicates that a consumer has lost quorum and is stalled.
type JSDomainLeaderElectedAdvisory ¶
type JSDomainLeaderElectedAdvisory struct { TypedEvent Leader string `json:"leader"` Replicas []*PeerInfo `json:"replicas"` Cluster string `json:"cluster"` Domain string `json:"domain,omitempty"` }
JSClusterLeaderElectedAdvisory indicates that a domain has elected a new leader.
type JSInfo ¶
type JSInfo struct { ID string `json:"server_id"` Now time.Time `json:"now"` Disabled bool `json:"disabled,omitempty"` Config JetStreamConfig `json:"config,omitempty"` JetStreamStats Streams int `json:"streams"` Consumers int `json:"consumers"` Messages uint64 `json:"messages"` Bytes uint64 `json:"bytes"` Meta *MetaClusterInfo `json:"meta_cluster,omitempty"` // aggregate raft info AccountDetails []*AccountDetail `json:"account_details,omitempty"` }
JSInfo has detailed information on JetStream.
type JSLimitOpts ¶
type JSPubAckResponse ¶
JSPubAckResponse is a formal response to a publish operation.
func (*JSPubAckResponse) ToError ¶
func (r *JSPubAckResponse) ToError() error
ToError checks if the response has a error and if it does converts it to an error avoiding the pitfalls described by https://yourbasic.org/golang/gotcha-why-nil-error-not-equal-nil/
type JSRestoreCompleteAdvisory ¶
type JSRestoreCompleteAdvisory struct { TypedEvent Stream string `json:"stream"` Start time.Time `json:"start"` End time.Time `json:"end"` Bytes int64 `json:"bytes"` Client *ClientInfo `json:"client"` Domain string `json:"domain,omitempty"` }
JSRestoreCompleteAdvisory is an advisory sent after a snapshot is successfully started
type JSRestoreCreateAdvisory ¶
type JSRestoreCreateAdvisory struct { TypedEvent Stream string `json:"stream"` Client *ClientInfo `json:"client"` Domain string `json:"domain,omitempty"` }
JSRestoreCreateAdvisory is an advisory sent after a snapshot is successfully started
type JSServerOutOfSpaceAdvisory ¶
type JSServerOutOfSpaceAdvisory struct { TypedEvent Server string `json:"server"` ServerID string `json:"server_id"` Stream string `json:"stream,omitempty"` Cluster string `json:"cluster"` Domain string `json:"domain,omitempty"` }
JSServerOutOfSpaceAdvisory indicates that a stream has lost quorum and is stalled.
type JSServerRemovedAdvisory ¶
type JSServerRemovedAdvisory struct { TypedEvent Server string `json:"server"` ServerID string `json:"server_id"` Cluster string `json:"cluster"` Domain string `json:"domain,omitempty"` }
JSServerRemovedAdvisory indicates that a stream has lost quorum and is stalled.
type JSSnapshotCompleteAdvisory ¶
type JSSnapshotCompleteAdvisory struct { TypedEvent Stream string `json:"stream"` Start time.Time `json:"start"` End time.Time `json:"end"` Client *ClientInfo `json:"client"` Domain string `json:"domain,omitempty"` }
JSSnapshotCompleteAdvisory is an advisory sent after a snapshot is successfully started
type JSSnapshotCreateAdvisory ¶
type JSSnapshotCreateAdvisory struct { TypedEvent Stream string `json:"stream"` State StreamState `json:"state"` Client *ClientInfo `json:"client"` Domain string `json:"domain,omitempty"` }
JSSnapshotCreateAdvisory is an advisory sent after a snapshot is successfully started
type JSStreamActionAdvisory ¶
type JSStreamActionAdvisory struct { TypedEvent Stream string `json:"stream"` Action ActionAdvisoryType `json:"action"` Template string `json:"template,omitempty"` Domain string `json:"domain,omitempty"` }
JSStreamActionAdvisory indicates that a stream was created, edited or deleted
type JSStreamLeaderElectedAdvisory ¶
type JSStreamLeaderElectedAdvisory struct { TypedEvent Account string `json:"account,omitempty"` Stream string `json:"stream"` Leader string `json:"leader"` Replicas []*PeerInfo `json:"replicas"` Domain string `json:"domain,omitempty"` }
JSStreamLeaderElectedAdvisory indicates that a stream has elected a new leader.
type JSStreamQuorumLostAdvisory ¶
type JSStreamQuorumLostAdvisory struct { TypedEvent Account string `json:"account,omitempty"` Stream string `json:"stream"` Replicas []*PeerInfo `json:"replicas"` Domain string `json:"domain,omitempty"` }
JSStreamQuorumLostAdvisory indicates that a stream has lost quorum and is stalled.
type JSzOptions ¶
type JSzOptions struct { Account string `json:"account,omitempty"` Accounts bool `json:"accounts,omitempty"` Streams bool `json:"streams,omitempty"` Consumer bool `json:"consumer,omitempty"` Config bool `json:"config,omitempty"` LeaderOnly bool `json:"leader_only,omitempty"` Offset int `json:"offset,omitempty"` Limit int `json:"limit,omitempty"` RaftGroups bool `json:"raft,omitempty"` }
JSzOptions are options passed to Jsz
type JWTChanged ¶
type JWTChanged func(publicKey string)
JWTChanged functions are called when the store file watcher notices a JWT changed
type JetStreamAPIStats ¶
type JetStreamAccountLimits ¶
type JetStreamAccountLimits struct { MaxMemory int64 `json:"max_memory"` MaxStore int64 `json:"max_storage"` MaxStreams int `json:"max_streams"` MaxConsumers int `json:"max_consumers"` MaxAckPending int `json:"max_ack_pending"` MemoryMaxStreamBytes int64 `json:"memory_max_stream_bytes"` StoreMaxStreamBytes int64 `json:"storage_max_stream_bytes"` MaxBytesRequired bool `json:"max_bytes_required"` }
type JetStreamAccountStats ¶
type JetStreamAccountStats struct { JetStreamTier // in case tiers are used, reflects totals with limits not set Domain string `json:"domain,omitempty"` API JetStreamAPIStats `json:"api"` Tiers map[string]JetStreamTier `json:"tiers,omitempty"` // indexed by tier name }
JetStreamAccountStats returns current statistics about the account's JetStream usage.
type JetStreamConfig ¶
type JetStreamConfig struct { MaxMemory int64 `json:"max_memory"` MaxStore int64 `json:"max_storage"` StoreDir string `json:"store_dir,omitempty"` SyncInterval time.Duration `json:"sync_interval,omitempty"` SyncAlways bool `json:"sync_always,omitempty"` Domain string `json:"domain,omitempty"` CompressOK bool `json:"compress_ok,omitempty"` UniqueTag string `json:"unique_tag,omitempty"` }
JetStreamConfig determines this server's configuration. MaxMemory and MaxStore are in bytes.
type JetStreamStats ¶
type JetStreamStats struct { Memory uint64 `json:"memory"` Store uint64 `json:"storage"` ReservedMemory uint64 `json:"reserved_memory"` ReservedStore uint64 `json:"reserved_storage"` Accounts int `json:"accounts"` HAAssets int `json:"ha_assets"` API JetStreamAPIStats `json:"api"` }
Statistics about JetStream for this server.
type JetStreamTier ¶
type JetStreamVarz ¶
type JetStreamVarz struct { Config *JetStreamConfig `json:"config,omitempty"` Stats *JetStreamStats `json:"stats,omitempty"` Meta *MetaClusterInfo `json:"meta,omitempty"` }
JetStreamVarz contains basic runtime information about jetstream
type JszEventOptions ¶
type JszEventOptions struct { JSzOptions EventFilterOptions }
In the context of system events, JszEventOptions are options passed to Jsz
type KickClientReq ¶
type KickClientReq struct {
CID uint64 `json:"cid"`
}
type LDMClientReq ¶
type LDMClientReq struct {
CID uint64 `json:"cid"`
}
type LeafInfo ¶
type LeafInfo struct { Name string `json:"name"` IsSpoke bool `json:"is_spoke"` Account string `json:"account"` IP string `json:"ip"` Port int `json:"port"` RTT string `json:"rtt,omitempty"` InMsgs int64 `json:"in_msgs"` OutMsgs int64 `json:"out_msgs"` InBytes int64 `json:"in_bytes"` OutBytes int64 `json:"out_bytes"` NumSubs uint32 `json:"subscriptions"` Subs []string `json:"subscriptions_list,omitempty"` Compression string `json:"compression,omitempty"` }
LeafInfo has detailed information on each remote leafnode connection.
type LeafNodeOpts ¶
type LeafNodeOpts struct { Host string `json:"addr,omitempty"` Port int `json:"port,omitempty"` Username string `json:"-"` Password string `json:"-"` Nkey string `json:"-"` Account string `json:"-"` Users []*User `json:"-"` AuthTimeout float64 `json:"auth_timeout,omitempty"` TLSConfig *tls.Config `json:"-"` TLSTimeout float64 `json:"tls_timeout,omitempty"` TLSMap bool `json:"-"` TLSPinnedCerts PinnedCertSet `json:"-"` TLSHandshakeFirst bool `json:"-"` Advertise string `json:"-"` NoAdvertise bool `json:"-"` ReconnectInterval time.Duration `json:"-"` // Compression options Compression CompressionOpts `json:"-"` // For solicited connections to other clusters/superclusters. Remotes []*RemoteLeafOpts `json:"remotes,omitempty"` // This is the minimum version that is accepted for remote connections. // Note that since the server version in the CONNECT protocol was added // only starting at v2.8.0, any version below that will be rejected // (since empty version string in CONNECT would fail the "version at // least" test). MinVersion string // contains filtered or unexported fields }
LeafNodeOpts are options for a given server to accept leaf node connections and/or connect to a remote cluster.
type LeafNodeOptsVarz ¶
type LeafNodeOptsVarz struct { Host string `json:"host,omitempty"` Port int `json:"port,omitempty"` AuthTimeout float64 `json:"auth_timeout,omitempty"` TLSTimeout float64 `json:"tls_timeout,omitempty"` TLSRequired bool `json:"tls_required,omitempty"` TLSVerify bool `json:"tls_verify,omitempty"` Remotes []RemoteLeafOptsVarz `json:"remotes,omitempty"` TLSOCSPPeerVerify bool `json:"tls_ocsp_peer_verify,omitempty"` }
LeafNodeOptsVarz contains monitoring leaf node information
type Leafz ¶
type Leafz struct { ID string `json:"server_id"` Now time.Time `json:"now"` NumLeafs int `json:"leafnodes"` Leafs []*LeafInfo `json:"leafs"` }
Leafz represents detailed information on Leafnodes.
type LeafzEventOptions ¶
type LeafzEventOptions struct { LeafzOptions EventFilterOptions }
In the context of system events, LeafzEventOptions are options passed to Leafz
type LeafzOptions ¶
type LeafzOptions struct { // Subscriptions indicates that Leafz will return a leafnode's subscriptions Subscriptions bool `json:"subscriptions"` Account string `json:"account"` }
LeafzOptions are options passed to Leafz
type LocalCache ¶
type LocalCache struct {
// contains filtered or unexported fields
}
LocalCache is a local file implementation of OCSPResponseCache
func (*LocalCache) Config ¶
func (c *LocalCache) Config() *OCSPResponseCacheConfig
func (*LocalCache) Decompress ¶
func (c *LocalCache) Decompress(buf []byte) ([]byte, error)
func (*LocalCache) Delete ¶
func (c *LocalCache) Delete(key string, wasMiss bool, log *certidp.Log)
Delete removes a CA OCSP response from the OCSP peer cache matching the response fingerprint (a hash)
func (*LocalCache) Get ¶
func (c *LocalCache) Get(key string, log *certidp.Log) []byte
Get returns a CA OCSP response from the OCSP peer cache matching the response fingerprint (a hash)
func (*LocalCache) Online ¶
func (c *LocalCache) Online() bool
func (*LocalCache) Put ¶
Put captures a CA OCSP response to the OCSP peer cache indexed by response fingerprint (a hash)
func (*LocalCache) Start ¶
func (c *LocalCache) Start(s *Server)
Start initializes the configured OCSP peer cache, loads a saved cache from disk (if present), and initializes runtime statistics
func (*LocalCache) Stats ¶
func (c *LocalCache) Stats() *OCSPResponseCacheStats
func (*LocalCache) Stop ¶
func (c *LocalCache) Stop(s *Server)
func (*LocalCache) Type ¶
func (c *LocalCache) Type() string
type Logger ¶
type Logger interface { // Log a notice statement Noticef(format string, v ...interface{}) // Log a warning statement Warnf(format string, v ...interface{}) // Log a fatal error Fatalf(format string, v ...interface{}) // Log an error Errorf(format string, v ...interface{}) // Log a debug statement Debugf(format string, v ...interface{}) // Log a trace statement Tracef(format string, v ...interface{}) }
Logger interface of the NATS Server
type LostStreamData ¶
LostStreamData indicates msgs that have been lost.
type MQTTOpts ¶
type MQTTOpts struct { // The server will accept MQTT client connections on this hostname/IP. Host string // The server will accept MQTT client connections on this port. Port int // If no user name is provided when a client connects, will default to the // matching user from the global list of users in `Options.Users`. NoAuthUser string // Authentication section. If anything is configured in this section, // it will override the authorization configuration of regular clients. Username string Password string Token string // JetStream domain mqtt is supposed to pick up JsDomain string // Number of replicas for MQTT streams. // Negative or 0 value means that the server(s) will pick a replica // number based on the known size of the cluster (but capped at 3). // Note that if an account was already connected, the stream's replica // count is not modified. Use the NATS CLI to update the count if desired. StreamReplicas int // Number of replicas for MQTT consumers. // Negative or 0 value means that there is no override and the consumer // will have the same replica factor that the stream it belongs to. // If a value is specified, it will require to be lower than the stream // replicas count (lower than StreamReplicas if specified, but also lower // than the automatic value determined by cluster size). // Note that existing consumers are not modified. // // UPDATE: This is no longer used while messages stream has interest policy retention // which requires consumer replica count to match the parent stream. ConsumerReplicas int // Indicate if the consumers should be created with memory storage. // Note that existing consumers are not modified. ConsumerMemoryStorage bool // If specified will have the system auto-cleanup the consumers after being // inactive for the specified amount of time. ConsumerInactiveThreshold time.Duration // Timeout for the authentication process. AuthTimeout float64 // TLS configuration is required. TLSConfig *tls.Config // If true, map certificate values for authentication purposes. TLSMap bool // Timeout for the TLS handshake TLSTimeout float64 // Set of allowable certificates TLSPinnedCerts PinnedCertSet // AckWait is the amount of time after which a QoS 1 or 2 message sent to a // client is redelivered as a DUPLICATE if the server has not received the // PUBACK on the original Packet Identifier. The same value applies to // PubRel redelivery. The value has to be positive. Zero will cause the // server to use the default value (30 seconds). Note that changes to this // option is applied only to new MQTT subscriptions (or sessions for // PubRels). AckWait time.Duration // MaxAckPending is the amount of QoS 1 and 2 messages (combined) the server // can send to a subscription without receiving any PUBACK for those // messages. The valid range is [0..65535]. // // The total of subscriptions' MaxAckPending on a given session cannot // exceed 65535. Attempting to create a subscription that would bring the // total above the limit would result in the server returning 0x80 in the // SUBACK for this subscription. // // Due to how the NATS Server handles the MQTT "#" wildcard, each // subscription ending with "#" will use 2 times the MaxAckPending value. // Note that changes to this option is applied only to new subscriptions. MaxAckPending uint16 // contains filtered or unexported fields }
MQTTOpts are options for MQTT
type MQTTOptsVarz ¶
type MQTTOptsVarz struct { Host string `json:"host,omitempty"` Port int `json:"port,omitempty"` NoAuthUser string `json:"no_auth_user,omitempty"` AuthTimeout float64 `json:"auth_timeout,omitempty"` TLSMap bool `json:"tls_map,omitempty"` TLSTimeout float64 `json:"tls_timeout,omitempty"` TLSPinnedCerts []string `json:"tls_pinned_certs,omitempty"` JsDomain string `json:"js_domain,omitempty"` AckWait time.Duration `json:"ack_wait,omitempty"` MaxAckPending uint16 `json:"max_ack_pending,omitempty"` TLSOCSPPeerVerify bool `json:"tls_ocsp_peer_verify,omitempty"` }
MQTTOptsVarz contains monitoring MQTT information
type MapDest ¶
type MapDest struct { Subject string `json:"subject"` Weight uint8 `json:"weight"` Cluster string `json:"cluster,omitempty"` }
MapDest is for mapping published subjects for clients.
func NewMapDest ¶
type MemAccResolver ¶
type MemAccResolver struct {
// contains filtered or unexported fields
}
MemAccResolver is a memory only resolver. Mostly for testing.
func (*MemAccResolver) Fetch ¶
func (m *MemAccResolver) Fetch(name string) (string, error)
Fetch will fetch the account jwt claims from the internal sync.Map.
func (*MemAccResolver) IsReadOnly ¶
func (m *MemAccResolver) IsReadOnly() bool
func (*MemAccResolver) IsTrackingUpdate ¶
func (*MemAccResolver) IsTrackingUpdate() bool
func (*MemAccResolver) Store ¶
func (m *MemAccResolver) Store(name, jwt string) error
Store will store the account jwt claims in the internal sync.Map.
type MetaClusterInfo ¶
type MetaClusterInfo struct { Name string `json:"name,omitempty"` Leader string `json:"leader,omitempty"` Peer string `json:"peer,omitempty"` Replicas []*PeerInfo `json:"replicas,omitempty"` Size int `json:"cluster_size"` }
MetaClusterInfo shows information about the meta group.
type MsgTraceBase ¶
type MsgTraceBase struct { Type MsgTraceType `json:"type"` Timestamp time.Time `json:"ts"` }
type MsgTraceEgress ¶
type MsgTraceEgress struct { MsgTraceBase Kind int `json:"kind"` CID uint64 `json:"cid"` Name string `json:"name,omitempty"` Hop string `json:"hop,omitempty"` Account string `json:"acc,omitempty"` Subscription string `json:"sub,omitempty"` Queue string `json:"queue,omitempty"` Error string `json:"error,omitempty"` // This is for applications that unmarshal the trace events // and want to link an egress to route/leaf/gateway with // the MsgTraceEvent from that server. Link *MsgTraceEvent `json:"-"` }
type MsgTraceEvent ¶
type MsgTraceEvent struct { Server ServerInfo `json:"server"` Request MsgTraceRequest `json:"request"` Hops int `json:"hops,omitempty"` Events MsgTraceEvents `json:"events"` }
func (*MsgTraceEvent) Egresses ¶
func (t *MsgTraceEvent) Egresses() []*MsgTraceEgress
func (*MsgTraceEvent) Ingress ¶
func (t *MsgTraceEvent) Ingress() *MsgTraceIngress
func (*MsgTraceEvent) JetStream ¶
func (t *MsgTraceEvent) JetStream() *MsgTraceJetStream
func (*MsgTraceEvent) ServiceImports ¶
func (t *MsgTraceEvent) ServiceImports() []*MsgTraceServiceImport
func (*MsgTraceEvent) StreamExports ¶
func (t *MsgTraceEvent) StreamExports() []*MsgTraceStreamExport
func (*MsgTraceEvent) SubjectMapping ¶
func (t *MsgTraceEvent) SubjectMapping() *MsgTraceSubjectMapping
type MsgTraceEvents ¶
type MsgTraceEvents []MsgTrace
func (*MsgTraceEvents) UnmarshalJSON ¶
func (t *MsgTraceEvents) UnmarshalJSON(data []byte) error
type MsgTraceIngress ¶
type MsgTraceJetStream ¶
type MsgTraceJetStream struct { MsgTraceBase Stream string `json:"stream"` Subject string `json:"subject,omitempty"` NoInterest bool `json:"nointerest,omitempty"` Error string `json:"error,omitempty"` }
type MsgTraceRequest ¶
type MsgTraceServiceImport ¶
type MsgTraceServiceImport struct { MsgTraceBase Account string `json:"acc"` From string `json:"from"` To string `json:"to"` }
type MsgTraceStreamExport ¶
type MsgTraceStreamExport struct { MsgTraceBase Account string `json:"acc"` To string `json:"to"` }
type MsgTraceSubjectMapping ¶
type MsgTraceSubjectMapping struct { MsgTraceBase MappedTo string `json:"to"` }
type MsgTraceType ¶
type MsgTraceType string
type NetworkIntercept ¶
type NetworkIntercept interface { DialTimeoutCause(network, address string, timeout time.Duration, cause string) (net.Conn, error) ListenCause(network, address, cause string) (net.Listener, error) }
NetworkIntercept is an interface that allows to intercept the dial and listen
type NkeyUser ¶
type NkeyUser struct { Nkey string `json:"user"` Permissions *Permissions `json:"permissions,omitempty"` Account *Account `json:"account,omitempty"` SigningKey string `json:"signing_key,omitempty"` AllowedConnectionTypes map[string]struct{} `json:"connection_types,omitempty"` }
NkeyUser is for multiple nkey based users
type NoOpCache ¶
type NoOpCache struct {
// contains filtered or unexported fields
}
NoOpCache is a no-op implementation of OCSPResponseCache
func (*NoOpCache) Config ¶
func (c *NoOpCache) Config() *OCSPResponseCacheConfig
func (*NoOpCache) Stats ¶
func (c *NoOpCache) Stats() *OCSPResponseCacheStats
type OCSPConfig ¶
type OCSPConfig struct { // Mode defines the policy for OCSP stapling. Mode OCSPMode // OverrideURLs is the http URL endpoint used to get OCSP staples. OverrideURLs []string }
OCSPConfig represents the options of OCSP stapling options.
type OCSPMode ¶
type OCSPMode uint8
const ( // OCSPModeAuto staples a status, only if "status_request" is set in cert. OCSPModeAuto OCSPMode = iota // OCSPModeAlways enforces OCSP stapling for certs and shuts down the server in // case a server is revoked or cannot get OCSP staples. OCSPModeAlways // OCSPModeNever disables OCSP stapling even if cert has Must-Staple flag. OCSPModeNever // OCSPModeMust honors the Must-Staple flag from a certificate but also causing shutdown // in case the certificate has been revoked. OCSPModeMust )
type OCSPMonitor ¶
type OCSPMonitor struct { Leaf *x509.Certificate Issuer *x509.Certificate // contains filtered or unexported fields }
OCSPMonitor monitors the state of a staple per certificate.
type OCSPPeerChainlinkInvalidEventMsg ¶
type OCSPPeerChainlinkInvalidEventMsg struct { TypedEvent Link certidp.CertInfo `json:"link"` Peer certidp.CertInfo `json:"peer"` Server ServerInfo `json:"server"` Reason string `json:"reason"` }
OCSPPeerChainlinkInvalidEventMsg is sent when a certificate (link) in a valid TLS chain is found to be OCSP invalid during a peer TLS handshake. A "peer" can be an inbound client connection or a leaf connection to a remote server. Peer and Link may be the same if the invalid cert was the peer's leaf cert
type OCSPPeerRejectEventMsg ¶
type OCSPPeerRejectEventMsg struct { TypedEvent Kind string `json:"kind"` Peer certidp.CertInfo `json:"peer"` Server ServerInfo `json:"server"` Reason string `json:"reason"` }
OCSPPeerRejectEventMsg is sent when a peer TLS handshake is ultimately rejected due to OCSP invalidation. A "peer" can be an inbound client connection or a leaf connection to a remote server. Peer in event payload is always the peer's (TLS) leaf cert, which may or may be the invalid cert (See also OCSPPeerChainlinkInvalidEventMsg)
type OCSPResponseCache ¶
type OCSPResponseCache interface { Put(key string, resp *ocsp.Response, subj string, log *certidp.Log) Get(key string, log *certidp.Log) []byte Delete(key string, miss bool, log *certidp.Log) Type() string Start(s *Server) Stop(s *Server) Online() bool Config() *OCSPResponseCacheConfig Stats() *OCSPResponseCacheStats }
type OCSPResponseCacheConfig ¶
type OCSPResponseCacheConfig struct { Type OCSPResponseCacheType LocalStore string PreserveRevoked bool SaveInterval float64 }
func NewOCSPResponseCacheConfig ¶
func NewOCSPResponseCacheConfig() *OCSPResponseCacheConfig
type OCSPResponseCacheItem ¶
type OCSPResponseCacheStats ¶
type OCSPResponseCacheType ¶
type OCSPResponseCacheType int
const ( NONE OCSPResponseCacheType = iota + 1 LOCAL )
type OCSPResponseCacheVarz ¶
type OCSPResponseCacheVarz struct { Type string `json:"cache_type,omitempty"` Hits int64 `json:"cache_hits,omitempty"` Misses int64 `json:"cache_misses,omitempty"` Responses int64 `json:"cached_responses,omitempty"` Revokes int64 `json:"cached_revoked_responses,omitempty"` Goods int64 `json:"cached_good_responses,omitempty"` Unknowns int64 `json:"cached_unknown_responses,omitempty"` }
OCSPResponseCacheVarz contains OCSP response cache information
type Options ¶
type Options struct { ConfigFile string `json:"-"` ServerName string `json:"server_name"` Host string `json:"addr"` Port int `json:"port"` DontListen bool `json:"dont_listen"` ClientAdvertise string `json:"-"` Trace bool `json:"-"` Debug bool `json:"-"` TraceVerbose bool `json:"-"` NoLog bool `json:"-"` NoSigs bool `json:"-"` NoSublistCache bool `json:"-"` NoHeaderSupport bool `json:"-"` DisableShortFirstPing bool `json:"-"` Logtime bool `json:"-"` LogtimeUTC bool `json:"-"` MaxConn int `json:"max_connections"` MaxSubs int `json:"max_subscriptions,omitempty"` MaxSubTokens uint8 `json:"-"` Nkeys []*NkeyUser `json:"-"` Users []*User `json:"-"` Accounts []*Account `json:"-"` NoAuthUser string `json:"-"` SystemAccount string `json:"-"` NoSystemAccount bool `json:"-"` Username string `json:"-"` Password string `json:"-"` Authorization string `json:"-"` AuthCallout *AuthCallout `json:"-"` PingInterval time.Duration `json:"ping_interval"` MaxPingsOut int `json:"ping_max"` HTTPHost string `json:"http_host"` HTTPPort int `json:"http_port"` HTTPBasePath string `json:"http_base_path"` HTTPSPort int `json:"https_port"` AuthTimeout float64 `json:"auth_timeout"` MaxControlLine int32 `json:"max_control_line"` MaxPayload int32 `json:"max_payload"` MaxPending int64 `json:"max_pending"` Cluster ClusterOpts `json:"cluster,omitempty"` Gateway GatewayOpts `json:"gateway,omitempty"` LeafNode LeafNodeOpts `json:"leaf,omitempty"` JetStream bool `json:"jetstream"` JetStreamMaxMemory int64 `json:"-"` JetStreamMaxStore int64 `json:"-"` JetStreamDomain string `json:"-"` JetStreamExtHint string `json:"-"` JetStreamKey string `json:"-"` JetStreamOldKey string `json:"-"` JetStreamCipher StoreCipher `json:"-"` JetStreamUniqueTag string JetStreamLimits JSLimitOpts JetStreamMaxCatchup int64 StoreDir string `json:"-"` SyncInterval time.Duration `json:"-"` SyncAlways bool `json:"-"` JsAccDefaultDomain map[string]string `json:"-"` // account to domain name mapping Websocket WebsocketOpts `json:"-"` MQTT MQTTOpts `json:"-"` ProfPort int `json:"-"` ProfBlockRate int `json:"-"` PidFile string `json:"-"` PortsFileDir string `json:"-"` LogFile string `json:"-"` LogSizeLimit int64 `json:"-"` LogMaxFiles int64 `json:"-"` Syslog bool `json:"-"` RemoteSyslog string `json:"-"` Routes []*url.URL `json:"-"` RoutesStr string `json:"-"` TLSTimeout float64 `json:"tls_timeout"` TLS bool `json:"-"` TLSVerify bool `json:"-"` TLSMap bool `json:"-"` TLSCert string `json:"-"` TLSKey string `json:"-"` TLSCaCert string `json:"-"` TLSConfig *tls.Config `json:"-"` TLSPinnedCerts PinnedCertSet `json:"-"` TLSRateLimit int64 `json:"-"` // When set to true, the server will perform the TLS handshake before // sending the INFO protocol. For clients that are not configured // with a similar option, their connection will fail with some sort // of timeout or EOF error since they are expecting to receive an // INFO protocol first. TLSHandshakeFirst bool `json:"-"` // If TLSHandshakeFirst is true and this value is strictly positive, // the server will wait for that amount of time for the TLS handshake // to start before falling back to previous behavior of sending the // INFO protocol first. It allows for a mix of newer clients that can // require a TLS handshake first, and older clients that can't. TLSHandshakeFirstFallback time.Duration `json:"-"` AllowNonTLS bool `json:"-"` WriteDeadline time.Duration `json:"-"` MaxClosedClients int `json:"-"` LameDuckDuration time.Duration `json:"-"` LameDuckGracePeriod time.Duration `json:"-"` // MaxTracedMsgLen is the maximum printable length for traced messages. MaxTracedMsgLen int `json:"-"` // Operating a trusted NATS server TrustedKeys []string `json:"-"` TrustedOperators []*jwt.OperatorClaims `json:"-"` AccountResolver AccountResolver `json:"-"` AccountResolverTLSConfig *tls.Config `json:"-"` // AlwaysEnableNonce will always present a nonce to new connections // typically used by custom Authentication implementations who embeds // the server and so not presented as a configuration option AlwaysEnableNonce bool CustomClientAuthentication Authentication `json:"-"` CustomRouterAuthentication Authentication `json:"-"` // Dial and Listen overrides. NetworkIntercept NetworkIntercept `json:"-"` // CheckConfig configuration file syntax test was successful and exit. CheckConfig bool `json:"-"` // DisableJetStreamBanner will not print the ascii art on startup for JetStream enabled servers DisableJetStreamBanner bool `json:"-"` // ConnectErrorReports specifies the number of failed attempts // at which point server should report the failure of an initial // connection to a route, gateway or leaf node. // See DEFAULT_CONNECT_ERROR_REPORTS for default value. ConnectErrorReports int // ReconnectErrorReports is similar to ConnectErrorReports except // that this applies to reconnect events. ReconnectErrorReports int // Tags describing the server. They will be included in varz // and used as a filter criteria for some system requests. Tags jwt.TagList `json:"-"` // OCSPConfig enables OCSP Stapling in the server. OCSPConfig *OCSPConfig // OCSP Cache config enables next-gen cache for OCSP features OCSPCacheConfig *OCSPResponseCacheConfig // contains filtered or unexported fields }
Options block for nats-server. NOTE: This structure is no longer used for monitoring endpoints and json tags are deprecated and may be removed in the future.
var FlagSnapshot *Options
FlagSnapshot captures the server options as specified by CLI flags at startup. This should not be modified once the server has started.
func ConfigureOptions ¶
func ConfigureOptions(fs *flag.FlagSet, args []string, printVersion, printHelp, printTLSHelp func()) (*Options, error)
ConfigureOptions accepts a flag set and augments it with NATS Server specific flags. On success, an options structure is returned configured based on the selected flags and/or configuration file. The command line options take precedence to the ones in the configuration file.
func MergeOptions ¶
MergeOptions will merge two options giving preference to the flagOpts if the item is present.
func ProcessConfigFile ¶
ProcessConfigFile processes a configuration file. FIXME(dlc): A bit hacky
func (*Options) Clone ¶
Clone performs a deep copy of the Options struct, returning a new clone with all values copied.
func (*Options) ProcessConfigFile ¶
ProcessConfigFile updates the Options structure with options present in the given configuration file. This version is convenient if one wants to set some default options and then override them with what is in the config file. For instance, this version allows you to do something such as:
opts := &Options{Debug: true} opts.ProcessConfigFile(myConfigFile)
If the config file contains "debug: false", after this call, opts.Debug would really be false. It would be impossible to achieve that with the non receiver ProcessConfigFile() version, since one would not know after the call if "debug" was not present or was present but set to false.
type PeerInfo ¶
type PeerInfo struct { Name string `json:"name"` Current bool `json:"current"` Offline bool `json:"offline,omitempty"` Active time.Duration `json:"active"` Lag uint64 `json:"lag,omitempty"` Peer string `json:"peer"` // contains filtered or unexported fields }
PeerInfo shows information about all the peers in the cluster that are supporting the stream or consumer.
type Pending ¶
Represents a pending message for explicit ack or ack all. Sequence is the original consumer sequence.
type Permissions ¶
type Permissions struct { Publish *SubjectPermission `json:"publish"` Subscribe *SubjectPermission `json:"subscribe"` Response *ResponsePermission `json:"responses,omitempty"` }
Permissions are the allowed subjects on a per publish or subscribe basis.
type PinnedCertSet ¶
type PinnedCertSet map[string]struct{}
PinnedCertSet is a set of lower case hex-encoded sha256 of DER encoded SubjectPublicKeyInfo
type Placement ¶
type Placement struct { Cluster string `json:"cluster,omitempty"` Tags []string `json:"tags,omitempty"` }
Used to guide placement of streams and meta controllers in clustered JetStream.
type Ports ¶
type Ports struct { Nats []string `json:"nats,omitempty"` Monitoring []string `json:"monitoring,omitempty"` Cluster []string `json:"cluster,omitempty"` Profile []string `json:"profile,omitempty"` WebSocket []string `json:"websocket,omitempty"` }
Ports describes URLs that the server can be contacted in
type ProfilezEventOptions ¶
type ProfilezEventOptions struct { ProfilezOptions EventFilterOptions }
In the context of system events, ProfilezEventOptions are options passed to Profilez
type ProfilezOptions ¶
ProfilezOptions are options passed to Profilez
type ProfilezStatus ¶
type PubAck ¶
type PubAck struct { Stream string `json:"stream"` Sequence uint64 `json:"seq"` Domain string `json:"domain,omitempty"` Duplicate bool `json:"duplicate,omitempty"` }
PubAck is the detail you get back from a publish to a stream that was successful. e.g. +OK {"stream": "Orders", "seq": 22}
type RaftConfig ¶
type RaftGroupDetail ¶
type RaftGroupDetail struct { Name string `json:"name"` RaftGroup string `json:"raft_group,omitempty"` }
RaftGroupDetail shows information details about the Raft group.
type RaftNode ¶
type RaftNode interface { Propose(entry []byte) error ProposeDirect(entries []*Entry) error ForwardProposal(entry []byte) error InstallSnapshot(snap []byte) error SendSnapshot(snap []byte) error NeedSnapshot() bool Applied(index uint64) (entries uint64, bytes uint64) State() RaftState Size() (entries, bytes uint64) Progress() (index, commit, applied uint64) Leader() bool Quorum() bool Current() bool Healthy() bool Term() uint64 GroupLeader() string HadPreviousLeader() bool StepDown(preferred ...string) error SetObserver(isObserver bool) IsObserver() bool Campaign() error ID() string Group() string Peers() []*Peer UpdateKnownPeers(knownPeers []string) ProposeAddPeer(peer string) error ProposeRemovePeer(peer string) error AdjustClusterSize(csz int) error AdjustBootClusterSize(csz int) error ClusterSize() int ApplyQ() *ipQueue[*CommittedEntry] PauseApply() error ResumeApply() LeadChangeC() <-chan bool QuitC() <-chan struct{} Created() time.Time Stop() Delete() Wipe() }
type RePublish ¶
type RePublish struct { Source string `json:"src,omitempty"` Destination string `json:"dest"` HeadersOnly bool `json:"headers_only,omitempty"` }
RePublish is for republishing messages once committed to a stream.
type RemoteGatewayOpts ¶
type RemoteGatewayOpts struct { Name string `json:"name"` TLSConfig *tls.Config `json:"-"` TLSTimeout float64 `json:"tls_timeout,omitempty"` URLs []*url.URL `json:"urls,omitempty"` // contains filtered or unexported fields }
RemoteGatewayOpts are options for connecting to a remote gateway NOTE: This structure is no longer used for monitoring endpoints and json tags are deprecated and may be removed in the future.
type RemoteGatewayOptsVarz ¶
type RemoteGatewayOptsVarz struct { Name string `json:"name"` TLSTimeout float64 `json:"tls_timeout,omitempty"` URLs []string `json:"urls,omitempty"` }
RemoteGatewayOptsVarz contains monitoring remote gateway information
type RemoteGatewayz ¶
type RemoteGatewayz struct { IsConfigured bool `json:"configured"` Connection *ConnInfo `json:"connection,omitempty"` Accounts []*AccountGatewayz `json:"accounts,omitempty"` }
RemoteGatewayz represents information about an outbound connection to a gateway
type RemoteLeafOpts ¶
type RemoteLeafOpts struct { LocalAccount string `json:"local_account,omitempty"` NoRandomize bool `json:"-"` URLs []*url.URL `json:"urls,omitempty"` Credentials string `json:"-"` Nkey string `json:"-"` SignatureCB SignatureHandler `json:"-"` TLS bool `json:"-"` TLSConfig *tls.Config `json:"-"` TLSTimeout float64 `json:"tls_timeout,omitempty"` TLSHandshakeFirst bool `json:"-"` Hub bool `json:"hub,omitempty"` DenyImports []string `json:"-"` DenyExports []string `json:"-"` // Compression options for this remote. Each remote could have a different // setting and also be different from the LeafNode options. Compression CompressionOpts `json:"-"` // When an URL has the "ws" (or "wss") scheme, then the server will initiate the // connection as a websocket connection. By default, the websocket frames will be // masked (as if this server was a websocket client to the remote server). The // NoMasking option will change this behavior and will send umasked frames. Websocket struct { Compression bool `json:"-"` NoMasking bool `json:"-"` } // If we are clustered and our local account has JetStream, if apps are accessing // a stream or consumer leader through this LN and it gets dropped, the apps will // not be able to work. This tells the system to migrate the leaders away from this server. // This only changes leader for R>1 assets. JetStreamClusterMigrate bool `json:"jetstream_cluster_migrate,omitempty"` // contains filtered or unexported fields }
RemoteLeafOpts are options for connecting to a remote server as a leaf node.
type RemoteLeafOptsVarz ¶
type RemoteLeafOptsVarz struct { LocalAccount string `json:"local_account,omitempty"` TLSTimeout float64 `json:"tls_timeout,omitempty"` URLs []string `json:"urls,omitempty"` Deny *DenyRules `json:"deny,omitempty"` TLSOCSPPeerVerify bool `json:"tls_ocsp_peer_verify,omitempty"` }
RemoteLeafOptsVarz contains monitoring remote leaf node information
type ReplayPolicy ¶
type ReplayPolicy int
ReplayPolicy determines how the consumer should replay messages it already has queued in the stream.
const ( // ReplayInstant will replay messages as fast as possible. ReplayInstant ReplayPolicy = iota // ReplayOriginal will maintain the same timing as the messages were received. ReplayOriginal )
func (ReplayPolicy) MarshalJSON ¶
func (rp ReplayPolicy) MarshalJSON() ([]byte, error)
func (ReplayPolicy) String ¶
func (r ReplayPolicy) String() string
func (*ReplayPolicy) UnmarshalJSON ¶
func (rp *ReplayPolicy) UnmarshalJSON(data []byte) error
type ResponsePermission ¶
ResponsePermission can be used to allow responses to any reply subject that is received on a valid subscription.
type RetentionPolicy ¶
type RetentionPolicy int
RetentionPolicy determines how messages in a set are retained.
const ( // LimitsPolicy (default) means that messages are retained until any given limit is reached. // This could be one of MaxMsgs, MaxBytes, or MaxAge. LimitsPolicy RetentionPolicy = iota // InterestPolicy specifies that when all known consumers have acknowledged a message it can be removed. InterestPolicy // WorkQueuePolicy specifies that when the first worker or subscriber acknowledges the message it can be removed. WorkQueuePolicy )
func (RetentionPolicy) MarshalJSON ¶
func (rp RetentionPolicy) MarshalJSON() ([]byte, error)
func (RetentionPolicy) String ¶
func (rp RetentionPolicy) String() string
func (*RetentionPolicy) UnmarshalJSON ¶
func (rp *RetentionPolicy) UnmarshalJSON(data []byte) error
type RouteInfo ¶
type RouteInfo struct { Rid uint64 `json:"rid"` RemoteID string `json:"remote_id"` RemoteName string `json:"remote_name"` DidSolicit bool `json:"did_solicit"` IsConfigured bool `json:"is_configured"` IP string `json:"ip"` Port int `json:"port"` Start time.Time `json:"start"` LastActivity time.Time `json:"last_activity"` RTT string `json:"rtt,omitempty"` Uptime string `json:"uptime"` Idle string `json:"idle"` Import *SubjectPermission `json:"import,omitempty"` Export *SubjectPermission `json:"export,omitempty"` Pending int `json:"pending_size"` InMsgs int64 `json:"in_msgs"` OutMsgs int64 `json:"out_msgs"` InBytes int64 `json:"in_bytes"` OutBytes int64 `json:"out_bytes"` NumSubs uint32 `json:"subscriptions"` Subs []string `json:"subscriptions_list,omitempty"` SubsDetail []SubDetail `json:"subscriptions_list_detail,omitempty"` Account string `json:"account,omitempty"` Compression string `json:"compression,omitempty"` }
RouteInfo has detailed information on a per connection basis.
type RoutePermissions ¶
type RoutePermissions struct { Import *SubjectPermission `json:"import"` Export *SubjectPermission `json:"export"` }
RoutePermissions are similar to user permissions but describe what a server can import/export from and to another server.
type RouteStat ¶
type RouteStat struct { ID uint64 `json:"rid"` Name string `json:"name,omitempty"` Sent DataStats `json:"sent"` Received DataStats `json:"received"` Pending int `json:"pending"` }
RouteStat holds route statistics.
type Routez ¶
type Routez struct { ID string `json:"server_id"` Name string `json:"server_name"` Now time.Time `json:"now"` Import *SubjectPermission `json:"import,omitempty"` Export *SubjectPermission `json:"export,omitempty"` NumRoutes int `json:"num_routes"` Routes []*RouteInfo `json:"routes"` }
Routez represents detailed information on current client connections.
type RoutezEventOptions ¶
type RoutezEventOptions struct { RoutezOptions EventFilterOptions }
In the context of system events, RoutezEventOptions are options passed to Routez
type RoutezOptions ¶
type RoutezOptions struct { // Subscriptions indicates that Routez will return a route's subscriptions Subscriptions bool `json:"subscriptions"` // SubscriptionsDetail indicates if subscription details should be included in the results SubscriptionsDetail bool `json:"subscriptions_detail"` }
RoutezOptions are options passed to Routez
type SequenceInfo ¶
type SequenceInfo struct { Consumer uint64 `json:"consumer_seq"` Stream uint64 `json:"stream_seq"` Last *time.Time `json:"last_active,omitempty"` }
SequenceInfo has both the consumer and the stream sequence and last activity.
type SequencePair ¶
type SequencePair struct { Consumer uint64 `json:"consumer_seq"` Stream uint64 `json:"stream_seq"` }
SequencePair has both the consumer and the stream sequence. They point to same message.
type Server ¶
type Server struct {
// contains filtered or unexported fields
}
Server is our main struct.
func New ¶
New will setup a new server struct after parsing the options. DEPRECATED: Use NewServer(opts)
func NewServer ¶
NewServer will setup a new server struct after parsing the options. Could return an error if options can not be validated.
func (*Server) AcceptLoop ¶
func (s *Server) AcceptLoop(clr chan struct{})
AcceptLoop is exported for easier testing.
func (*Server) AccountResolver ¶
func (s *Server) AccountResolver() AccountResolver
AccountResolver returns the registered account resolver.
func (*Server) AccountStatz ¶
func (s *Server) AccountStatz(opts *AccountStatzOptions) (*AccountStatz, error)
Leafz returns a AccountStatz structure containing summary information about accounts.
func (*Server) ActivePeers ¶
activePeers is used in bootstrapping raft groups like the JetStream meta controller.
func (*Server) ClientURL ¶
ClientURL returns the URL used to connect clients. Helpful in testing when we designate a random client port (-1).
func (*Server) ClusterAddr ¶
ClusterAddr returns the net.Addr object for the route listener.
func (*Server) ClusterName ¶
clusterName returns our cluster name which could be dynamic.
func (*Server) ConfigTime ¶
ConfigTime will report the last time the server configuration was loaded.
func (*Server) ConfigureLogger ¶
func (s *Server) ConfigureLogger()
ConfigureLogger configures and sets the logger for the server.
func (*Server) Connz ¶
func (s *Server) Connz(opts *ConnzOptions) (*Connz, error)
Connz returns a Connz struct containing information about connections.
func (*Server) DisableJetStream ¶
DisableJetStream will turn off JetStream and signals in clustered mode to have the metacontroller remove us from the peer list.
func (*Server) DisconnectClientByID ¶
DisconnectClientByID disconnects a client by connection ID
func (*Server) EnableJetStream ¶
func (s *Server) EnableJetStream(config *JetStreamConfig) error
EnableJetStream will enable JetStream support on this server with the given configuration. A nil configuration will dynamically choose the limits and temporary file storage directory.
func (*Server) EventsEnabled ¶
EventsEnabled will report if the server has internal events enabled via a defined system account.
func (*Server) GatewayAddr ¶
GatewayAddr returns the net.Addr object for the gateway listener.
func (*Server) Gatewayz ¶
func (s *Server) Gatewayz(opts *GatewayzOptions) (*Gatewayz, error)
Gatewayz returns a Gatewayz struct containing information about gateways.
func (*Server) GetLeafNode ¶
GetLeafNode returns the leafnode associated with the cid.
func (*Server) GlobalAccount ¶
GlobalAccount returns the global account. Default clients will use the global account.
func (*Server) HTTPHandler ¶
HTTPHandler returns the http.Handler object used to handle monitoring endpoints. It will return nil if the server is not configured for monitoring, or if the server has not been started yet (Server.Start()).
func (*Server) HandleAccountStatz ¶
func (s *Server) HandleAccountStatz(w http.ResponseWriter, r *http.Request)
HandleAccountStatz process HTTP requests for statz information of all accounts.
func (*Server) HandleAccountz ¶
func (s *Server) HandleAccountz(w http.ResponseWriter, r *http.Request)
HandleAccountz process HTTP requests for account information.
func (*Server) HandleConnz ¶
func (s *Server) HandleConnz(w http.ResponseWriter, r *http.Request)
HandleConnz process HTTP requests for connection information.
func (*Server) HandleGatewayz ¶
func (s *Server) HandleGatewayz(w http.ResponseWriter, r *http.Request)
HandleGatewayz process HTTP requests for route information.
func (*Server) HandleHealthz ¶
func (s *Server) HandleHealthz(w http.ResponseWriter, r *http.Request)
https://datatracker.ietf.org/doc/html/draft-inadarei-api-health-check
func (*Server) HandleIPQueuesz ¶
func (s *Server) HandleIPQueuesz(w http.ResponseWriter, r *http.Request)
func (*Server) HandleJsz ¶
func (s *Server) HandleJsz(w http.ResponseWriter, r *http.Request)
HandleJsz process HTTP requests for jetstream information.
func (*Server) HandleLeafz ¶
func (s *Server) HandleLeafz(w http.ResponseWriter, r *http.Request)
HandleLeafz process HTTP requests for leafnode information.
func (*Server) HandleRoot ¶
func (s *Server) HandleRoot(w http.ResponseWriter, r *http.Request)
HandleRoot will show basic info and links to others handlers.
func (*Server) HandleRoutez ¶
func (s *Server) HandleRoutez(w http.ResponseWriter, r *http.Request)
HandleRoutez process HTTP requests for route information.
func (*Server) HandleStacksz ¶
func (s *Server) HandleStacksz(w http.ResponseWriter, r *http.Request)
HandleStacksz processes HTTP requests for getting stacks
func (*Server) HandleSubsz ¶
func (s *Server) HandleSubsz(w http.ResponseWriter, r *http.Request)
HandleSubsz processes HTTP requests for subjects stats.
func (*Server) HandleVarz ¶
func (s *Server) HandleVarz(w http.ResponseWriter, r *http.Request)
HandleVarz will process HTTP requests for server information.
func (*Server) InProcessConn ¶
InProcessConn returns an in-process connection to the server, avoiding the need to use a TCP listener for local connectivity within the same process. This can be used regardless of the state of the DontListen option.
func (*Server) JetStreamClusterPeers ¶
func (*Server) JetStreamConfig ¶
func (s *Server) JetStreamConfig() *JetStreamConfig
JetStreamConfig will return the current config. Useful if the system created a dynamic configuration. A copy is returned.
func (*Server) JetStreamEnabled ¶
JetStreamEnabled reports if jetstream is enabled for this server.
func (*Server) JetStreamEnabledForDomain ¶
JetStreamEnabledForDomain will report if any servers have JetStream enabled within this domain.
func (*Server) JetStreamIsClustered ¶
func (*Server) JetStreamIsConsumerLeader ¶
func (*Server) JetStreamIsCurrent ¶
func (*Server) JetStreamIsLeader ¶
func (*Server) JetStreamIsStreamAssigned ¶
func (*Server) JetStreamIsStreamCurrent ¶
func (*Server) JetStreamIsStreamLeader ¶
func (*Server) JetStreamNumAccounts ¶
JetStreamNumAccounts returns the number of enabled accounts this server is tracking.
func (*Server) JetStreamReservedResources ¶
JetStreamReservedResources returns the reserved resources if JetStream is enabled.
func (*Server) JetStreamSnapshotMeta ¶
func (*Server) JetStreamSnapshotStream ¶
func (*Server) JetStreamStepdownConsumer ¶
func (*Server) JetStreamStepdownStream ¶
func (*Server) Jsz ¶
func (s *Server) Jsz(opts *JSzOptions) (*JSInfo, error)
Jsz returns a Jsz structure containing information about JetStream.
func (*Server) JszAccount ¶
func (s *Server) JszAccount(opts *JSzOptions) (*AccountDetail, error)
func (*Server) LDMClientByID ¶
LDMClientByID sends a Lame Duck Mode info message to a client by connection ID
func (*Server) Leafz ¶
func (s *Server) Leafz(opts *LeafzOptions) (*Leafz, error)
Leafz returns a Leafz structure containing information about leafnodes.
func (*Server) LookupAccount ¶
LookupAccount is a public function to return the account structure associated with name.
func (*Server) LookupOrRegisterAccount ¶
LookupOrRegisterAccount will return the given account if known or create a new entry.
func (*Server) MonitorAddr ¶
MonitorAddr will return the net.Addr object for the monitoring listener.
func (*Server) Name ¶
Name returns the server's name. This will be the same as the ID if it was not set.
func (*Server) NewOCSPMonitor ¶
func (srv *Server) NewOCSPMonitor(config *tlsConfigKind) (*tls.Config, *OCSPMonitor, error)
NewOCSPMonitor takes a TLS configuration then wraps it with the callbacks set for OCSP verification along with a monitor that will periodically fetch OCSP staples.
func (*Server) NonceRequired ¶
NonceRequired tells us if we should send a nonce.
func (*Server) NumActiveAccounts ¶
NumActiveAccounts reports number of active accounts on this server.
func (*Server) NumClients ¶
NumClients will report the number of registered clients.
func (*Server) NumLeafNodes ¶
NumLeafNodes will report number of leaf node connections.
func (*Server) NumLoadedAccounts ¶
NumLoadedAccounts returns the number of loaded accounts.
func (*Server) NumOutboundGateways ¶
NumOutboundGateways is public here mostly for testing.
func (*Server) NumRemotes ¶
NumRemotes will report number of registered remotes.
func (*Server) NumSlowConsumers ¶
NumSlowConsumers will report the number of slow consumers.
func (*Server) NumSlowConsumersClients ¶
NumSlowConsumersClients will report the number of slow consumers clients.
func (*Server) NumSlowConsumersGateways ¶
NumSlowConsumersGateways will report the number of slow consumers leafs.
func (*Server) NumSlowConsumersLeafs ¶
NumSlowConsumersLeafs will report the number of slow consumers leafs.
func (*Server) NumSlowConsumersRoutes ¶
NumSlowConsumersRoutes will report the number of slow consumers routes.
func (*Server) NumSubscriptions ¶
NumSubscriptions will report how many subscriptions are active.
func (*Server) PortsInfo ¶
PortsInfo attempts to resolve all the ports. If after maxWait the ports are not resolved, it returns nil. Otherwise it returns a Ports struct describing ports where the server can be contacted
func (*Server) ProfilerAddr ¶
ProfilerAddr returns the net.Addr object for the profiler listener.
func (*Server) RateLimitDebugf ¶
func (*Server) RateLimitWarnf ¶
func (*Server) ReOpenLogFile ¶
func (s *Server) ReOpenLogFile()
ReOpenLogFile if the logger is a file based logger, close and re-open the file. This allows for file rotation by 'mv'ing the file then signaling the process to trigger this function.
func (*Server) ReadyForConnections ¶
ReadyForConnections returns `true` if the server is ready to accept clients and, if routing is enabled, route connections. If after the duration `dur` the server is still not ready, returns `false`.
func (*Server) RegisterAccount ¶
RegisterAccount will register an account. The account must be new or this call will fail.
func (*Server) RegisterExternalConn ¶
RegisterConn will register an externally accepted connection with the server. This is used for in-process connections and for testing.
func (*Server) Reload ¶
Reload reads the current configuration file and calls out to ReloadOptions to apply the changes. This returns an error if the server was not started with a config file or an option which doesn't support hot-swapping was changed.
func (*Server) ReloadOptions ¶
ReloadOptions applies any supported options from the provided Option type. This returns an error if an option which doesn't support hot-swapping was changed.
func (*Server) Routez ¶
func (s *Server) Routez(routezOpts *RoutezOptions) (*Routez, error)
Routez returns a Routez struct containing information about routes.
func (*Server) SetAccountResolver ¶
func (s *Server) SetAccountResolver(ar AccountResolver)
SetAccountResolver will assign the account resolver.
func (*Server) SetDefaultSystemAccount ¶
SetDefaultSystemAccount will create a default system account if one is not present.
func (*Server) SetLoggerV2 ¶
SetLogger sets the logger of the server
func (*Server) SetSystemAccount ¶
SetSystemAccount will set the internal system account. If root operators are present it will also check validity.
func (*Server) Shutdown ¶
func (s *Server) Shutdown()
Shutdown will shutdown the server instance by kicking out the AcceptLoop and closing all associated clients.
func (*Server) Start ¶
func (s *Server) Start()
Start up the server, this will not block.
WaitForShutdown can be used to block and wait for the server to shutdown properly if needed after calling s.Shutdown()
func (*Server) StartHTTPMonitoring ¶
func (s *Server) StartHTTPMonitoring()
StartHTTPMonitoring will enable the HTTP monitoring port. DEPRECATED: Should use StartMonitoring.
func (*Server) StartHTTPSMonitoring ¶
func (s *Server) StartHTTPSMonitoring()
StartHTTPSMonitoring will enable the HTTPS monitoring port. DEPRECATED: Should use StartMonitoring.
func (*Server) StartMonitoring ¶
StartMonitoring starts the HTTP or HTTPs server if needed.
func (*Server) StartProfiler ¶
func (s *Server) StartProfiler()
StartProfiler is called to enable dynamic profiling.
func (*Server) StartRouting ¶
func (s *Server) StartRouting(clientListenReady chan struct{})
StartRouting will start the accept loop on the cluster host:port and will actively try to connect to listed routes.
func (*Server) Subsz ¶
func (s *Server) Subsz(opts *SubszOptions) (*Subsz, error)
Subsz returns a Subsz struct containing subjects statistics
func (*Server) SystemAccount ¶
SystemAccount returns the system account if set.
func (*Server) TrackedRemoteServers ¶
TrackedRemoteServers returns how many remote servers we are tracking from a system events perspective.
func (*Server) UpdateAccountClaims ¶
UpdateAccountClaims will update an existing account with new claims. This will replace any exports or imports previously defined. Lock MUST NOT be held upon entry.
func (*Server) Varz ¶
func (s *Server) Varz(varzOpts *VarzOptions) (*Varz, error)
Varz returns a Varz struct containing the server information.
func (*Server) WaitForShutdown ¶
func (s *Server) WaitForShutdown()
WaitForShutdown will block until the server has been fully shutdown.
type ServerAPIClaimUpdateResponse ¶
type ServerAPIClaimUpdateResponse struct { Server *ServerInfo `json:"server"` Data *ClaimUpdateStatus `json:"data,omitempty"` Error *ClaimUpdateError `json:"error,omitempty"` }
ServerAPIClaimUpdateResponse is the response to $SYS.REQ.ACCOUNT.<id>.CLAIMS.UPDATE and $SYS.REQ.CLAIMS.UPDATE
type ServerAPIConnzResponse ¶
type ServerAPIConnzResponse struct { Server *ServerInfo `json:"server"` Data *Connz `json:"data,omitempty"` Error *ApiError `json:"error,omitempty"` }
ServerAPIConnzResponse is the response type connz
type ServerAPIResponse ¶
type ServerAPIResponse struct { Server *ServerInfo `json:"server"` Data interface{} `json:"data,omitempty"` Error *ApiError `json:"error,omitempty"` // contains filtered or unexported fields }
ServerAPIResponse is the response type for the server API like varz, connz etc.
type ServerCapability ¶
type ServerCapability uint64
Type for our server capabilities.
const ( JetStreamEnabled ServerCapability = 1 << iota // Server had JetStream enabled. BinaryStreamSnapshot // New stream snapshot capability. )
type ServerInfo ¶
type ServerInfo struct { Name string `json:"name"` Host string `json:"host"` ID string `json:"id"` Cluster string `json:"cluster,omitempty"` Domain string `json:"domain,omitempty"` Version string `json:"ver"` Tags []string `json:"tags,omitempty"` // Whether JetStream is enabled (deprecated in favor of the `ServerCapability`). JetStream bool `json:"jetstream"` // Generic capability flags Flags ServerCapability `json:"flags"` // Sequence and Time from the remote server for this message. Seq uint64 `json:"seq"` Time time.Time `json:"time"` }
ServerInfo identifies remote servers.
func (*ServerInfo) BinaryStreamSnapshot ¶
func (si *ServerInfo) BinaryStreamSnapshot() bool
JetStreamEnabled indicates whether or not we have binary stream snapshot capbilities.
func (*ServerInfo) JetStreamEnabled ¶
func (si *ServerInfo) JetStreamEnabled() bool
JetStreamEnabled indicates whether or not we have JetStream enabled.
func (*ServerInfo) SetBinaryStreamSnapshot ¶
func (si *ServerInfo) SetBinaryStreamSnapshot()
Set binary stream snapshot capability.
func (*ServerInfo) SetJetStreamEnabled ¶
func (si *ServerInfo) SetJetStreamEnabled()
Set JetStream capability.
type ServerStats ¶
type ServerStats struct { Start time.Time `json:"start"` Mem int64 `json:"mem"` Cores int `json:"cores"` CPU float64 `json:"cpu"` Connections int `json:"connections"` TotalConnections uint64 `json:"total_connections"` ActiveAccounts int `json:"active_accounts"` NumSubs uint32 `json:"subscriptions"` Sent DataStats `json:"sent"` Received DataStats `json:"received"` SlowConsumers int64 `json:"slow_consumers"` Routes []*RouteStat `json:"routes,omitempty"` Gateways []*GatewayStat `json:"gateways,omitempty"` ActiveServers int `json:"active_servers,omitempty"` JetStream *JetStreamVarz `json:"jetstream,omitempty"` }
ServerStats hold various statistics that we will periodically send out.
type ServerStatsMsg ¶
type ServerStatsMsg struct { Server ServerInfo `json:"server"` Stats ServerStats `json:"statsz"` }
ServerStatsMsg is sent periodically with stats updates.
type ServiceLatency ¶
type ServiceLatency struct { TypedEvent Status int `json:"status"` Error string `json:"description,omitempty"` Requestor *ClientInfo `json:"requestor,omitempty"` Responder *ClientInfo `json:"responder,omitempty"` RequestHeader http.Header `json:"header,omitempty"` // only contains header(s) triggering the measurement RequestStart time.Time `json:"start"` ServiceLatency time.Duration `json:"service"` SystemLatency time.Duration `json:"system"` TotalLatency time.Duration `json:"total"` }
ServiceLatency is the JSON message sent out in response to latency tracking for an accounts exported services. Additional client info is available in requestor and responder. Note that for a requestor, the only information shared by default is the RTT used to calculate the total latency. The requestor's account can designate to share the additional information in the service import.
func (*ServiceLatency) NATSTotalTime ¶
func (m1 *ServiceLatency) NATSTotalTime() time.Duration
NATSTotalTime is a helper function that totals the NATS latencies.
type ServiceRespType ¶
type ServiceRespType uint8
ServiceRespType represents the types of service request response types.
const ( Singleton ServiceRespType = iota Streamed Chunked )
Service response types. Defaults to a singleton.
type SignatureHandler ¶
SignatureHandler is used to sign a nonce from the server while authenticating with Nkeys. The callback should sign the nonce and return the JWT and the raw signature.
type SimpleState ¶
type SimpleState struct { Msgs uint64 `json:"messages"` First uint64 `json:"first_seq"` Last uint64 `json:"last_seq"` // contains filtered or unexported fields }
SimpleState for filtered subject specific state.
type SlowConsumersStats ¶
type SlowConsumersStats struct { Clients uint64 `json:"clients"` Routes uint64 `json:"routes"` Gateways uint64 `json:"gateways"` Leafs uint64 `json:"leafs"` }
SlowConsumersStats contains information about the slow consumers from different type of connections.
type SnapshotResult ¶
type SnapshotResult struct { Reader io.ReadCloser State StreamState }
SnapshotResult contains information about the snapshot.
type SortOpt ¶
type SortOpt string
SortOpt is a helper type to sort clients
const ( ByCid SortOpt = "cid" // By connection ID ByStart SortOpt = "start" // By connection start time, same as CID BySubs SortOpt = "subs" // By number of subscriptions ByPending SortOpt = "pending" // By amount of data in bytes waiting to be sent to client ByOutMsgs SortOpt = "msgs_to" // By number of messages sent ByInMsgs SortOpt = "msgs_from" // By number of messages received ByOutBytes SortOpt = "bytes_to" // By amount of bytes sent ByInBytes SortOpt = "bytes_from" // By amount of bytes received ByLast SortOpt = "last" // By the last activity ByIdle SortOpt = "idle" // By the amount of inactivity ByUptime SortOpt = "uptime" // By the amount of time connections exist ByStop SortOpt = "stop" // By the stop time for a closed connection ByReason SortOpt = "reason" // By the reason for a closed connection ByRTT SortOpt = "rtt" // By the round trip time )
Possible sort options
type StatszEventOptions ¶
type StatszEventOptions struct { // No actual options yet EventFilterOptions }
StatszEventOptions are options passed to Statsz
type StorageType ¶
type StorageType int
StorageType determines how messages are stored for retention.
func (StorageType) MarshalJSON ¶
func (st StorageType) MarshalJSON() ([]byte, error)
func (StorageType) String ¶
func (st StorageType) String() string
func (*StorageType) UnmarshalJSON ¶
func (st *StorageType) UnmarshalJSON(data []byte) error
type StorageUpdateHandler ¶
Used to call back into the upper layers to report on changes in storage resources. For the cases where its a single message we will also supply sequence number and subject.
type StoreCipher ¶
type StoreCipher int
const ( ChaCha StoreCipher = iota AES NoCipher )
func (StoreCipher) String ¶
func (cipher StoreCipher) String() string
type StoreCompression ¶
type StoreCompression uint8
const ( NoCompression StoreCompression = iota S2Compression )
func (StoreCompression) Decompress ¶
func (alg StoreCompression) Decompress(buf []byte) ([]byte, error)
func (StoreCompression) MarshalJSON ¶
func (alg StoreCompression) MarshalJSON() ([]byte, error)
func (StoreCompression) String ¶
func (alg StoreCompression) String() string
func (*StoreCompression) UnmarshalJSON ¶
func (alg *StoreCompression) UnmarshalJSON(b []byte) error
type StoreMsg ¶
type StoreMsg struct {
// contains filtered or unexported fields
}
StoreMsg is the stored message format for messages that are retained by the Store layer.
type StoredMsg ¶
type StoredMsg struct { Subject string `json:"subject"` Sequence uint64 `json:"seq"` Header []byte `json:"hdrs,omitempty"` Data []byte `json:"data,omitempty"` Time time.Time `json:"time"` }
StoredMsg is for raw access to messages in a stream.
type StreamAlternate ¶
type StreamConfig ¶
type StreamConfig struct { Name string `json:"name"` Description string `json:"description,omitempty"` Subjects []string `json:"subjects,omitempty"` Retention RetentionPolicy `json:"retention"` MaxConsumers int `json:"max_consumers"` MaxMsgs int64 `json:"max_msgs"` MaxBytes int64 `json:"max_bytes"` MaxAge time.Duration `json:"max_age"` MaxMsgsPer int64 `json:"max_msgs_per_subject"` MaxMsgSize int32 `json:"max_msg_size,omitempty"` Discard DiscardPolicy `json:"discard"` Storage StorageType `json:"storage"` Replicas int `json:"num_replicas"` NoAck bool `json:"no_ack,omitempty"` Template string `json:"template_owner,omitempty"` Duplicates time.Duration `json:"duplicate_window,omitempty"` Placement *Placement `json:"placement,omitempty"` Mirror *StreamSource `json:"mirror,omitempty"` Sources []*StreamSource `json:"sources,omitempty"` Compression StoreCompression `json:"compression"` FirstSeq uint64 `json:"first_seq,omitempty"` // Allow applying a subject transform to incoming messages before doing anything else SubjectTransform *SubjectTransformConfig `json:"subject_transform,omitempty"` // Allow republish of the message after being sequenced and stored. RePublish *RePublish `json:"republish,omitempty"` // Allow higher performance, direct access to get individual messages. E.g. KeyValue AllowDirect bool `json:"allow_direct"` // Allow higher performance and unified direct access for mirrors as well. MirrorDirect bool `json:"mirror_direct"` // Allow KV like semantics to also discard new on a per subject basis DiscardNewPer bool `json:"discard_new_per_subject,omitempty"` // Sealed will seal a stream so no messages can get out or in. Sealed bool `json:"sealed"` // DenyDelete will restrict the ability to delete messages. DenyDelete bool `json:"deny_delete"` // DenyPurge will restrict the ability to purge messages. DenyPurge bool `json:"deny_purge"` // AllowRollup allows messages to be placed into the system and purge // all older messages using a special msg header. AllowRollup bool `json:"allow_rollup_hdrs"` // The following defaults will apply to consumers when created against // this stream, unless overridden manually. // TODO(nat): Can/should we name these better? ConsumerLimits StreamConsumerLimits `json:"consumer_limits"` // Metadata is additional metadata for the Stream. Metadata map[string]string `json:"metadata,omitempty"` }
StreamConfig will determine the name, subjects and retention policy for a given stream. If subjects is empty the name will be used.
type StreamConsumerLimits ¶
type StreamDetail ¶
type StreamDetail struct { Name string `json:"name"` Created time.Time `json:"created"` Cluster *ClusterInfo `json:"cluster,omitempty"` Config *StreamConfig `json:"config,omitempty"` State StreamState `json:"state,omitempty"` Consumer []*ConsumerInfo `json:"consumer_detail,omitempty"` Mirror *StreamSourceInfo `json:"mirror,omitempty"` Sources []*StreamSourceInfo `json:"sources,omitempty"` RaftGroup string `json:"stream_raft_group,omitempty"` ConsumerRaftGroups []*RaftGroupDetail `json:"consumer_raft_groups,omitempty"` }
StreamDetail shows information about the stream state and its consumers.
type StreamInfo ¶
type StreamInfo struct { Config StreamConfig `json:"config"` Created time.Time `json:"created"` State StreamState `json:"state"` Domain string `json:"domain,omitempty"` Cluster *ClusterInfo `json:"cluster,omitempty"` Mirror *StreamSourceInfo `json:"mirror,omitempty"` Sources []*StreamSourceInfo `json:"sources,omitempty"` Alternates []StreamAlternate `json:"alternates,omitempty"` // TimeStamp indicates when the info was gathered TimeStamp time.Time `json:"ts"` }
StreamInfo shows config and current state for this stream.
type StreamReplicatedState ¶
type StreamReplicatedState struct { Msgs uint64 Bytes uint64 FirstSeq uint64 LastSeq uint64 Failed uint64 Deleted DeleteBlocks }
StreamReplicatedState represents what is encoded in a binary stream snapshot used for stream replication in an NRG.
func DecodeStreamState ¶
func DecodeStreamState(buf []byte) (*StreamReplicatedState, error)
type StreamSource ¶
type StreamSource struct { Name string `json:"name"` OptStartSeq uint64 `json:"opt_start_seq,omitempty"` OptStartTime *time.Time `json:"opt_start_time,omitempty"` FilterSubject string `json:"filter_subject,omitempty"` SubjectTransforms []SubjectTransformConfig `json:"subject_transforms,omitempty"` External *ExternalStream `json:"external,omitempty"` // contains filtered or unexported fields }
StreamSource dictates how streams can source from other streams.
type StreamSourceInfo ¶
type StreamSourceInfo struct { Name string `json:"name"` External *ExternalStream `json:"external,omitempty"` Lag uint64 `json:"lag"` Active time.Duration `json:"active"` Error *ApiError `json:"error,omitempty"` FilterSubject string `json:"filter_subject,omitempty"` SubjectTransforms []SubjectTransformConfig `json:"subject_transforms,omitempty"` }
StreamSourceInfo shows information about an upstream stream source.
type StreamState ¶
type StreamState struct { Msgs uint64 `json:"messages"` Bytes uint64 `json:"bytes"` FirstSeq uint64 `json:"first_seq"` FirstTime time.Time `json:"first_ts"` LastSeq uint64 `json:"last_seq"` LastTime time.Time `json:"last_ts"` NumSubjects int `json:"num_subjects,omitempty"` Subjects map[string]uint64 `json:"subjects,omitempty"` NumDeleted int `json:"num_deleted,omitempty"` Deleted []uint64 `json:"deleted,omitempty"` Lost *LostStreamData `json:"lost,omitempty"` Consumers int `json:"consumer_count"` }
StreamState is information about the given stream.
type StreamStore ¶
type StreamStore interface { StoreMsg(subject string, hdr, msg []byte) (uint64, int64, error) StoreRawMsg(subject string, hdr, msg []byte, seq uint64, ts int64) error SkipMsg() uint64 SkipMsgs(seq uint64, num uint64) error LoadMsg(seq uint64, sm *StoreMsg) (*StoreMsg, error) LoadNextMsg(filter string, wc bool, start uint64, smp *StoreMsg) (sm *StoreMsg, skip uint64, err error) LoadLastMsg(subject string, sm *StoreMsg) (*StoreMsg, error) RemoveMsg(seq uint64) (bool, error) EraseMsg(seq uint64) (bool, error) Purge() (uint64, error) PurgeEx(subject string, seq, keep uint64) (uint64, error) Compact(seq uint64) (uint64, error) Truncate(seq uint64) error GetSeqFromTime(t time.Time) uint64 FilteredState(seq uint64, subject string) SimpleState SubjectsState(filterSubject string) map[string]SimpleState SubjectsTotals(filterSubject string) map[string]uint64 MultiLastSeqs(filters []string, maxSeq uint64, maxAllowed int) ([]uint64, error) NumPending(sseq uint64, filter string, lastPerSubject bool) (total, validThrough uint64) State() StreamState FastState(*StreamState) EncodedStreamState(failed uint64) (enc []byte, err error) SyncDeleted(dbs DeleteBlocks) Type() StorageType RegisterStorageUpdates(StorageUpdateHandler) UpdateConfig(cfg *StreamConfig) error Delete() error Stop() error ConsumerStore(name string, cfg *ConsumerConfig) (ConsumerStore, error) AddConsumer(o ConsumerStore) error RemoveConsumer(o ConsumerStore) error Snapshot(deadline time.Duration, includeConsumers, checkMsgs bool) (*SnapshotResult, error) Utilization() (total, reported uint64, err error) }
type StreamTemplateConfig ¶
type StreamTemplateConfig struct { Name string `json:"name"` Config *StreamConfig `json:"config"` MaxStreams uint32 `json:"max_streams"` }
StreamTemplateConfig allows a configuration to auto-create streams based on this template when a message is received that matches. Each new stream will use the config as the template config to create them.
type StreamTemplateInfo ¶
type StreamTemplateInfo struct { Config *StreamTemplateConfig `json:"config"` Streams []string `json:"streams"` }
StreamTemplateInfo
type SubDetail ¶
type SubDetail struct { Account string `json:"account,omitempty"` Subject string `json:"subject"` Queue string `json:"qgroup,omitempty"` Sid string `json:"sid"` Msgs int64 `json:"msgs"` Max int64 `json:"max,omitempty"` Cid uint64 `json:"cid"` }
SubDetail is for verbose information for subscriptions.
type SubjectPermission ¶
type SubjectPermission struct { Allow []string `json:"allow,omitempty"` Deny []string `json:"deny,omitempty"` }
SubjectPermission is an individual allow and deny struct for publish and subscribe authorizations.
type SubjectTransformConfig ¶
SubjectTransformConfig is for applying a subject transform (to matching messages) before doing anything else when a new message is received
type SubjectTransformer ¶
type SubjectTransformer interface { // TODO(dlc) - We could add in client here to allow for things like foo -> foo.$ACCOUNT Match(string) (string, error) TransformSubject(subject string) string TransformTokenizedSubject(tokens []string) string }
SubjectTransformer transforms subjects using mappings
This API is not part of the public API and not subject to SemVer protections
type Sublist ¶
A Sublist stores and efficiently retrieves subscriptions.
func NewSublist ¶
NewSublist will create a default sublist with caching enabled per the flag.
func NewSublistNoCache ¶
func NewSublistNoCache() *Sublist
NewSublistNoCache will create a default sublist with caching disabled.
func NewSublistWithCache ¶
func NewSublistWithCache() *Sublist
NewSublistWithCache will create a default sublist with caching enabled.
func (*Sublist) All ¶
func (s *Sublist) All(subs *[]*subscription)
All is used to collect all subscriptions.
func (*Sublist) CacheCount ¶
CacheCount returns the number of result sets in the cache.
func (*Sublist) CacheEnabled ¶
CacheEnabled returns whether or not caching is enabled for this sublist.
func (*Sublist) ClearNotification ¶
func (*Sublist) ClearQueueNotification ¶
func (*Sublist) Match ¶
func (s *Sublist) Match(subject string) *SublistResult
Match will match all entries to the literal subject. It will return a set of results for both normal and queue subscribers.
func (*Sublist) RegisterNotification ¶
RegisterNotification will register for notifications when interest for the given subject changes. The subject must be a literal publish type subject. The notification is true for when the first interest for a subject is inserted, and false when all interest in the subject is removed. Note that this interest needs to be exact and that wildcards will not trigger the notifications. The sublist will not block when trying to send the notification. Its up to the caller to make sure the channel send will not block.
func (*Sublist) RegisterQueueNotification ¶
func (*Sublist) RemoveBatch ¶
RemoveBatch will remove a list of subscriptions.
func (*Sublist) ReverseMatch ¶
func (s *Sublist) ReverseMatch(subject string) *SublistResult
For a given subject (which may contain wildcards), this call returns all subscriptions that would match that subject. For instance, suppose that the sublist contains: foo.bar, foo.bar.baz and foo.baz, ReverseMatch("foo.*") would return foo.bar and foo.baz. This is used in situations where the sublist is likely to contain only literals and one wants to get all the subjects that would have been a match to a subscription on `subject`.
func (*Sublist) Stats ¶
func (s *Sublist) Stats() *SublistStats
Stats will return a stats structure for the current state.
func (*Sublist) UpdateRemoteQSub ¶
func (s *Sublist) UpdateRemoteQSub(sub *subscription)
UpdateRemoteQSub should be called when we update the weight of an existing remote queue sub.
type SublistResult ¶
type SublistResult struct {
// contains filtered or unexported fields
}
SublistResult is a result structure better optimized for queue subs.
type SublistStats ¶
type SublistStats struct { NumSubs uint32 `json:"num_subscriptions"` NumCache uint32 `json:"num_cache"` NumInserts uint64 `json:"num_inserts"` NumRemoves uint64 `json:"num_removes"` NumMatches uint64 `json:"num_matches"` CacheHitRate float64 `json:"cache_hit_rate"` MaxFanout uint32 `json:"max_fanout"` AvgFanout float64 `json:"avg_fanout"` // contains filtered or unexported fields }
SublistStats are public stats for the sublist
type Subsz ¶
type Subsz struct { ID string `json:"server_id"` Now time.Time `json:"now"` *SublistStats Total int `json:"total"` Offset int `json:"offset"` Limit int `json:"limit"` Subs []SubDetail `json:"subscriptions_list,omitempty"` }
Subsz represents detail information on current connections.
type SubszEventOptions ¶
type SubszEventOptions struct { SubszOptions EventFilterOptions }
In the context of system events, SubzEventOptions are options passed to Subz
type SubszOptions ¶
type SubszOptions struct { // Offset is used for pagination. Subsz() only returns connections starting at this // offset from the global results. Offset int `json:"offset"` // Limit is the maximum number of subscriptions that should be returned by Subsz(). Limit int `json:"limit"` // Subscriptions indicates if subscription details should be included in the results. Subscriptions bool `json:"subscriptions"` // Filter based on this account name. Account string `json:"account,omitempty"` // Test the list against this subject. Needs to be literal since it signifies a publish subject. // We will only return subscriptions that would match if a message was sent to this subject. Test string `json:"test,omitempty"` }
SubszOptions are the options passed to Subsz. As of now, there are no options defined.
type TLSCertPairOpt ¶
TLSCertPairOpt are the paths to a certificate and private key.
type TLSConfigOpts ¶
type TLSConfigOpts struct { CertFile string KeyFile string CaFile string Verify bool Insecure bool Map bool TLSCheckKnownURLs bool HandshakeFirst bool // Indicate that the TLS handshake should occur first, before sending the INFO protocol. FallbackDelay time.Duration // Where supported, indicates how long to wait for the handshake before falling back to sending the INFO protocol first. Timeout float64 RateLimit int64 Ciphers []uint16 CurvePreferences []tls.CurveID PinnedCerts PinnedCertSet CertStore certstore.StoreType CertMatchBy certstore.MatchByType CertMatch string OCSPPeerConfig *certidp.OCSPPeerConfig Certificates []*TLSCertPairOpt }
TLSConfigOpts holds the parsed tls config information, used with flag parsing
type TLSPeerCert ¶
type TLSPeerCert struct { Subject string `json:"subject,omitempty"` SubjectPKISha256 string `json:"spki_sha256,omitempty"` CertSha256 string `json:"cert_sha256,omitempty"` }
TLSPeerCert contains basic information about a TLS peer certificate
type TemplateStore ¶
TemplateStore stores templates.
type TypedEvent ¶
type TypedEvent struct { Type string `json:"type"` ID string `json:"id"` Time time.Time `json:"timestamp"` }
TypedEvent is a event or advisory sent by the server that has nats type hints typically used for events that might be consumed by 3rd party event systems
type URLAccResolver ¶
type URLAccResolver struct {
// contains filtered or unexported fields
}
URLAccResolver implements an http fetcher.
func NewURLAccResolver ¶
func NewURLAccResolver(url string) (*URLAccResolver, error)
NewURLAccResolver returns a new resolver for the given base URL.
func (*URLAccResolver) Fetch ¶
func (ur *URLAccResolver) Fetch(name string) (string, error)
Fetch will fetch the account jwt claims from the base url, appending the account name onto the end.
func (*URLAccResolver) IsReadOnly ¶
func (*URLAccResolver) IsReadOnly() bool
func (*URLAccResolver) IsTrackingUpdate ¶
func (*URLAccResolver) IsTrackingUpdate() bool
type User ¶
type User struct { Username string `json:"user"` Password string `json:"password"` Permissions *Permissions `json:"permissions,omitempty"` Account *Account `json:"account,omitempty"` ConnectionDeadline time.Time `json:"connection_deadline,omitempty"` AllowedConnectionTypes map[string]struct{} `json:"connection_types,omitempty"` }
User is for multiple accounts/users.
type UserInfo ¶
type UserInfo struct { UserID string `json:"user"` Account string `json:"account"` Permissions *Permissions `json:"permissions,omitempty"` Expires time.Duration `json:"expires,omitempty"` }
UserInfo returns basic information to a user about bound account and user permissions. For account information they will need to ping that separately, and this allows security controls on each subsystem if desired, e.g. account info, jetstream account info, etc.
type Varz ¶
type Varz struct { ID string `json:"server_id"` Name string `json:"server_name"` Version string `json:"version"` Proto int `json:"proto"` GitCommit string `json:"git_commit,omitempty"` GoVersion string `json:"go"` Host string `json:"host"` Port int `json:"port"` AuthRequired bool `json:"auth_required,omitempty"` TLSRequired bool `json:"tls_required,omitempty"` TLSVerify bool `json:"tls_verify,omitempty"` TLSOCSPPeerVerify bool `json:"tls_ocsp_peer_verify,omitempty"` IP string `json:"ip,omitempty"` ClientConnectURLs []string `json:"connect_urls,omitempty"` WSConnectURLs []string `json:"ws_connect_urls,omitempty"` MaxConn int `json:"max_connections"` MaxSubs int `json:"max_subscriptions,omitempty"` PingInterval time.Duration `json:"ping_interval"` MaxPingsOut int `json:"ping_max"` HTTPHost string `json:"http_host"` HTTPPort int `json:"http_port"` HTTPBasePath string `json:"http_base_path"` HTTPSPort int `json:"https_port"` AuthTimeout float64 `json:"auth_timeout"` MaxControlLine int32 `json:"max_control_line"` MaxPayload int `json:"max_payload"` MaxPending int64 `json:"max_pending"` Cluster ClusterOptsVarz `json:"cluster,omitempty"` Gateway GatewayOptsVarz `json:"gateway,omitempty"` LeafNode LeafNodeOptsVarz `json:"leaf,omitempty"` MQTT MQTTOptsVarz `json:"mqtt,omitempty"` Websocket WebsocketOptsVarz `json:"websocket,omitempty"` JetStream JetStreamVarz `json:"jetstream,omitempty"` TLSTimeout float64 `json:"tls_timeout"` WriteDeadline time.Duration `json:"write_deadline"` Start time.Time `json:"start"` Now time.Time `json:"now"` Uptime string `json:"uptime"` Mem int64 `json:"mem"` Cores int `json:"cores"` MaxProcs int `json:"gomaxprocs"` CPU float64 `json:"cpu"` Connections int `json:"connections"` TotalConnections uint64 `json:"total_connections"` Routes int `json:"routes"` Remotes int `json:"remotes"` Leafs int `json:"leafnodes"` InMsgs int64 `json:"in_msgs"` OutMsgs int64 `json:"out_msgs"` InBytes int64 `json:"in_bytes"` OutBytes int64 `json:"out_bytes"` SlowConsumers int64 `json:"slow_consumers"` Subscriptions uint32 `json:"subscriptions"` HTTPReqStats map[string]uint64 `json:"http_req_stats"` ConfigLoadTime time.Time `json:"config_load_time"` Tags jwt.TagList `json:"tags,omitempty"` TrustedOperatorsJwt []string `json:"trusted_operators_jwt,omitempty"` TrustedOperatorsClaim []*jwt.OperatorClaims `json:"trusted_operators_claim,omitempty"` SystemAccount string `json:"system_account,omitempty"` PinnedAccountFail uint64 `json:"pinned_account_fails,omitempty"` OCSPResponseCache *OCSPResponseCacheVarz `json:"ocsp_peer_cache,omitempty"` SlowConsumersStats *SlowConsumersStats `json:"slow_consumer_stats"` }
Varz will output server information on the monitoring port at /varz.
type VarzEventOptions ¶
type VarzEventOptions struct { VarzOptions EventFilterOptions }
In the context of system events, VarzEventOptions are options passed to Varz
type VarzOptions ¶
type VarzOptions struct{}
VarzOptions are the options passed to Varz(). Currently, there are no options defined.
type WAL ¶
type WAL interface { Type() StorageType StoreMsg(subj string, hdr, msg []byte) (uint64, int64, error) LoadMsg(index uint64, sm *StoreMsg) (*StoreMsg, error) RemoveMsg(index uint64) (bool, error) Compact(index uint64) (uint64, error) Purge() (uint64, error) Truncate(seq uint64) error State() StreamState FastState(*StreamState) Stop() error Delete() error }
type WebsocketOpts ¶
type WebsocketOpts struct { // The server will accept websocket client connections on this hostname/IP. Host string // The server will accept websocket client connections on this port. Port int // The host:port to advertise to websocket clients in the cluster. Advertise string // If no user name is provided when a client connects, will default to the // matching user from the global list of users in `Options.Users`. NoAuthUser string // Name of the cookie, which if present in WebSocket upgrade headers, // will be treated as JWT during CONNECT phase as long as // "jwt" specified in the CONNECT options is missing or empty. JWTCookie string // Name of the cookie, which if present in WebSocket upgrade headers, // will be treated as Username during CONNECT phase as long as // "user" specified in the CONNECT options is missing or empty. UsernameCookie string // Name of the cookie, which if present in WebSocket upgrade headers, // will be treated as Password during CONNECT phase as long as // "pass" specified in the CONNECT options is missing or empty. PasswordCookie string // Name of the cookie, which if present in WebSocket upgrade headers, // will be treated as Token during CONNECT phase as long as // "auth_token" specified in the CONNECT options is missing or empty. // Note that when this is useful for passing a JWT to an cuth callout // when the server uses delegated authentication ("operator mode") or // when using delegated authentication, but the auth callout validates some // other JWT or string. Note that this does map to an actual server-wide // "auth_token", note that using it for that purpose is greatly discouraged. TokenCookie string // Authentication section. If anything is configured in this section, // it will override the authorization configuration of regular clients. Username string Password string Token string // Timeout for the authentication process. AuthTimeout float64 // By default the server will enforce the use of TLS. If no TLS configuration // is provided, you need to explicitly set NoTLS to true to allow the server // to start without TLS configuration. Note that if a TLS configuration is // present, this boolean is ignored and the server will run the Websocket // server with that TLS configuration. // Running without TLS is less secure since Websocket clients that use bearer // tokens will send them in clear. So this should not be used in production. NoTLS bool // TLS configuration is required. TLSConfig *tls.Config // If true, map certificate values for authentication purposes. TLSMap bool // When present, accepted client certificates (verify/verify_and_map) must be in this list TLSPinnedCerts PinnedCertSet // If true, the Origin header must match the request's host. SameOrigin bool // Only origins in this list will be accepted. If empty and // SameOrigin is false, any origin is accepted. AllowedOrigins []string // If set to true, the server will negotiate with clients // if compression can be used. If this is false, no compression // will be used (both in server and clients) since it has to // be negotiated between both endpoints Compression bool // Total time allowed for the server to read the client request // and write the response back to the client. This include the // time needed for the TLS Handshake. HandshakeTimeout time.Duration // contains filtered or unexported fields }
WebsocketOpts are options for websocket
type WebsocketOptsVarz ¶
type WebsocketOptsVarz struct { Host string `json:"host,omitempty"` Port int `json:"port,omitempty"` Advertise string `json:"advertise,omitempty"` NoAuthUser string `json:"no_auth_user,omitempty"` JWTCookie string `json:"jwt_cookie,omitempty"` HandshakeTimeout time.Duration `json:"handshake_timeout,omitempty"` AuthTimeout float64 `json:"auth_timeout,omitempty"` NoTLS bool `json:"no_tls,omitempty"` TLSMap bool `json:"tls_map,omitempty"` TLSPinnedCerts []string `json:"tls_pinned_certs,omitempty"` SameOrigin bool `json:"same_origin,omitempty"` AllowedOrigins []string `json:"allowed_origins,omitempty"` Compression bool `json:"compression,omitempty"` TLSOCSPPeerVerify bool `json:"tls_ocsp_peer_verify,omitempty"` }
WebsocketOptsVarz contains monitoring websocket information
Source Files ¶
- accounts.go
- auth.go
- auth_callout.go
- ciphersuites.go
- client.go
- const.go
- consumer.go
- dirstore.go
- disk_avail.go
- errors.go
- events.go
- filestore.go
- gateway.go
- ipqueue.go
- jetstream.go
- jetstream_api.go
- jetstream_cluster.go
- jetstream_errors.go
- jetstream_errors_generated.go
- jetstream_events.go
- jwt.go
- leafnode.go
- log.go
- memstore.go
- monitor.go
- monitor_sort_opts.go
- mqtt.go
- msgtrace.go
- nkey.go
- ocsp.go
- ocsp_peer.go
- ocsp_responsecache.go
- opts.go
- parser.go
- raft.go
- rate_counter.go
- reload.go
- ring.go
- route.go
- sendq.go
- server.go
- service.go
- signal.go
- store.go
- stream.go
- subject_transform.go
- sublist.go
- util.go
- websocket.go