Skip to content

Commit d65bbc4

Browse files
RSDK-9878: Move webService into web.go. (viamrobotics#4766)
Co-authored-by: Abe Winter <[email protected]>
1 parent 8acdd7f commit d65bbc4

File tree

6 files changed

+91
-70
lines changed

6 files changed

+91
-70
lines changed

robot/web/stream/stream.go robot/web/stream/backoff.go

+1-27
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,15 @@
1-
//go:build !no_cgo || android
2-
3-
// Package webstream provides controls for streaming from the web server.
41
package webstream
52

63
import (
74
"context"
8-
"errors"
95
"time"
106

7+
"github.com/pkg/errors"
118
"go.viam.com/utils"
129

13-
"go.viam.com/rdk/gostream"
1410
"go.viam.com/rdk/logging"
1511
)
1612

17-
// streamVideoSource starts a stream from a video source with a throttled error handler.
18-
func streamVideoSource(
19-
ctx context.Context,
20-
source gostream.VideoSource,
21-
stream gostream.Stream,
22-
backoffOpts *BackoffTuningOptions,
23-
logger logging.Logger,
24-
) error {
25-
return gostream.StreamVideoSourceWithErrorHandler(ctx, source, stream, backoffOpts.getErrorThrottledHandler(logger, stream.Name()), logger)
26-
}
27-
28-
// streamAudioSource starts a stream from an audio source with a throttled error handler.
29-
func streamAudioSource(
30-
ctx context.Context,
31-
source gostream.AudioSource,
32-
stream gostream.Stream,
33-
backoffOpts *BackoffTuningOptions,
34-
logger logging.Logger,
35-
) error {
36-
return gostream.StreamAudioSourceWithErrorHandler(ctx, source, stream, backoffOpts.getErrorThrottledHandler(logger, "audio"), logger)
37-
}
38-
3913
// BackoffTuningOptions represents a set of parameters for determining exponential
4014
// backoff when receiving multiple simultaneous errors.
4115
//

robot/web/stream/stream_c.go

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
//go:build !no_cgo || android
2+
3+
// Package webstream provides controls for streaming from the web server.
4+
package webstream
5+
6+
import (
7+
"context"
8+
9+
"go.viam.com/rdk/gostream"
10+
"go.viam.com/rdk/logging"
11+
)
12+
13+
// streamVideoSource starts a stream from a video source with a throttled error handler.
14+
func streamVideoSource(
15+
ctx context.Context,
16+
source gostream.VideoSource,
17+
stream gostream.Stream,
18+
backoffOpts *BackoffTuningOptions,
19+
logger logging.Logger,
20+
) error {
21+
return gostream.StreamVideoSourceWithErrorHandler(ctx, source, stream, backoffOpts.getErrorThrottledHandler(logger, stream.Name()), logger)
22+
}
23+
24+
// streamAudioSource starts a stream from an audio source with a throttled error handler.
25+
func streamAudioSource(
26+
ctx context.Context,
27+
source gostream.AudioSource,
28+
stream gostream.Stream,
29+
backoffOpts *BackoffTuningOptions,
30+
logger logging.Logger,
31+
) error {
32+
return gostream.StreamAudioSourceWithErrorHandler(ctx, source, stream, backoffOpts.getErrorThrottledHandler(logger, "audio"), logger)
33+
}

robot/web/stream/stream_notc.go

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
//go:build no_cgo && !android
2+
3+
// Package webstream provides controls for streaming from the web server.
4+
package webstream
5+
6+
import (
7+
"context"
8+
9+
"github.com/pkg/errors"
10+
"go.viam.com/rdk/gostream"
11+
"go.viam.com/rdk/logging"
12+
)
13+
14+
// streamVideoSource starts a stream from a video source with a throttled error handler.
15+
func streamVideoSource(
16+
ctx context.Context,
17+
source gostream.VideoSource,
18+
stream gostream.Stream,
19+
backoffOpts *BackoffTuningOptions,
20+
logger logging.Logger,
21+
) error {
22+
return errors.New("not implemented for non-cgo")
23+
}
24+
25+
// streamAudioSource starts a stream from an audio source with a throttled error handler.
26+
func streamAudioSource(
27+
ctx context.Context,
28+
source gostream.AudioSource,
29+
stream gostream.Stream,
30+
backoffOpts *BackoffTuningOptions,
31+
logger logging.Logger,
32+
) error {
33+
return errors.New("not implemented for non-cgo")
34+
}

robot/web/web.go

+23
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import (
3939
"go.viam.com/rdk/robot"
4040
grpcserver "go.viam.com/rdk/robot/server"
4141
weboptions "go.viam.com/rdk/robot/web/options"
42+
webstream "go.viam.com/rdk/robot/web/stream"
4243
rutils "go.viam.com/rdk/utils"
4344
)
4445

@@ -80,6 +81,28 @@ type Service interface {
8081
Stats() any
8182
}
8283

84+
type webService struct {
85+
resource.Named
86+
87+
mu sync.Mutex
88+
r robot.Robot
89+
rpcServer rpc.Server
90+
modServer rpc.Server
91+
92+
// Will be nil on non-cgo builds.
93+
streamServer *webstream.Server
94+
services map[resource.API]resource.APIResourceCollection[resource.Resource]
95+
opts options
96+
addr string
97+
modAddr string
98+
logger logging.Logger
99+
cancelCtx context.Context
100+
cancelFunc func()
101+
isRunning bool
102+
webWorkers sync.WaitGroup
103+
modWorkers sync.WaitGroup
104+
}
105+
83106
var internalWebServiceName = resource.NewName(
84107
resource.APINamespaceRDKInternal.WithServiceType("web"),
85108
"builtin",

robot/web/web_c.go

-22
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,9 @@ import (
66
"bytes"
77
"context"
88
"net/http"
9-
"sync"
109

1110
"github.com/pkg/errors"
1211
streampb "go.viam.com/api/stream/v1"
13-
"go.viam.com/utils/rpc"
1412

1513
"go.viam.com/rdk/gostream"
1614
"go.viam.com/rdk/logging"
@@ -37,26 +35,6 @@ func New(r robot.Robot, logger logging.Logger, opts ...Option) Service {
3735
return webSvc
3836
}
3937

40-
type webService struct {
41-
resource.Named
42-
43-
mu sync.Mutex
44-
r robot.Robot
45-
rpcServer rpc.Server
46-
modServer rpc.Server
47-
streamServer *webstream.Server
48-
services map[resource.API]resource.APIResourceCollection[resource.Resource]
49-
opts options
50-
addr string
51-
modAddr string
52-
logger logging.Logger
53-
cancelCtx context.Context
54-
cancelFunc func()
55-
isRunning bool
56-
webWorkers sync.WaitGroup
57-
modWorkers sync.WaitGroup
58-
}
59-
6038
// Reconfigure pulls resources and updates the stream server audio and video streams with the new resources.
6139
func (svc *webService) Reconfigure(ctx context.Context, deps resource.Dependencies, _ resource.Config) error {
6240
svc.mu.Lock()

robot/web/web_notc.go

-21
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,10 @@ package web
44

55
import (
66
"context"
7-
"sync"
87

98
"go.viam.com/rdk/logging"
109
"go.viam.com/rdk/resource"
1110
"go.viam.com/rdk/robot"
12-
"go.viam.com/utils/rpc"
1311
)
1412

1513
// New returns a new web service for the given robot.
@@ -29,25 +27,6 @@ func New(r robot.Robot, logger logging.Logger, opts ...Option) Service {
2927
return webSvc
3028
}
3129

32-
type webService struct {
33-
resource.Named
34-
35-
mu sync.Mutex
36-
r robot.Robot
37-
rpcServer rpc.Server
38-
modServer rpc.Server
39-
services map[resource.API]resource.APIResourceCollection[resource.Resource]
40-
opts options
41-
addr string
42-
modAddr string
43-
logger logging.Logger
44-
cancelCtx context.Context
45-
cancelFunc func()
46-
isRunning bool
47-
webWorkers sync.WaitGroup
48-
modWorkers sync.WaitGroup
49-
}
50-
5130
// Update updates the web service when the robot has changed.
5231
func (svc *webService) Reconfigure(ctx context.Context, deps resource.Dependencies, _ resource.Config) error {
5332
svc.mu.Lock()

0 commit comments

Comments
 (0)