// Handle a SEND frame received from the client. Note that // this method is called after a SEND message is received, // but also after a transaction commit. func (c *Conn) handleSend(f *frame.Frame) error { // Send a receipt and remove the header err := c.sendReceiptImmediately(f) if err != nil { return err } if tx, ok := f.Header.Contains(frame.Transaction); ok { // the transaction header is removed from the frame err = c.txStore.Add(tx, f) if err != nil { return err } } else { // not in a transaction // change from SEND to MESSAGE f.Command = frame.MESSAGE c.requestChannel <- Request{Op: EnqueueOp, Frame: f} } return nil }