(msc *MainServerConn, data wshrpc.CommandJobPrepareConnectData)
| 306 | } |
| 307 | |
| 308 | func (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 | |
| 353 | func (jm *JobManager) StartStream(msc *MainServerConn) error { |
| 354 | jm.lock.Lock() |
no test coverage detected