1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2024-09-27 22:36:12 -04:00

extract logic for write frame

This commit is contained in:
Darien Raymond 2018-08-31 15:15:40 +02:00
parent ab1fe09c56
commit de74460f15
No known key found for this signature in database
GPG Key ID: 7251FFA14BB18169

View File

@ -61,22 +61,26 @@ func (w *Writer) writeMetaOnly() error {
return w.writer.WriteMultiBuffer(buf.NewMultiBufferValue(b))
}
func (w *Writer) writeData(mb buf.MultiBuffer) error {
meta := w.getNextFrameMeta()
meta.Option.Set(OptionData)
func writeMetaWithFrame(writer buf.Writer, meta FrameMetadata, data buf.MultiBuffer) error {
frame := buf.New()
if err := meta.WriteTo(frame); err != nil {
return err
}
if err := frame.AppendSupplier(serial.WriteUint16(uint16(mb.Len()))); err != nil {
if err := frame.AppendSupplier(serial.WriteUint16(uint16(data.Len()))); err != nil {
return err
}
mb2 := buf.NewMultiBufferCap(int32(len(mb)) + 1)
mb2 := buf.NewMultiBufferCap(int32(len(data)) + 1)
mb2.Append(frame)
mb2.AppendMulti(mb)
return w.writer.WriteMultiBuffer(mb2)
mb2.AppendMulti(data)
return writer.WriteMultiBuffer(mb2)
}
func (w *Writer) writeData(mb buf.MultiBuffer) error {
meta := w.getNextFrameMeta()
meta.Option.Set(OptionData)
return writeMetaWithFrame(w.writer, meta, mb)
}
// WriteMultiBuffer implements buf.Writer.