Documentation
¶
Index ¶
- type DataDropper
- type EventMultiSdkConsumer
- type EventStorageConsumer
- type EventStorageProducer
- type EventsStorage
- type Filter
- type ImpressionMultiSdkConsumer
- type ImpressionStorage
- type ImpressionStorageConsumer
- type ImpressionStorageProducer
- type ImpressionsCountConsumer
- type ImpressionsCountProducer
- type ImpressionsCountStorage
- type LargeSegmentStorageConsumer
- type LargeSegmentStorageProducer
- type LargeSegmentsStorage
- type SegmentStorage
- type SegmentStorageConsumer
- type SegmentStorageProducer
- type SplitStorage
- type SplitStorageConsumer
- type SplitStorageProducer
- type TelemetryConfigConsumer
- type TelemetryConfigProducer
- type TelemetryEvaluationConsumer
- type TelemetryEvaluationProducer
- type TelemetryPeeker
- type TelemetryRedisProducer
- type TelemetryRuntimeConsumer
- type TelemetryRuntimeProducer
- type TelemetryStorage
- type TelemetryStorageConsumer
- type TelemetryStorageProducer
- type UniqueKeysMultiSdkConsumer
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type DataDropper ¶
DataDropper interface is used by dependants who need to drop data from a collection
type EventMultiSdkConsumer ¶
type EventMultiSdkConsumer interface {
Count() int64
PopNRaw(int64) ([]string, int64, error)
PopNWithMetadata(n int64) ([]dtos.QueueStoredEventDTO, error)
}
EventMultiSdkConsumer defines the methods required to consume events from a stored shared by many sdks
type EventStorageConsumer ¶
EventStorageConsumer interface should be implemented by structs that offer popping impressions
type EventStorageProducer ¶
EventStorageProducer interface should be implemented by structs that accept incoming events
type EventsStorage ¶
type EventsStorage interface {
EventStorageConsumer
EventStorageProducer
}
EventsStorage wraps consumer and producer interfaces
type ImpressionMultiSdkConsumer ¶
type ImpressionMultiSdkConsumer interface {
Count() int64
PopNRaw(int64) ([]string, int64, error)
PopNWithMetadata(n int64) ([]dtos.ImpressionQueueObject, error)
}
ImpressionMultiSdkConsumer defines the methods required to consume impressions from a stored shared by many sdks
type ImpressionStorage ¶
type ImpressionStorage interface {
ImpressionStorageConsumer
ImpressionStorageProducer
ImpressionMultiSdkConsumer
}
ImpressionStorage wraps consumer & producer interfaces
type ImpressionStorageConsumer ¶
type ImpressionStorageConsumer interface {
Empty() bool
PopN(n int64) ([]dtos.Impression, error)
}
ImpressionStorageConsumer interface should be implemented by structs that offer popping impressions
type ImpressionStorageProducer ¶
type ImpressionStorageProducer interface {
LogImpressions(impressions []dtos.Impression) error
}
ImpressionStorageProducer interface should be impemented by structs that accept incoming impressions
type ImpressionsCountConsumer ¶
type ImpressionsCountConsumer interface {
GetImpressionsCount() (*dtos.ImpressionsCountDTO, error)
}
ImpressionsCountProducer interface
type ImpressionsCountProducer ¶
type ImpressionsCountProducer interface {
RecordImpressionsCount(impressions dtos.ImpressionsCountDTO) error
}
ImpressionsCountProducer interface
type ImpressionsCountStorage ¶
type ImpressionsCountStorage interface {
ImpressionsCountConsumer
ImpressionsCountProducer
}
type LargeSegmentStorageConsumer ¶ added in v6.0.2
type LargeSegmentStorageConsumer interface {
ChangeNumber(name string) int64
Count() int
LargeSegmentsForUser(userKey string) []string
IsInLargeSegment(name string, key string) (bool, error)
TotalKeys(name string) int
}
SegmentStorageConsumer interface should be implemented by all structs that ofer reading large segments
type LargeSegmentStorageProducer ¶ added in v6.0.2
type LargeSegmentStorageProducer interface {
SetChangeNumber(name string, till int64)
Update(name string, userKeys []string, till int64)
}
LargeSegmentStorageProducer interface should be implemented by all structs that offer writing large segments
type LargeSegmentsStorage ¶ added in v6.0.2
type LargeSegmentsStorage interface {
LargeSegmentStorageProducer
LargeSegmentStorageConsumer
}
LargeSegmentsStorage defines the interface for a per-user large segments storage
type SegmentStorage ¶
type SegmentStorage interface {
SegmentStorageProducer
SegmentStorageConsumer
}
SegmentStorage wraps consumer and producer interfaces
type SegmentStorageConsumer ¶
type SegmentStorageConsumer interface {
ChangeNumber(segmentName string) (int64, error)
Keys(segmentName string) *set.ThreadUnsafeSet
SegmentContainsKey(segmentName string, key string) (bool, error)
SegmentKeysCount() int64
}
SegmentStorageConsumer interface should be implemented by all structs that ofer reading segments
type SegmentStorageProducer ¶
type SegmentStorageProducer interface {
Update(name string, toAdd *set.ThreadUnsafeSet, toRemove *set.ThreadUnsafeSet, changeNumber int64) error
SetChangeNumber(segmentName string, till int64) error
}
SegmentStorageProducer interface should be implemented by all structs that offer writing segments
type SplitStorage ¶
type SplitStorage interface {
ChangeNumber() (int64, error)
Update(toAdd []dtos.SplitDTO, toRemove []dtos.SplitDTO, changeNumber int64)
KillLocally(splitName string, defaultTreatment string, changeNumber int64)
SetChangeNumber(changeNumber int64) error
All() []dtos.SplitDTO
FetchMany(splitNames []string) map[string]*dtos.SplitDTO
SegmentNames() *set.ThreadUnsafeSet // Not in Spec
LargeSegmentNames() *set.ThreadUnsafeSet // Not in Spec
Split(splitName string) *dtos.SplitDTO
SplitNames() []string
TrafficTypeExists(trafficType string) bool
GetNamesByFlagSets(sets []string) map[string][]string
GetAllFlagSetNames() []string
}
SplitStorage wraps consumer & producer interfaces Note: Since go's interface composition does not (yet) support interface method overlap, extracting a common subset (.ChangeNumber()), embedding it in Both consumer & Producer, and then having a wide interface that embeds both (diamond composition), results in a compilation error. The only workaround so far is to explicitly define all the methods that make up the composed interface
type SplitStorageConsumer ¶
type SplitStorageConsumer interface {
ChangeNumber() (int64, error)
All() []dtos.SplitDTO
FetchMany(splitNames []string) map[string]*dtos.SplitDTO
SegmentNames() *set.ThreadUnsafeSet // Not in Spec
LargeSegmentNames() *set.ThreadUnsafeSet // Not in Spec
Split(splitName string) *dtos.SplitDTO
SplitNames() []string
TrafficTypeExists(trafficType string) bool
GetNamesByFlagSets(sets []string) map[string][]string
GetAllFlagSetNames() []string
}
SplitStorageConsumer should be implemented by structs that offer reading splits from storage
type SplitStorageProducer ¶
type SplitStorageProducer interface {
ChangeNumber() (int64, error)
Update(toAdd []dtos.SplitDTO, toRemove []dtos.SplitDTO, changeNumber int64)
KillLocally(splitName string, defaultTreatment string, changeNumber int64)
SetChangeNumber(changeNumber int64) error
}
SplitStorageProducer should be implemented by structs that offer writing splits in storage
type TelemetryConfigConsumer ¶
TelemetryConfigConsumer interface for config data
type TelemetryConfigProducer ¶
type TelemetryConfigProducer interface {
RecordConfigData(configData dtos.Config) error
RecordNonReadyUsage()
RecordBURTimeout()
RecordUniqueKeys(uniques dtos.Uniques) error
}
TelemetryConfigProducer interface for config data
type TelemetryEvaluationConsumer ¶
type TelemetryEvaluationConsumer interface {
PopLatencies() dtos.MethodLatencies
PopExceptions() dtos.MethodExceptions
}
TelemetryEvaluationConsumer for evaluation
type TelemetryEvaluationProducer ¶
type TelemetryEvaluationProducer interface {
RecordLatency(method string, latency time.Duration)
RecordException(method string)
}
TelemetryEvaluationProducer for evaluation
type TelemetryPeeker ¶
type TelemetryPeeker interface {
PeekHTTPLatencies(resource int) []int64
PeekHTTPErrors(resource int) map[int]int
}
TelemetryPeeker interface
type TelemetryRedisProducer ¶
type TelemetryRedisProducer interface {
TelemetryConfigProducer
TelemetryEvaluationProducer
}
TelemetryRedisProducer interface redis
type TelemetryRuntimeConsumer ¶
type TelemetryRuntimeConsumer interface {
GetImpressionsStats(dataType int) int64
GetEventsStats(dataType int) int64
GetLastSynchronization() dtos.LastSynchronization
PopHTTPErrors() dtos.HTTPErrors
PopHTTPLatencies() dtos.HTTPLatencies
PopAuthRejections() int64
PopTokenRefreshes() int64
PopStreamingEvents() []dtos.StreamingEvent
PopTags() []string
GetSessionLength() int64
PopUpdatesFromSSE() dtos.UpdatesFromSSE
}
TelemetryRuntimeConsumer for runtime stats
type TelemetryRuntimeProducer ¶
type TelemetryRuntimeProducer interface {
AddTag(tag string)
RecordImpressionsStats(dataType int, count int64)
RecordEventsStats(dataType int, count int64)
RecordSuccessfulSync(resource int, when time.Time)
RecordSyncError(resource int, status int)
RecordSyncLatency(resource int, latency time.Duration)
RecordAuthRejections()
RecordTokenRefreshes()
RecordStreamingEvent(streamingEvent *dtos.StreamingEvent)
RecordSessionLength(session int64)
RecordUpdatesFromSSE(updateType int)
}
TelemetryRuntimeProducer for runtime stats
type TelemetryStorage ¶
type TelemetryStorage interface {
TelemetryStorageConsumer
TelemetryStorageProducer
}
TelemetryStorage wraps consumer and producer interfaces
type TelemetryStorageConsumer ¶
type TelemetryStorageConsumer interface {
TelemetryConfigConsumer
TelemetryEvaluationConsumer
TelemetryRuntimeConsumer
}
TelemetryStorageConsumer interface should be implemented by structs that offer popping telemetry
type TelemetryStorageProducer ¶
type TelemetryStorageProducer interface {
TelemetryConfigProducer
TelemetryEvaluationProducer
TelemetryRuntimeProducer
}
TelemetryStorageProducer interface should be implemented by struct that accepts incoming telemetry