func()

in internal/fake/net_conn.go [192:226]


func (n *NetConn) write() {
	for {
		select {
		case <-n.close:
			return
		case resp := <-n.writeResp:
			// any write delay MUST happen outside of NetConn.Write
			// else all we do is stall Conn.connWriter() which doesn't
			// actually simulate a delayed response to a frame.
			time.Sleep(resp.WriteDelay)

			if resp.ChunkSize < 1 {
				// no chunk size for this response, fall back to options
				resp.ChunkSize = n.opts.ChunkSize
			}
			if resp.ChunkSize < 1 {
				// send in one chunk
				resp.ChunkSize = len(resp.Payload)
			}

			remaining := resp.Payload
			for {
				if l := len(remaining); l < resp.ChunkSize {
					resp.ChunkSize = l
				}
				chunk := remaining[:resp.ChunkSize]
				n.readData <- chunk
				remaining = remaining[resp.ChunkSize:]
				if len(remaining) == 0 {
					break
				}
			}
		}
	}
}