Files
temporal/common/goro/example_group_test.go
Alex Shtin 91893f1064 Remove license header from every file (#7689)
## What changed?
<!-- Describe what has changed in this PR -->
Remove license header from every file. Because it is really hard to
follow in this PR here is the summary:
1. License header is removed from all `.go` and `.proto` files
:fireworks::fireworks:🎆.
2. `LICENSE` file in the root directory has only Temporal and Uber
copyrights.
3. 5 other `LICENSE` files added to the packages which have copyrights
different from Temporal and Uber: Datadog, Xargin, "Mat Ryer, Tyler
Bunnell and contributors".
4. `license_file` flag is removed from all code generation tools.
5. `copyright_file` flag is removed from `go:generate mockgen`
directive.
6. All copyright related targets are removed from `Makefile`.
7. Updated Temporal copyright year to 2025 everywhere.

## Why?
<!-- Tell your future self why have you made these changes -->
I double checked with legal department that it is not needed to have
license header in every file. One file per repo is enough. I put all
copyrights to the root `LICENSE` file and removed header from all other
files. Also updated tools and `Makefile`.
2025-05-01 18:50:21 -07:00

73 lines
1.5 KiB
Go

package goro_test
import (
"context"
"fmt"
"time"
"go.temporal.io/server/common/goro"
)
type ExampleService struct {
gorogrp goro.Group // goroutines managed in here
}
func (svc *ExampleService) Start() {
// launch two background goroutines
svc.gorogrp.Go(svc.backgroundLoop1)
svc.gorogrp.Go(svc.backgroundLoop2)
}
func (svc *ExampleService) Stop() {
// stop all goroutines in the goro.Group
svc.gorogrp.Cancel() // interrupt the background goroutines
svc.gorogrp.Wait() // wait for the background goroutines to finish
}
func (svc *ExampleService) backgroundLoop1(ctx context.Context) error {
fmt.Println("starting backgroundLoop1")
defer fmt.Println("stopping backgroundLoop1")
for {
timer := time.NewTimer(1 * time.Minute)
select {
case <-timer.C:
// do something every minute
case <-ctx.Done():
timer.Stop()
return nil
}
}
}
func (svc *ExampleService) backgroundLoop2(ctx context.Context) error {
fmt.Println("starting backgroundLoop2")
defer fmt.Println("stopping backgroundLoop2")
for {
timer := time.NewTimer(10 * time.Second)
select {
case <-timer.C:
// do something every 10 seconds
case <-ctx.Done():
timer.Stop()
return nil
}
}
}
func ExampleGroup() {
var svc ExampleService
svc.Start()
svc.Stop()
// it is safe to call svc.Stop() multiple times
svc.Stop()
svc.Stop()
svc.Stop()
// Unordered output:
// starting backgroundLoop1
// starting backgroundLoop2
// stopping backgroundLoop1
// stopping backgroundLoop2
}