MCPcopy
hub / github.com/coder/websocket / Close

Method Close

write.go:233–264  ·  view source on GitHub ↗

Close flushes the frame to the connection.

()

Source from the content-addressed store, hash-verified

231
232// Close flushes the frame to the connection.
233func (mw *msgWriter) Close() (err error) {
234 defer errd.Wrap(&err, "failed to close writer")
235
236 err = mw.writeMu.lock(mw.ctx)
237 if err != nil {
238 return err
239 }
240 defer mw.writeMu.unlock()
241
242 if mw.closed {
243 return errors.New("writer already closed")
244 }
245 mw.closed = true
246
247 if mw.flate {
248 err = mw.flateWriter.Flush()
249 if err != nil {
250 return fmt.Errorf("failed to flush flate: %w", err)
251 }
252 }
253
254 _, err = mw.c.writeFrame(mw.ctx, true, mw.flate, mw.opcode, nil)
255 if err != nil {
256 return fmt.Errorf("failed to write fin frame: %w", err)
257 }
258
259 if mw.flate && !mw.flateContextTakeover() {
260 mw.putFlateWriter()
261 }
262 mw.mu.unlock()
263 return nil
264}
265
266func (mw *msgWriter) close() {
267 if mw.c.client {

Callers

nothing calls this directly

Calls 6

flateContextTakeoverMethod · 0.95
putFlateWriterMethod · 0.95
WrapFunction · 0.92
lockMethod · 0.80
writeFrameMethod · 0.80
unlockMethod · 0.45

Tested by

no test coverage detected