package pubsub import ( "context" "oc-discovery/daemons/node/common" "cloud.o-forge.io/core/oc-lib/tools" ) func (ps *PubSubService) handleEvent(ctx context.Context, topicName string, evt *common.Event) error { action := ps.getTopicName(topicName) if err := ps.handleEventSearch(ctx, evt, action); err != nil { return err } return nil } func (ps *PubSubService) handleEventSearch( // only : on partner followings. 3 canals for every partner. ctx context.Context, evt *common.Event, action tools.PubSubAction, ) error { if !(action == tools.PB_SEARCH_RESPONSE || action == tools.PB_SEARCH) { return nil } if p, err := ps.Node.GetPeerRecord(ctx, evt.From); err == nil && len(p) > 0 { // peerFrom is Unique if err := evt.Verify(p[0]); err != nil { return err } switch action { case tools.PB_SEARCH: // when someone ask for search. if err := ps.StreamService.SendResponse(p[0], evt); err != nil { return err } default: return nil } } return nil }