MCPcopy Create free account
hub / github.com/wavetermdev/waveterm / PrepareConnect

Method PrepareConnect

pkg/jobmanager/jobmanager.go:308–351  ·  view source on GitHub ↗
(msc *MainServerConn, data wshrpc.CommandJobPrepareConnectData)

Source from the content-addressed store, hash-verified

306}
307
308func (jm *JobManager) PrepareConnect(msc *MainServerConn, data wshrpc.CommandJobPrepareConnectData) (*wshrpc.CommandJobConnectRtnData, error) {
309 jm.lock.Lock()
310 defer jm.lock.Unlock()
311
312 if jm.Cmd == nil {
313 return nil, fmt.Errorf("job not started")
314 }
315
316 err := jm.Cmd.SetTermSize(data.TermSize)
317 if err != nil {
318 log.Printf("PrepareConnect: failed to set term size: %v\n", err)
319 }
320
321 rtnData := &wshrpc.CommandJobConnectRtnData{}
322 streamDone, streamError := jm.StreamManager.GetStreamDoneInfo()
323
324 if streamDone {
325 log.Printf("PrepareConnect: stream already done, skipping connection streamError=%q\n", streamError)
326 rtnData.Seq = data.Seq
327 rtnData.StreamDone = true
328 rtnData.StreamError = streamError
329 } else {
330 corkedStreamMeta := data.StreamMeta
331 corkedStreamMeta.RWnd = 0
332 serverSeq, err := jm.connectToStreamHelper_withlock(msc, corkedStreamMeta, data.Seq)
333 if err != nil {
334 return nil, err
335 }
336 jm.pendingStreamMeta = &data.StreamMeta
337 rtnData.Seq = serverSeq
338 rtnData.StreamDone = false
339 }
340
341 hasExited, exitData := jm.Cmd.GetExitInfo()
342 if hasExited && exitData != nil {
343 rtnData.HasExited = true
344 rtnData.ExitCode = exitData.ExitCode
345 rtnData.ExitSignal = exitData.ExitSignal
346 rtnData.ExitErr = exitData.ExitErr
347 }
348
349 log.Printf("PrepareConnect: streamid=%s clientSeq=%d serverSeq=%d streamDone=%v streamError=%q hasExited=%v\n", data.StreamMeta.Id, data.Seq, rtnData.Seq, rtnData.StreamDone, rtnData.StreamError, hasExited)
350 return rtnData, nil
351}
352
353func (jm *JobManager) StartStream(msc *MainServerConn) error {
354 jm.lock.Lock()

Callers 1

Calls 4

SetTermSizeMethod · 0.80
GetStreamDoneInfoMethod · 0.80
GetExitInfoMethod · 0.80

Tested by

no test coverage detected