forked from tangled.org/core
Monorepo for Tangled — https://tangled.org

spindle: filter jetstream by wanted dids

Signed-off-by: oppiliappan <me@oppi.li>

oppi.li 708414ec 3d33f3da

verified
Changed files
+13 -6
knotclient
spindle
+6
knotclient/events.go
···
}
func (c *EventConsumer) AddSource(ctx context.Context, s EventSource) {
+
// we are already listening to this source
+
if _, ok := c.cfg.Sources[s]; ok {
+
c.logger.Info("source already present", "source", s)
+
return
+
}
+
c.cfgMu.Lock()
c.cfg.Sources[s] = struct{}{}
c.wg.Add(1)
+7 -6
spindle/server.go
···
tangled.SpindleMemberNSID,
tangled.RepoNSID,
}
-
jc, err := jetstream.NewJetstreamClient(cfg.Server.JetstreamEndpoint, "spindle", collections, nil, logger, d, false, false)
+
jc, err := jetstream.NewJetstreamClient(cfg.Server.JetstreamEndpoint, "spindle", collections, nil, logger, d, true, true)
if err != nil {
return fmt.Errorf("failed to setup jetstream client: %w", err)
}
+
jc.AddDid(cfg.Server.Owner)
spindle := Spindle{
jc: jc,
···
ccfg.Dev = cfg.Server.Dev
ccfg.ProcessFunc = spindle.processPipeline
ccfg.CursorStore = cursorStore
-
knotstream := knotclient.NewEventConsumer(*ccfg)
knownKnots, err := d.Knots()
if err != nil {
return err
}
for _, knot := range knownKnots {
-
knotstream.AddSource(ctx, knotclient.NewEventSource(knot))
+
logger.Info("adding source start", "knot", knot)
+
ccfg.Sources[knotclient.EventSource{knot}] = struct{}{}
}
-
spindle.ks = knotstream
+
spindle.ks = knotclient.NewEventConsumer(*ccfg)
go func() {
-
logger.Info("starting knot event consumer", "knots")
-
knotstream.Start(ctx)
+
logger.Info("starting knot event consumer")
+
spindle.ks.Start(ctx)
}()
logger.Info("starting spindle server", "address", cfg.Server.ListenAddr)