func (p *inproc) Send(m *mangos.Message) error { if p.peer == nil { return mangos.ErrClosed } if m.Expired() { m.Free() return nil } // Upper protocols expect to have to pick header and body part. // Also we need to have a fresh copy of the message for receiver, to // break ownership. nmsg := mangos.NewMessage(len(m.Header) + len(m.Body)) nmsg.Body = append(nmsg.Body, m.Header...) nmsg.Body = append(nmsg.Body, m.Body...) select { case p.wq <- nmsg: return nil case <-p.closeq: nmsg.Free() return mangos.ErrClosed } }
func (w *wsPipe) Send(m *mangos.Message) error { var buf []byte if m.Expired() { m.Free() return nil } if len(m.Header) > 0 { buf = make([]byte, 0, len(m.Header)+len(m.Body)) buf = append(buf, m.Header...) buf = append(buf, m.Body...) } else { buf = m.Body } if err := w.ws.WriteMessage(w.dtype, buf); err != nil { return err } m.Free() return nil }