MCPcopy Index your code
hub / github.com/coder/coder / WorkspaceUpdates

Method WorkspaceUpdates

tailnet/service.go:221–251  ·  view source on GitHub ↗
(req *proto.WorkspaceUpdatesRequest, stream proto.DRPCTailnet_WorkspaceUpdatesStream)

Source from the content-addressed store, hash-verified

219}
220
221func (s *DRPCService) WorkspaceUpdates(req *proto.WorkspaceUpdatesRequest, stream proto.DRPCTailnet_WorkspaceUpdatesStream) error {
222 defer stream.Close()
223
224 ctx := stream.Context()
225
226 ownerID, err := uuid.FromBytes(req.WorkspaceOwnerId)
227 if err != nil {
228 return xerrors.Errorf("parse workspace owner ID: %w", err)
229 }
230
231 sub, err := s.WorkspaceUpdatesProvider.Subscribe(ctx, ownerID)
232 if err != nil {
233 return xerrors.Errorf("subscribe to workspace updates: %w", err)
234 }
235 defer sub.Close()
236
237 for {
238 select {
239 case updates, ok := <-sub.Updates():
240 if !ok {
241 return nil
242 }
243 err := stream.Send(updates)
244 if err != nil {
245 return xerrors.Errorf("send workspace update: %w", err)
246 }
247 case <-stream.Context().Done():
248 return nil
249 }
250 }
251}
252
253type communicator struct {
254 logger slog.Logger

Callers

nothing calls this directly

Calls 7

CloseMethod · 0.65
ContextMethod · 0.65
SubscribeMethod · 0.65
UpdatesMethod · 0.65
SendMethod · 0.65
ErrorfMethod · 0.45
DoneMethod · 0.45

Tested by

no test coverage detected