()
| 32 | var l = log.WithFields(log.Fields{"pkg": "main"}) |
| 33 | |
| 34 | func main() { |
| 35 | l.Info("[main] Starting the Telemetry API extension") |
| 36 | extensionName := path.Base(os.Args[0]) |
| 37 | |
| 38 | ctx, cancel := context.WithCancel(context.Background()) |
| 39 | sigs := make(chan os.Signal, 1) |
| 40 | signal.Notify(sigs, syscall.SIGTERM, syscall.SIGINT) |
| 41 | go func() { |
| 42 | s := <-sigs |
| 43 | cancel() |
| 44 | l.Info("[main] Received", s) |
| 45 | l.Info("[main] Exiting") |
| 46 | }() |
| 47 | |
| 48 | // Step 1 - Register the extension with Extensions API |
| 49 | l.Info("[main] Registering extension") |
| 50 | extensionApiClient := extensionApi.NewClient() |
| 51 | extensionId, err := extensionApiClient.Register(ctx, extensionName) |
| 52 | if err != nil { |
| 53 | panic(err) |
| 54 | } |
| 55 | l.Info("[main] Registation success with extensionId", extensionId) |
| 56 | |
| 57 | // Step 2 - Start the local http listener which will receive data from Telemetry API |
| 58 | l.Info("[main] Starting the Telemetry listener") |
| 59 | telemetryListener := telemetryApi.NewTelemetryApiListener() |
| 60 | telemetryListenerUri, err := telemetryListener.Start() |
| 61 | if err != nil { |
| 62 | panic(err) |
| 63 | } |
| 64 | |
| 65 | // Step 3 - Subscribe the listener to Telemetry API |
| 66 | l.Info("[main] Subscribing to the Telemetry API") |
| 67 | telemetryApiClient := telemetryApi.NewClient() |
| 68 | _, err = telemetryApiClient.Subscribe(ctx, extensionId, telemetryListenerUri) |
| 69 | if err != nil { |
| 70 | panic(err) |
| 71 | } |
| 72 | l.Info("[main] Subscription success") |
| 73 | |
| 74 | dispatcher := telemetryApi.NewDispatcher() |
| 75 | |
| 76 | // Will block until invoke or shutdown event is received or cancelled via the context. |
| 77 | for { |
| 78 | select { |
| 79 | case <-ctx.Done(): |
| 80 | return |
| 81 | default: |
| 82 | l.Info("[main] Waiting for next event...") |
| 83 | |
| 84 | // This is a blocking action |
| 85 | res, err := extensionApiClient.NextEvent(ctx) |
| 86 | if err != nil { |
| 87 | l.Error("[main] Exiting. Error:", err) |
| 88 | return |
| 89 | } |
| 90 | |
| 91 | // Dispatching log events from previous invocations |
nothing calls this directly
no test coverage detected