MCPcopy Create free account
hub / github.com/cloudbase/garm / Stop

Method Stop

workers/websocket/agent/shell.go:72–95  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

70}
71
72func (c *ClientSession) Stop() error {
73 c.mux.Lock()
74 defer c.mux.Unlock()
75
76 if !c.running {
77 return nil
78 }
79
80 closeShellMsg := messaging.ClientShellClosedMessage{
81 SessionID: c.sessionID,
82 }
83 exitShellMsg := messaging.ShellExitMessage{
84 SessionID: c.sessionID,
85 }
86 c.safeWrite(websocket.BinaryMessage, exitShellMsg.Marshal())
87 c.safeWrite(websocket.CloseMessage, websocket.FormatCloseMessage(websocket.CloseNormalClosure, ""))
88 c.clientConn.Close()
89 close(c.done)
90 if err := c.agentWriter(websocket.BinaryMessage, closeShellMsg.Marshal()); err != nil {
91 slog.ErrorContext(c.ctx, "failed to send shell closed msg", "error", err)
92 }
93 c.running = false
94 return nil
95}
96
97func (c *ClientSession) safeWrite(messageType int, data []byte) error {
98 c.writeMux.Lock()

Callers 3

clientReaderMethod · 0.95
loopMethod · 0.95
CreateShellSessionMethod · 0.95

Calls 6

safeWriteMethod · 0.95
MarshalMethod · 0.95
MarshalMethod · 0.95
LockMethod · 0.65
UnlockMethod · 0.65
CloseMethod · 0.65

Tested by

no test coverage detected