Close flushes the frame to the connection.
()
| 231 | |
| 232 | // Close flushes the frame to the connection. |
| 233 | func (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 | |
| 266 | func (mw *msgWriter) close() { |
| 267 | if mw.c.client { |
nothing calls this directly
no test coverage detected