Monorepo for Tangled tangled.org
5

Configure Feed

Select the types of activity you want to include in your feed.

1// extended version of indigo/lex/util package before upstreaming it 2package lexutil 3 4import ( 5 "context" 6 "errors" 7 "io" 8 9 lexutil "github.com/bluesky-social/indigo/lex/util" 10 cbg "github.com/whyrusleeping/cbor-gen" 11) 12 13type LexClient interface { 14 lexutil.LexClient 15 // LexSubscribe is basic event subscriber without redialing logic 16 // 17 // golang doesnt allow generics in method so we have to pass raw processFn here instead of Scheduler[T] 18 LexSubscribe(ctx context.Context, endpoint string, params map[string]any, process func(ctx context.Context, cr *cbg.CborReader) error) error 19} 20 21const Subscription = "subscription" 22 23var ( 24 ErrDialFailure = errors.New("dialing failed") 25 ErrConnFailure = errors.New("connection failed") 26) 27 28type EventStreamMessage interface { 29 Serialize(wc io.Writer) error 30 Deserialize(r io.Reader) error 31} 32 33type Scheduler[T any] interface { 34 AddWork(ctx context.Context, namespace string, val *T) error 35 Shutdown() 36} 37 38type SeqScheduler[T any] interface { 39 Scheduler[T] 40 LastSeq() int64 41} 42 43type Redialer interface { 44 // Process decodes the raw message and schedule it 45 Process(ctx context.Context, cr *cbg.CborReader) error 46 47 // UpdateParams increments the cursor parameter based on LastSeq stored in internal scheduler 48 UpdateParams(ctx context.Context, params map[string]any) (updated bool) 49}