feat(go): publish realtime fields stream
This commit is contained in:
@@ -79,6 +79,16 @@ func (s *DurableSink) PublishUnified(ctx context.Context, env envelope.FrameEnve
|
||||
return s.spool("unified", env)
|
||||
}
|
||||
|
||||
func (s *DurableSink) PublishFields(ctx context.Context, env envelope.FrameEnvelope) error {
|
||||
if s.isRawPending(env) {
|
||||
return s.spool("fields", env)
|
||||
}
|
||||
if err := s.delegate.PublishFields(ctx, env); err == nil {
|
||||
return nil
|
||||
}
|
||||
return s.spool("fields", env)
|
||||
}
|
||||
|
||||
func (s *DurableSink) ReplayOnce(ctx context.Context) error {
|
||||
return s.replay(ctx, 0)
|
||||
}
|
||||
@@ -147,7 +157,10 @@ func durableKindOrder(kind string) int {
|
||||
if kind == "unified" {
|
||||
return 1
|
||||
}
|
||||
return 2
|
||||
if kind == "fields" {
|
||||
return 2
|
||||
}
|
||||
return 3
|
||||
}
|
||||
|
||||
func (s *DurableSink) ReplayLoop(ctx context.Context, interval time.Duration, onError func(error)) {
|
||||
@@ -184,6 +197,8 @@ func (s *DurableSink) publishRecord(ctx context.Context, record durableRecord) e
|
||||
return s.delegate.PublishRaw(ctx, record.Envelope)
|
||||
case "unified":
|
||||
return s.delegate.PublishUnified(ctx, record.Envelope)
|
||||
case "fields":
|
||||
return s.delegate.PublishFields(ctx, record.Envelope)
|
||||
default:
|
||||
return errUnknownRecordKind(record.Kind)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user