Skip to main content

Bid Engine Initiates an Event Bus to Monitor New Orders

The NewService function called from provider/blob/main/bidengine/service.go checks for existing orders and subscribes to a RPC node event bus for new order processing.

Eventually the run method in this package is called with a service type passed in.

Source code reference location

func NewService(ctx context.Context, session session.Session, cluster cluster.Cluster, bus pubsub.Bus, waiter waiter.OperatorWaiter, cfg Config) (Service, error) {
session = session.ForModule("bidengine-service")

existingOrders, err := queryExistingOrders(ctx, session)
if err != nil {
session.Log().Error("finding existing orders", "err", err)
return nil, err
}

sub, err := bus.Subscribe()
if err != nil {
return nil, err
}

...
s := &service{
session: session,
cluster: cluster,
bus: bus,
sub: sub,
statusch: make(chan chan<- *Status),
orders: make(map[string]*order),
drainch: make(chan *order),
lc: lifecycle.New(),
cfg: cfg,
pass: providerAttrService,
waiter: waiter,
}

go s.lc.WatchContext(ctx)
go s.run(ctx, existingOrders)